使用键值、文档和列族数据库,我知道您可以通过键空间中的复制和分片组合进行横向扩展。但是,对于最短路径等常见的图形操作 - 这些似乎并没有真正从复制中获得任何好处......而且我看不出如何在没有找到独立子图的情况下对图形数据库进行分片(非常困难) )。
是否有图数据库试图解决这个问题?目前这方面的研究有哪些?
最佳答案
复制对于任何类型的数据库都很有用——它只是创建数据的多个副本,这样您就可以提供比单个服务器可以处理的更多的查询。
分片有点复杂,但实际上与键/值或文档存储没有太大区别,因为内部边缘必须表示为简单的列表。
虽然在大多数情况下不可能找到独立的子图,但这实际上并不是必需的。只要处理查询的节点能够从其他节点获取数据,让数据在本地可用只是一种性能优化。
完成设置后,您有很多选项可以根据您正在使用的图表类型优化性能 - 例如,在社交图表中,您可能会使用位置来为用户选择节点,因为您知道大多数连接是本地的。
我不知道任何现有的内置分片的图形数据库,可能是因为问题在一般情况下更难解决,而边缘数据的小尺寸意味着您需要一个非常大的图形才能超过单个图形的容量服务器。
关于database-design - 如果有的话,图形数据库如何水平扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6763721/