图表数据库如何水平扩展(如果有的话)?

时间:2011-07-20 14:42:54

标签: database-design graph nosql scalability

对于键值,文档和列族数据库,我了解您可以在键空间中使用复制和分片的组合进行扩展。但是,使用像最短路径等常见的图形操作 - 这些似乎并没有从复制中获得任何好处......而且我看不出如何在没有找到独立子图的情况下对图形数据库进行分片(非常困难) )。

是否有图形数据库试图解决这个问题?这个领域目前的研究是什么?

5 个答案:

答案 0 :(得分:4)

复制对任何类型的数据库都很有用 - 它只是创建多个数据副本,因此您可以提供比单个服务器可以处理的查询更多的查询。

分片有点复杂,但实际上与键/值或文档存储没有太大区别,因为内部边缘必须表示为简单列表。

虽然在大多数情况下找到独立的子图是不可能的,但实际上并不是必需的。只要处理查询的节点能够从其他节点获取数据,在本地获得数据只是性能优化。

完成设置后,您可以根据所使用的图表类型优化性能,例如在社交图中,您可以使用位置为用户选择节点,因为您知道大多数连接是本地的。

我不知道任何内置分片的现有图形数据库,可能是因为一般情况下问题难以解决,而边缘数据的小尺寸意味着你需要一个非常大的图形来超过容量一台服务器。

答案 1 :(得分:2)

Neo4j支持分片,并试图解决分片问题。请查看http://jim.webber.name/2011/02/16/3b8f4b3d-c884-4fba-ae6b-7b75a191fa22.aspx

答案 2 :(得分:1)

GoldenOrb是一个旨在创建可水平扩展的图形数据库的概念。它作为开源发布,但该项目现在似乎已经死了(链接到GitHub是离线的)。它基于Hadoop。

即使这样的模型还不能被认为是一个完全有能力的图形数据库,因为对于图形数据库的某些用例,节点之间需要共享的信息量太大而且太复杂。计算,分层缓存分层体系结构的演变可以使其被认为是完全可扩展的和事实上的Graph数据库。

总的来说,这个日期的答案是“不”,而不是完全。

托管项目的原始网站是:http://goldenorbos.org

答案 3 :(得分:0)

查看http://thinkaurelius.com/

对于Titan,他们使用Cassandra,HBase或BerkeleyDB作为后备存储,它具有商店的可扩展性特征。

答案 4 :(得分:0)

ArangoDB是一个多模型图形数据库,它像文档存储一样对图形进行水平缩放。它遵循图的混合索引方法。

使用SmartGraph功能,可以通过用户定义的分片键(例如,区域,客户,类别或任何其他属性)对图数据集进行分片,并且顶点及其边线可以分布到同一台计算机上。然后,查询引擎知道给定查询所需的数据在哪里,将请求发送到所需的计算机,然后在本地执行查询。对于许多横向扩展用例,这可能是一个合适的解决方案。https://www.arangodb.com/why-arangodb/arangodb-enterprise/arangodb-enterprise-smart-graphs/