Neo4j分片方面

问题描述 投票:23回答:2

我正在研究Neo4j的可扩展性,并阅读David Montag在2013年1月撰写的文档。

关于分片方面,他说2014年的第一个版本将带来第一个解决方案。

有没有人知道它是否已完成或其状态如果不是?

谢谢!

neo4j scalability
2个回答
59
投票

披露:我是Neo技术的副总裁,Neo技术是Neo4j开源图形数据库的赞助商。

现在我们刚刚发布了Neo4j 2.0(今天实际上是2.0.1!),我们正着手开发2.1版本,主要针对(甚至更多)性能和可扩展性。这将图表的上限增加到实际上无限数量的实体,并改进各种其他事物。

让我先设置一些上下文,然后回答你的问题。

正如您可能从论文中看到的那样,Neo4j目前的水平扩展架构允许读取缩放,所有写入都将掌握并扇出。这有效地实现了无限制的读取扩展,并且每秒可以进行数万次写入。

实际上,有生产Neo4j的客户(包括Snap Interactive和Glassdoor)在他们的社交图中有大约10亿人......在所有情况下,在一个活跃且受到重创的网站背后,由相对相当适度的Neo4j集群处理(不超过5个实例)。所以这是一个关键特性:今天的Neo4j具有令人难以置信的计算密度,因此我们经常看到相当小的集群处理大量的生产工作量......响应时间非常快。

有关当前架构的更多信息,请访问:www.neotechnology.com/neo4j-scales-for-the-enterprise/此处可以找到客户列表(包括沃尔玛和eBay等公司):neotechnology.com/customers/世界上最大的包裹递送运营商之一使用Neo4j来路由他们所有的包裹,实时,每秒3000次路由操作的峰值,零停机时间。 (这可以说是世界上最大和最关键的图形数据库和NOSQL数据库的使用;虽然不幸的是我不能说它是谁。)

所以在某种意义上说,如果你还没有像沃尔玛或eBay这么大,那么你可能就好了。这只是过分简化了一点。在1%的情况下,您将事务性写入工作负载持续到每秒数百个。然而,即使在这些情况下,将所有数据加载到实时图形中通常也不是正确的。我们通常建议人们进行一些聚合或过滤,并将更重要的事情带入图表中。 Intuit对此进行了很好的讨论。他们将十亿个B2B交易过滤成少量的每月总交易关系,并按方向计算汇总计数和货币金额。

输入分片...... Sharding现在已经获得了很多人气。这在很大程度上要归功于其他三类NOSQL,其中连接是一种反模式。大多数查询只涉及读取或写入单个离散数据。正如连接是键值存储和文档数据库的反模式一样,分片是图形数据库的反模式。我的意思是......当你的所有数据在单个实例的内存中都可用时,会发生最佳性能,因为无论何时你在阅读和写作时在网络上来回跳跃都会大大降低速度除非你真的非常聪明地分析你的数据......即便如此。我们的方法有两个方面:

  1. 尽可能多地执行智能操作以支持极高的读写卷,而无需使用分片。这可以为您提供最佳,最可预测的延迟和效率。换句话说:如果我们能够在没有分片的情况下足够好地支持您的需求,那么这将始终是最好的方法。上面的链接描述了其中的一些技巧,包括部署模式,它允许您在内存中对数据进行分片,而不必在磁盘上对其进行分片(我们称之为缓存分片)。沿着类似的路线还有其他一些技巧,更多的是沿着长矛走下去......
  2. 在Neo4j中添加辅助架构模式,支持分片。为什么这样做最好避免分片?随着越来越多的人发现图形的更多用途,并且数据量不断增加,我们认为最终它将是一个重要且不可避免的事情。这将允许您在一个Neo4j集群中运行所有Facebook(一个相当大的集群)...而不仅仅是图表的社交部分,我们今天可以处理它。我们已经在这方面做了很多工作,开发了一个我们认为可以平衡许多考虑因素的架构。这是一个多年的努力,虽然我们可以很容易地发布一个天真地分片的Neo4j版本(毫无疑问会非常受欢迎),但我们可能不会这样做。我们想做得对,这相当于火箭科学。

17
投票

TL; DR与2018年相距几天之后,neo4j仍然不支持sharding,因为它通常被认为是。

详细信息Neo4j仍然要求所有数据都适合单个节点。节点内容可以在群集中复制 - 但实际的分片不是图片的一部分。

当neo4j谈到分片时,它们指的是在内存中缓存数据库的部分:不同的片段缓存在不同的复制节点上。这与mysql分片不同,其中每个节点仅包含总数据的一部分。

以下是他们对可扩展性的“看法”的总结:他们的产品术语是“高可用性”https://neo4j.com/blog/neo4j-scalability-infographic/

enter image description here

。请注意,High Availability不应与Scalability相同:所以他们实际上并不支持传统的术语理解。

© www.soinside.com 2019 - 2024. All rights reserved.