我正在研究Neo4j的可扩展性,并阅读David Montag在2013年1月撰写的文档。
关于分片方面,他说2014年的第一个版本将带来第一个解决方案。
有没有人知道它是否已完成或其状态如果不是?
谢谢!
披露:我是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,其中连接是一种反模式。大多数查询只涉及读取或写入单个离散数据。正如连接是键值存储和文档数据库的反模式一样,分片是图形数据库的反模式。我的意思是......当你的所有数据在单个实例的内存中都可用时,会发生最佳性能,因为无论何时你在阅读和写作时在网络上来回跳跃都会大大降低速度除非你真的非常聪明地分析你的数据......即便如此。我们的方法有两个方面:
TL; DR与2018年相距几天之后,neo4j
仍然不支持sharding
,因为它通常被认为是。
详细信息Neo4j
仍然要求所有数据都适合单个节点。节点内容可以在群集中复制 - 但实际的分片不是图片的一部分。
当neo4j谈到分片时,它们指的是在内存中缓存数据库的部分:不同的片段缓存在不同的复制节点上。这与mysql分片不同,其中每个节点仅包含总数据的一部分。
以下是他们对可扩展性的“看法”的总结:他们的产品术语是“高可用性”https://neo4j.com/blog/neo4j-scalability-infographic/
。请注意,High Availability
不应与Scalability
相同:所以他们实际上并不支持传统的术语理解。