图形数据库如何横向扩展,如果有的话



对于键值、文档和列族数据库,我理解您可以通过键空间中的复制和切分组合向外扩展。但是,对于常见的图操作,如最短路径等,这些似乎并没有从复制中获得任何好处……如果不找到一个独立的子图(非常困难),我无法想象你如何对一个图数据库进行分片。

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

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

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

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

一旦你有了这个设置,你就有很多选项来优化性能,基于你正在使用的图形类型-例如,在社交图中,你可能使用位置为用户选择节点,因为你知道大多数连接是本地的。

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

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

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

尽管如此,这样的模型还不能被认为是一个完全有能力的图数据库,因为需要在节点之间共享的信息量对于图数据库的某些用例来说过于庞大和复杂。计算的进化,分层缓存分层架构,可以让它被认为是完全可扩展的和一个事实图数据库。

所以总的来说,这个日期的答案是"不",不完全是。

承载项目的原始网站是:http://goldenorbos.org

查看http://thinkaurelius.com/

对于Titan,他们使用Cassandra, HBase或BerkeleyDB作为后台存储,这些存储具有固有的可伸缩性特征。

ArangoDB是一个多模型图形数据库,它可以像文档存储一样水平扩展,也可以用于图形。它遵循混合索引方法来处理图形。

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

相关内容

最新更新