图数据库能否进行水平扩展?如果可以,应该如何实现?

21
  • 使用键值、文档和列族数据库,可以通过复制和分片的组合扩展键空间。但是,对于像最短路径等常见的图形操作,似乎并没有从复制中获得任何好处...而且我无法想象如何在不找到独立子图的情况下分片图形数据库(非常困难)。
  • 是否有图形数据库试图解决这个问题?这个领域的当前研究是什么?

1
好问题。对图形数据库进行分片是一个难题。在关系型模型下,分片应该比在图形数据库或任何其他“导航”数据库中更容易。有趣的是,NOSQL解决方案到目前为止大多基于导航模型而不是关系模型,尽管RM似乎更适合NOSQL所追求的东西。这可能是因为这是一个相对不成熟的领域,导航数据库很可能比它们的关系等价物更便宜、更容易进入市场。 - nvogel
5个回答

7

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

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

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

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

我不知道是否有任何已经内置了分片的图形数据库,可能是因为针对一般情况解决问题更加困难,而且边缘数据的小尺寸意味着您需要一个真正的大型图形才能超出单个服务器的容量。


奇怪,我不知道有哪个图形数据库不支持分片... Neo、Ttitan 甚至许多多模型数据库(如 ArangoDB)都支持分片... (这并不意味着查询很容易... ;-) - edlich
Neo4j声称已经内置了分片功能。 - zardilior

3

1
GoldenOrb是一个旨在创建水平可扩展的图形数据库的概念。它被发布为开源软件,但该项目似乎已经停止(GitHub链接已下线)。它基于Hadoop。
尽管如此,由于需要在节点之间共享的信息量对于某些图形数据库的用例而言过于庞大和复杂,因此这种模型尚不能被视为完全有能力的图形数据库。计算的发展,分层缓存分层架构,可以使其被视为完全可扩展且事实上的图形数据库。
因此,总体而言,截至目前的答案是“否”,没有完全实现。
托管该项目的原始网站是:http://goldenorbos.org

0

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

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


0

请查看http://thinkaurelius.com/

对于Titan,他们使用Cassandra、HBase或BerkeleyDB作为后端存储,这些存储具有天然的可扩展性特征。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接