我正在研究 Neo4j 的可扩展性,并阅读了 David Montag 在 2013 年 1 月撰写的文档。
关于分片方面,他说 2014 年的第一个版本将提供第一个解决方案。
有谁知道它是否已经完成或者它的状态如果没有?
谢谢!
最佳答案
披露:我是 Neo Technology 的产品副总裁,Neo4j 开源图形数据库的赞助商。
现在我们刚刚发布了 Neo4j 2.0(今天实际上是 2.0.1!)我们正在着手发布一个主要面向(甚至更多)性能和可扩展性的 2.1 版本。这会将图的上限增加到有效无限数量的实体,并改善各种其他方面。
让我先设置一些上下文,然后再回答您的问题。
正如您可能从论文中看到的那样,Neo4j 当前的水平扩展架构允许读取扩展,所有写入都将主控和扇出。这使您可以有效地无限读取扩展,并达到每秒数万次写入。
实际上,有生产 Neo4j 客户(包括 Snap Interactive 和 Glassdoor)在他们的社交图谱中拥有大约 10 亿人......超过 5 个实例)。所以这是一个关键特性:今天的 Neo4j 具有令人难以置信的计算密度,因此我们经常看到相当小的集群处理相当大的生产工作负载......响应时间非常快。
有关当前架构的更多信息,请访问:www.neotechnology.com/neo4j-scales-for-the-enterprise/
可以在此处找到客户列表(包括 Wal-Mart 和 eBay 等公司):neotechnology.com/customers/世界上最大的包裹递送承运商之一使用 Neo4j 实时路由所有包裹,峰值为每秒 3000 次路由操作,并且停机时间为零。 (这可以说是世界上最大和最关键的图形数据库和 NOSQL 数据库的使用;尽管不幸的是我不能说它是谁。)
所以从某种意义上说,tl;dr 是如果你还没有像沃尔玛或 eBay 那样大,那么你可能没问题。这只是稍微简化了它。有 1% 的情况下,您将事务性写入工作负载持续到每秒 100 万次。然而,即使在这些情况下,将所有数据加载到实时图表中通常也不是正确的做法。我们通常建议人们做一些聚合或过滤,只将更重要的东西带入图中。忒给了一个很好的谈论这个。他们将十亿 B2B 交易过滤为数量少得多的每月总交易关系,并按方向汇总计数和货币金额。
进入分片......这些天分片已经很受欢迎。这主要归功于其他三类 NOSQL,其中连接是一种反模式。大多数查询只涉及读取或写入单个离散数据。正如加入是键值存储和文档数据库的反模式一样,分片是图数据库的反模式。我的意思是...当您的所有数据都在单个实例的内存中可用时,将出现最佳性能,因为每当您读写时在网络上来回跳跃都会显着减慢速度,除非您在如何分发数据方面非常精明……即便如此。我们的方法是双重的:
关于Neo4j 分片方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21558589/