官术网_书友最值得收藏!

1.4 圖數據庫與其他NoSQL數據庫的對比

為了克服關系數據庫在大型企業級應用中的弊端,NoSQL數據庫逐漸流行起來。NoSQL數據庫專注于解決大規模數據集合、多重數據種類帶來的挑戰,尤其是大數據應用難題。同時NoSQL數據庫的多樣化也提供了多種不同的數據模型解決方案,每個解決方案都可以應用到不同的項目用例中。顯然,Neo4j就是NoSQL中可以提供圖數據模型的典型代表。

1.4.1 其他NoSQL數據庫的弊端

目前大部分NoSQL類數據庫的數據存儲形式都是基于集合的,數據按照集合被劃分開,比如文檔數據庫中的文檔。NoSQL數據庫的數據存儲在不連貫的集合中,這使得數據之間的相互連接、建立關系變得困難。

要實現類似關系數據庫的外鍵功能,通常人們會將某個數據集合直接嵌入到另一個數據集合中來實現兩者之間的從屬關系,但很明顯這樣創建數據集合之間的關系要付出很大的存儲開銷。

1.4.2 將鍵值對存儲與圖數據庫相關聯

如圖1-9所示,鍵值(Key-Value)存儲數據庫,其數據按照鍵值對的形式進行組織、索引和存儲,類似Java中的map,它適合不涉及過多數據關系的應用。因為能有效減少讀寫磁盤的次數,所以其性能非常高。

圖1-9 鍵值對存儲結構

如果將這些鍵值對相互關聯,就可以得到一個圖結構。通過這個圖結構,可以表達數據之間的復雜關系,如圖1-10所示。

圖1-10 鍵值對存儲結構與圖結構相互關聯

1.4.3 將文檔存儲與圖數據庫相關聯

文檔存儲的層次化結構可容納許多無模式的數據,可以輕松地將數據存儲為樹狀結構。雖然樹也是一種圖形,但樹只能表達從下到上的從屬關系,如圖1-11所示。

圖1-11 文檔存儲結構

在樹狀存儲結構中總會出現多次被嵌入的冗余數據,這增加了更新數據的困難,同時也難以確保數據的一致性。如果我們將冗余的數據去掉,然后用圖結構將存在相互關系的數據相關聯,數據冗余的問題就解決了,并且數據之間的關系變得更直觀,如圖1-12所示。

圖1-12 文檔存儲結構與圖結構相互關聯

主站蜘蛛池模板: 彭泽县| 兴国县| 苍溪县| 合江县| 南投县| 屯留县| 星子县| 镇康县| 涟水县| 高邮市| 汉沽区| 阿坝| 墨脱县| 高阳县| 招远市| 尼勒克县| 繁昌县| 曲靖市| 崇州市| 德惠市| 屏南县| 巴青县| 衡山县| 江安县| 雅安市| 定陶县| 新沂市| 邹平县| 淄博市| 汶川县| 托里县| 体育| 三门县| 岗巴县| 布拖县| 南部县| 北辰区| 南川市| 南开区| 商河县| 杭州市|