2011-03-17 125 views
4

我知道一般數據庫可以使用master/slave replication進行水平縮放。當併發讀數的數量不斷增加時,這是一個很好的策略。你能分割一個圖形數據庫嗎?如果是這樣,怎麼樣?

由於併發寫入的次數或只是量數據開始增長,不過,主/從複製沒有得到你什麼,所以你需要分區數據代替。

這適用於鍵值場景。一個典型的例子是TinyURL/bit.ly;讀取/寫入短URL的數據foo可以完全獨立於讀取/寫入短URL地址的數據。

但是,如果你在圖情景?你應該怎麼做?更具體地說,是否可以根據Neo4j劃分圖形數據庫?如果是這樣,怎麼樣?

我無法將自己的頭圍繞在如何破壞圖形數據庫的使用目的(高效遍歷)的情況下。

+2

看看Jim Webber在主題上寫了什麼:[在分片圖數據庫](http://jim.webber.name/2011/02/02/3b8f4b3d-c884-4fba-ae6b-7b75a191fa22.aspx)和[使用Cache Sharding和Neo4j HA擴展Neo4j](http://jim.webber.name/2011/02/23/abe72f61-27fb-4c1b-8ce1-d0db7583497b.aspx)! – nawroth 2011-03-18 09:57:01

+0

謝謝,這很有幫助! – 2011-03-18 22:08:24

回答

4

你很少遍歷整個圖形結構。

此外,圖結構在所有節點之間很少連接。

稍微小心一點,您可以找到連接良好的節點的羣集,並通過少量的連接與其他羣集分隔。

http://en.wikipedia.org/wiki/Cluster_analysis

如果你的分區基於聚類,然後在集羣內遍歷可能會更快,但穿越到另一個集羣會慢一些。

分區的整體益處取決於羣集間遍歷與羣集間遍歷的比率。

+0

我曾考慮聚類,但不確定它是否合理;感謝您的確認。但它確實有一個明顯的折衷(如果一個集羣中的節點開始連接到另一個集羣中的節點,那麼可能會導致無效的遍歷),所以我仍然很想知道是否還有其他選項。 – 2011-03-17 19:37:05

相關問題