Graph databases 对图形数据库进行分片

Graph databases 对图形数据库进行分片,graph-databases,sharding,dgraph,tigergraph,Graph Databases,Sharding,Dgraph,Tigergraph,我想知道像Dgraph和TigerGraph这样的数据库是如何对图形进行切分的,以便在不中断节点之间连接的情况下支持水平缩放的,同时还支持许多有趣的算法。 他们声称自己是一个原生的图形解决方案,所以像facebook或twitter这样的方法在这里就不是这样了。 我想到的唯一解决方案是在这么多小的数据库中传播图形,这会导致如此多的节点重复以维护关系 有什么想法吗 提前感谢所以从技术上讲,图形切分有两个原则需要遵循。第一种是Edge Cut,它将一条边分成两部分(传入和传出),并分别存储在不同的服

我想知道像Dgraph和TigerGraph这样的数据库是如何对图形进行切分的,以便在不中断节点之间连接的情况下支持水平缩放的,同时还支持许多有趣的算法。
他们声称自己是一个原生的图形解决方案,所以像facebook或twitter这样的方法在这里就不是这样了。
我想到的唯一解决方案是在这么多小的数据库中传播图形,这会导致如此多的节点重复以维护关系
有什么想法吗

提前感谢

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


然而,无论如何,图切分是一个NP问题,这比SQL中的切分困难得多。因此,一些供应商可能会采取不同的做法,而不是只切割边或只切割顶点。例如,您的思想,即扩展子图,有点像Neo4j结构。一些供应商将整个图结构(不包括属性)放在单个主机内存中,以便快速获取子图。而一些供应商采用邻接列表来分离图中的节点和边,而不考虑太多的局部性。

客观性/DB是一个自然分布的对象/图数据库。节点可以分布在多达65000台服务器上。服务器A上的节点1可以边缘连接到服务器B上的节点2,无需重复节点。Objective/DB可大规模扩展,并以“接近”的实时速度运行。我还可以执行高速导航查询,以评估100度长且跨多台服务器的路径