資料内部依賴和複雜度的增加,這一問題因網際網路、web2.0、社交網絡,以及對大量不同系統的資料源開放和标準化的通路而加劇。
本文旨在介紹圖形資料庫(graph database)在nosql運動裡的地位,第二部分則是對neo4j(一種基于java的圖形資料庫)的簡介。
<a target="_blank"></a>
簡單地講,nosql資料庫可以按照它們的資料模型分成4類:
鍵-值存儲庫(key-value-stores)
bigtable實作(bigtable-implementations)
文檔庫(document-stores)
圖形資料庫(graph database)
在此,讓我們深入檢閱nosql資料庫的兩個有意思的方面:伸縮性和複雜度。
高可用性(a):所有用戶端總能找到所請求資料的至少一個版本,即使叢集中某些機器已經當機,
分區容忍性(p):整個系統保持自己的特征,即使是被部署到不同伺服器上的時候,這對用戶端來講是透明的。
cap法則假定向外擴充的3個不同方面中隻有兩個可以同時完全實作。

為了能處理大型分布式系統,讓我們深入了解所采用的不同cap特征。
這隻是理論。然而在實踐中,rdbm遇到了前面提到的cap問題的限制,以及由高性能查詢實作而産生的問題:聯結大量表、深度嵌套的sql查詢。其他問題包括伸縮性、随時間的模式演變,樹形結構的模組化,半結構化資料,層級和網絡等。
盡管圖結構在理論上甚至可以用rdbms規範化,但由于關系資料庫的實作特點,對于象檔案樹這樣的遞歸結構和象社交圖這樣的網絡結構有嚴重的查詢性能影響。網絡關系上的每次操作都會導緻rdbms上的一次"聯結"操作,以兩個表的主鍵集合間的集合操作來實作 ,這種操作不僅緩慢并且無法随着這些表中元組數量的增加而伸縮。
屬性圖形(property graph)的基本術語
節點(即頂點)
關系(即邊) - 具有方向和類型(标記和标向)
節點和關系上面的屬性(即特性)
更特殊的是,這個模型是一個被标記和标向的屬性多重圖(multigraph)。被标記的圖每條邊都有一個标簽,它被用來作為那條邊的類型。有向圖允許邊有一個固定的方向,從末或源節點到首或目标節點。屬性圖允許每個節點和邊有一組可變的屬性清單,其中的屬性是關聯某個名字的值,簡化了圖形結構。多重圖允許兩個節點之間存在多條邊。這意味着兩個節點可以由不同邊連接配接多次,即使兩條邊有相同的尾、頭和标記。
下圖顯示了一個被标記的小型屬性圖。
下圖展示了在複雜度和伸縮性方面背景下的主要nosql分類的位置。
原文釋出時間:2014-5-24
本文來自雲栖合作夥伴“linux中國”