- 使用键值、文档和列族数据库,可以通过复制和分片的组合扩展键空间。但是,对于像最短路径等常见的图形操作,似乎并没有从复制中获得任何好处...而且我无法想象如何在不找到独立子图的情况下分片图形数据库(非常困难)。
- 是否有图形数据库试图解决这个问题?这个领域的当前研究是什么?
复制对于任何类型的数据库都有用 - 它只是创建数据的多个副本,以便您可以处理比单个服务器更多的查询。
分片略微复杂,但实际上与键/值或文档存储并没有太大区别,因为内部边缘必须表示为简单列表。
虽然在大多数情况下,找到独立的子图是不可能的,但实际上这并不是必要的。只要处理查询的节点能够从其他节点获取数据,拥有本地可用的数据只是性能优化。
一旦设置完成,您就有很多基于您正在使用的图形类型来优化性能的选项 - 例如,在社交图形中,您可能会使用位置选择用户的节点,因为您知道大多数连接都是本地的。
我不知道是否有任何已经内置了分片的图形数据库,可能是因为针对一般情况解决问题更加困难,而且边缘数据的小尺寸意味着您需要一个真正的大型图形才能超出单个服务器的容量。
ArangoDB是一种多模型图形数据库,可以像文档存储一样水平扩展,也适用于图形。它采用混合索引方法来处理图形。
通过SmartGraph功能,用户可以按照自定义的分片键(例如区域、客户、类别或任何其他属性)对图形数据集进行分片,并将顶点及其边缘分布到同一台机器上。查询引擎知道给定查询所需的数据位于哪里,将请求发送到所需的机器并在本地执行查询。对于许多规模化应用案例,这可能是一个合适的解决方案。https://www.arangodb.com/why-arangodb/arangodb-enterprise/arangodb-enterprise-smart-graphs/
对于Titan,他们使用Cassandra、HBase或BerkeleyDB作为后端存储,这些存储具有天然的可扩展性特征。