當(dāng)前負(fù)責(zé)的AI智慧建筑項(xiàng)目涉及數(shù)據(jù)庫(kù)設(shè)計(jì)谢翎,對(duì)數(shù)據(jù)庫(kù)這塊知識(shí)領(lǐng)域做了技術(shù)邊界研究,簡(jiǎn)單梳理如下走趋,enjoy~
一.什么是NoSQL數(shù)據(jù)庫(kù)衅金?
NoSQL數(shù)據(jù)庫(kù),指非關(guān)系型數(shù)據(jù)庫(kù)簿煌。
平時(shí)大家見(jiàn)到或聽(tīng)到的數(shù)據(jù)庫(kù)類型如 MySQL氮唯、Oracle RDBMS 等大多是關(guān)系型數(shù)據(jù)庫(kù),使用時(shí)會(huì)寫一些 SQL 語(yǔ)句來(lái)做增刪改查姨伟。NoSQL數(shù)據(jù)庫(kù)的出現(xiàn)是為了解決關(guān)系型數(shù)據(jù)庫(kù)存在的一些問(wèn)題惩琉。
二.都有哪些 NoSQL數(shù)據(jù)庫(kù)?
當(dāng)前市場(chǎng)上主流的NoSQL 數(shù)據(jù)庫(kù)有 Redis夺荒、MongoDB瞒渠、Neo4j良蒸、HBase 等。 其中伍玖,Neo4j是一種圖形數(shù)據(jù)庫(kù)嫩痰,近幾年大有獨(dú)占鰲頭的勢(shì)頭,在社交網(wǎng)絡(luò)窍箍、推薦引擎串纺、交通運(yùn)輸、物流管理仔燕、欺詐檢測(cè)等領(lǐng)域廣泛使用造垛。
這里對(duì)Neo4j多說(shuō)兩句。我們這個(gè)項(xiàng)目選擇Neo4j數(shù)據(jù)庫(kù)有2個(gè)原因:
1)Neo4j是一個(gè)原生圖計(jì)算引擎晰搀,它存儲(chǔ)和使用的數(shù)據(jù)自始至終都是使用原生的圖結(jié)構(gòu)數(shù)據(jù)進(jìn)行處理五辽。不像有的圖數(shù)據(jù)庫(kù),僅在計(jì)算處理時(shí)才使用圖結(jié)構(gòu)數(shù)據(jù)外恕,在存儲(chǔ)時(shí)仍將數(shù)據(jù)保存在關(guān)系型數(shù)據(jù)庫(kù)中杆逗;
2)Neo4j是一個(gè)開源的數(shù)據(jù)庫(kù),這一點(diǎn)很重要鳞疲。Neo4j開源社區(qū)得到了開發(fā)者的擁躉和支持罪郊,聚集了豐富的可供交流和學(xué)習(xí)的資源與案例,不必重復(fù)造輪子尚洽,這些反過(guò)來(lái)也促進(jìn)了Neo4j的發(fā)展悔橄。
三. NoSQL數(shù)據(jù)庫(kù)有哪些特點(diǎn)?
首先總結(jié)下關(guān)系型數(shù)據(jù)庫(kù)存在哪些問(wèn)題腺毫。
1癣疟、高并發(fā)時(shí)的性能問(wèn)題
當(dāng)數(shù)據(jù)庫(kù)處于高負(fù)荷運(yùn)轉(zhuǎn)時(shí),關(guān)系型數(shù)據(jù)庫(kù)的性能會(huì)遇 到瓶頸潮酒,這個(gè)時(shí)候的數(shù)據(jù)庫(kù)操作會(huì)變得更加的費(fèi)時(shí)睛挚,雖然可以使用 memcached 解決,但是也 會(huì)帶來(lái) hash 不一致等問(wèn)題急黎。
2扎狱、產(chǎn)品擴(kuò)展性
當(dāng)要給數(shù)據(jù)增加一個(gè)字段時(shí),需要更改大量的表結(jié)構(gòu)勃教,這變相地增加了維護(hù)成本淤击。
3、恢復(fù)時(shí)速度緩慢
當(dāng)一個(gè)關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)很多長(zhǎng)文本或者大數(shù)據(jù)時(shí)故源, 恢復(fù)數(shù)據(jù)的過(guò)程會(huì)變的更緩慢遭贸。
而 NoSQL 的優(yōu)勢(shì)就在于解決以上問(wèn)題。
當(dāng)數(shù)據(jù)之間解除關(guān)系依賴后心软,NoSQL 的數(shù)據(jù)庫(kù)可以輕易地部署在分布式系統(tǒng)上壕吹,這樣通過(guò)多臺(tái)機(jī)器可以分擔(dān)單一機(jī)器的高負(fù)荷,解決高負(fù)荷下的性能瓶頸問(wèn)題删铃。同時(shí)耳贬,由于數(shù)據(jù)之間無(wú)關(guān)系,所以可以隨時(shí)增加或刪除字段猎唁。還有咒劲, 就是因?yàn)榻Y(jié)構(gòu)簡(jiǎn)單,它的反應(yīng)能力比關(guān)系型數(shù)據(jù)庫(kù)快多了诫隅。
因此 NoSQL 有著高擴(kuò)展性腐魂、分布式計(jì)算、低成本逐纬、架構(gòu)的靈活性蛔屹、半結(jié)構(gòu)化數(shù)據(jù)等特點(diǎn)。比如在存儲(chǔ)微博信息這種場(chǎng)景下豁生,就是非常適合使用 NoSQL 數(shù)據(jù)庫(kù)兔毒。
四.小結(jié)
當(dāng)然,在挑選數(shù)據(jù)庫(kù)時(shí)甸箱,還是得分具體情況育叁,如果你的業(yè)務(wù)量小,那么關(guān)系型非關(guān)系型 數(shù)據(jù)庫(kù)都隨便選芍殖,挑自己順手的豪嗽。而當(dāng)業(yè)務(wù)量擴(kuò)大后,就需要分場(chǎng)景處理了豌骏,有的業(yè)務(wù)可 能有復(fù)雜的數(shù)據(jù)關(guān)聯(lián)龟梦,這種就離不開關(guān)系型數(shù)據(jù)庫(kù),而有的地方只是簡(jiǎn)單的 key-value 數(shù)據(jù)肯适,那么就果斷地上 NoSQL变秦。
以上
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?蝸牛丨2019.07.31