NODES 回顾:世界上最大的分布式图数据库是怎样炼成的

本文作者:Joshua Yu,Neo4j 亚太区售前和技术总监。

原文作者:Chris Gioran,Neo4j 首席架构师。

1 简介

在 2021 年 6 月 17 日的 Neo4j NODES 2021 全球图技术峰会上,Neo4j 的工程师展示了迄今为止部署成功的最大的图数据库集群:

    - 1129 个 Neo4j 数据库实例,其中:

    - 1128 个论坛数据分片

    - 1 个用户分片

    - 3 个 Neo4j Fabric 服务实例提供跨分片的查询

    - 每个论坛分片包含 9 亿个关系和 1.82 亿个节点,共 2 千亿节点

    - 每个用户分片包含 30 亿个用户和他们之间的 160 亿个关系,超过 1 万亿条边

    - 数据总规模超过 280 TB

    - 从开始部署到得到最终结果用了 3 周

    - 运行的成本约为 400 美元/小时(AWS)

这次测试的主要目的是验证 Neo4j 的可扩展性,以及在分布式部署下、Fabric 联邦式查询引擎是否能够维持线性的查询相应延迟增长。

实验从 1 台 Neo4j 服务器开始,增加到 10 台、然后 100 台、最终 1129 台,数据量也从开始的数百 GB 到 1TB 到 280TB。使用的数据集是 LDBC。
图片.png

2 动机

在 Neo4j 4.0 推出 Fabric 时,当时我们做了个验证基准,并在FOSDEM (1)展示给大家。结果表明,对于 1TB 的数据库,吞吐量和延迟会随着其分布的分片数量呈线性增长。更多的分片、更好的总体性能。结果看起来不错,这证实了我们对扩展图数据库的方法有很好的理解。Fabric 的开发继续使其成为 Neo4j 的一个组成部分。随后的产品更新中,新技术被创建和改进(服务器端路由是一个很好的例子),它们对非 Fabric 和分布式结构设置也很有用。

但是,我们一直惦记着来自 FOSDEM 的 1TB 数据集。1TB 并不大,至少对于 Neo4j 而言。我们通常有 10TB 或更多的生产数据,尽管它们在相当大的机器上运行,但 Neo4j 垂直扩展得很好。我们还没有真的遇到需要分片/分布的存储解决方案的场景。但是,为了适应真正大型数据库的解决方案,我们创建了 Fabric,但我们还没有发现它的真正极限。

那么什么样的规模是大规模?一年前,我们构建了 40 台机器的集群,它们运行得非常好。使用 100 台机器似乎也不会有多大的挑战。也许有数十亿个节点?嗯,数十亿个节点仅相当于几 TB 的数据。重要的是,图模式的丰富性来自节点之间的关系,而不是节点本身。我们想的是测试一下可以将 Neo4j 伸展多远,而不仅仅是让自己感觉或看起来不错。

时不时有这样的声音出现,“Neo4j 不支持水平扩展”。很明显我们需要一个证明它错误的机会,一直以来我们都在等待这一机会的到来。现在,它终于来了。这个机会是NODES 2021 (2)。

3 规模

我们决定需要一个足够大的规模时,一个还没有其他人做到过的规模。我们需要向世界展示的不仅仅是 Neo4j 可以存储那样大规模的数据,当水平扩展时还能提高总体性能。

我们将需要更大的数据量,而且不仅仅是数百台机器或数十亿个节点。

一万亿。

一万亿关系应该够大了,对吧?

您甚至在哪里找到具有万亿关系的数据库?使用生产数据会带来物流的问题——数据传输本身会很复杂,更不用说脱密数据以使其适合公众查看。我们只能根据已知模型自己生成它。从数据模型开始,决定需要提供机器的数量和大小、运行的查询以及创建的测试。简而言之,从数据模型开始,了解它需要付出的努力。

LDBC (3)是一个很好的选择。它是一个包含人员、论坛和帖子的社交网络。它很容易理解和解释,大家应该对它也非常熟悉。我们创建了有 30 亿用户的数据集,并对其进行数据分区。这已经超过了地球上最大的社交网络的用户数。根据社交连接的程度,用户分区占用 850GB,每个论坛分区有 250GB,每个分区大约有 9 亿个关系。为了达到 1 万亿关系的目标,我们建立了约 1110 个论坛分区,每个分区运行在独立的服务器上。

下图是 LDBC 的数据模型。
图片.png

下图是我们对数据进行分区的策略:
图片.png

除了实际存储数据的分区,我们还增加了 3 个 Neo4j Fabric 服务实例,用来实现跨区的查询。

实际的测试如下:

1)在 10 个分区上运行 LDBC 查询,平均延迟 12ms
图片.png

2)在 100 个分区上执行查询的平均延迟是 18ms。
图片.png

3)在 1000 个分区上运行查询,平均延迟是 69ms。
图片.png

在实际的测试中,由于这样大规模的集群是亚马逊云上不曾部署过的,我们还解决了若干技术问题。

如有兴趣深入了解,欢迎随时联系我们 China@neo4j.com

4 总结

本篇重点介绍了基于 Neo4j 的高级分片技术,以及 Fabric 联邦式查询引擎。这是经过验证的、无与伦比的图数据扩展性能 (5)。

所有演示数据集和配置的详细信息均可在 Github (6) 上公开获得。

4.1 链接列表

(1) https://neo4j.com/fosdem20/

(2) https://neo4j.com/nodes-2021/

(3) http://ldbcouncil.org/

(4) http://neo4j.com/

(5) https://neo4j.com/developer/n...

(6) https://github.com/neo4j/tril...

Neo4j是全球领先的图数据平台公司,帮助政府和企业更好地理解人员、流程、位置和系统数据之间的相互关联...

1 声望
1 粉丝
0 条评论
推荐阅读
如何轻松做数据治理?开源技术栈告诉你答案
搭建一套数据治理体系耗时耗力,但或许我们没有必要从头开始搞自己的数据血缘项目。本文分享如何用开源、现代的 DataOps、ETL、Dashboard、元数据、数据血缘管理系统构建大数据治理基础设施。

NebulaGraph阅读 680

「实操」结合图数据库、图算法、机器学习、GNN 实现一个推荐系统
本文是一个基于 NebulaGraph 上图算法、图数据库、机器学习、GNN 的推荐系统方法综述,大部分介绍的方法提供了 Playground 供大家学习。

NebulaGraph阅读 576

蚂蚁高性能图数据库TuGraph-DB的技术思考与实践
在近日举行的 DTCC 2022 第十三届中国数据库技术大会-图数据技术与应用创新专场,蚂蚁集团图数据库负责人洪春涛博士分享了蚂蚁高性能图数据库TuGraph-DB的技术思考和实践,以下为演讲内容要点回顾。

TuGraph阅读 488

封面图
非正式全面解析 NebulaGraph 中 Session 管理
NebulaGraph 论坛最近有些讨论帖,各种姿势来问 NebulaGraph Session 管理相关的事情,我寻思这也不是一个法子,还是来写一篇文章来讲述下 NebulaGraph 中的 Session 管理。由于本文设定为非正式的 Session 讲解...

NebulaGraph阅读 474

苏宁基于 AI 和图技术的智能监控体系的建设
汤泳,苏宁科技集团智能监控与运维产研中心总监,中国商业联合会智库顾问,致力于海量数据分析、基于深度学习的时间序列分析与预测、自然语言处理和图神经网络的研究。在应用实践中,通过基于 AI 的方式不断完善...

NebulaGraph阅读 394

中国科协发布2022年“科创中国”榜单,Apache HugeGraph荣登开源创新榜
2月20日,中国科协召开2023“科创中国”年度会议。与会,中国科协正式发布了2022年“科创中国”系列榜单,由“科创中国”联合体理事长、中国工程院院士周济、中国科协副主席、中国工程院院士陈学东,中国科学院院士陈润...

百度安全阅读 361

2023年2月《中国数据库行业分析报告》正式发布(含精彩内容概览)
为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术...

墨天轮阅读 292

Neo4j是全球领先的图数据平台公司,帮助政府和企业更好地理解人员、流程、位置和系统数据之间的相互关联...

1 声望
1 粉丝
宣传栏