对图数据库进行分片

Raw*_*hi 6 sharding graph-databases dgraph tigergraph

我想知道像 Dgraph 和 TigerGraph 这样的数据库如何设法对图进行分片,以支持水平缩放而不破坏节点之间的连接,此外还支持许多有趣的算法。
他们声称是本地图形解决方案,因此像 facebook 或 twitter 这样的方法在这里并不适用。
我想到的唯一解决方案是将图分散到如此多的小型数据库中,这会导致大量节点重复以维持关系。
有任何想法吗 ?
提前致谢

ven*_*egr 6

因此从技术上讲,图分片需要遵循两个原则。第一个是Edge-Cut,它将一条边切割成两部分(传入和传出),并将它们分别存储在不同的服务器中。与边关联的每个顶点都分布到集群中的特定服务器。分布式图数据库Nebula Graph就是遵循这种方法。第二种是Vertex-Cut,它将一个顶点切割成N部分(取决于该顶点有多少条边)并将它们存储在不同的服务器中。然后,与该顶点关联的每条边都被分发到集群中的特定服务器。GraphX就是这样做的。

然而,图分片无论如何都是一个 NP 问题,这比 SQL 中的分片困难得多。因此,某些供应商的做法可能与仅切边或仅切顶点不同。例如,你的想法,即扩展子图,有点像 Neo4j Fabric。一些供应商将整个图结构(不包括属性)放入单个主机内存中,以便获取子图非常快。而有些厂商采用邻接表来分隔图中的节点和边,而没有过多考虑局部性。