2011-03-17 114 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

相关问题