我知道数据库通常可以使用master/slave replication水平扩展。当并发读取次数越来越多时,这是一个很好的策略。
由于并发写入 或仅数据量的数量开始增长,但主/从复制无法获得你做了什么,所以你需要对你的数据进行分区。
这适用于键值场景。一个典型的例子是TinyURL / bit.ly;读取/写入短URL的数据foo可以完全独立于读取/写入短URL栏的数据。
但如果您处于图形场景,您应该怎么做?更具体地说,是否可以对像Neo4j这样的图形数据库进行分区?如果是这样,怎么样?
我无法理解如何在不破坏使用图形数据库(高效遍历)的目的的情况下拆分图形。
答案 0 :(得分:4)
您很少遍历整个图表结构。
此外,图形结构很少在所有节点之间高度连接。
稍加注意,您可以找到连接良好的节点群集,这些群集由与其他群集的少量连接分开。
http://en.wikipedia.org/wiki/Cluster_analysis
如果基于群集进行分区,则群集内的遍历可能会更快,但遍历到另一个群集的速度会更慢。
分区的总体好处取决于群集内遍历与群集间遍历的比率。