引言
本文呈现了ArangoDB图形分析引擎(GAE)与Neo4j的基准测试结果,其中GAE是ArangoDB数据科学套件的重要组成部分。
本次测试具备可重复性,旨在对两款数据库进行中立、全面的对比,确保评估结果公平无偏。测试采用了wiki-Talk数据集------这是一个广泛应用的真实世界图形数据集,源自维基百科的编辑和讨论历史,精准捕捉了维基百科用户间的互动模式,尤其是用户讨论页上的交流行为。
该数据集因具备有向图结构、丰富的节点与边、时间维度属性及稀疏性等独特特征,成为图数据库和图分析系统基准测试的优选。测试结果充分展现了两款数据库的效率与扩展性,为企业评估图数据库提供了极具参考价值的基准模型。
基准测试结果亮点
测试结果揭示了多项关键发现,尤其凸显了ArangoDB在图分析任务中的卓越性能,具体如下:
-
在多种图计算算法上,ArangoDB表现持续优于Neo4j,性能提升幅度在1.3倍至8倍不等。
-
在图数据加载速度上,优势同样显著。针对wiki-Talk数据集,ArangoDB的图加载效率较Neo4j实现了100%的提升。
这一出色表现得益于ArangoDB优化的数据存储与检索机制、先进的查询执行逻辑,以及对集群部署的高效利用,使其在各类场景中都能发挥出色性能。这些发现充分证明:
-
ArangoDB能够支撑更大规模、更高速度的实时图分析应用。
-
对于需要快速数据处理与分析的行业和企业而言,ArangoDB是更具吸引力的选择,例如实时推荐系统、社交网络分析、欺诈检测及网络安全等领域。
测试详情
数据集(wiki-Talk)
本次测试选用了业内公认的wiki-Talk数据集来评估图数据库的性能,具体数据规模如下:
|-----------|-----------|-----------|
| 使用的图 | 节点数 | 边数 |
| wiki-Talk | 2,394,385 | 5,021,410 |
硬件环境
所有测试均在同一台设备上进行,硬件配置如下:
-
操作系统:Ubuntu 23.10(64位)
-
内存:192 GB(4800 MHz)
-
CPU:Ryzen 9 7950X3D(16核32线程)
数据库配置
|----------|------------------------------|----------|
| 数据库 | 版本 | 部署方式 |
| Neo4j | 5.19.0(社区版) | 本地部署,单进程 |
| ArangoDB | 3.12.0-NIGHTLY.20240305(社区版) | 本地部署,单进程 |
主要测试流程
测试采用两种工作流来衡量性能:
-
工作流A:创建内存图(in-memory representation) → 每个算法执行一次 → 测量整个流程耗时
-
工作流B:创建内存图(in-memory representation) → 测量图创建时间 → 分别执行每个算法 → 测量计算耗时
测试算法
本次测试涵盖以下四种核心图算法:
-
PageRank(页面排名):基于节点连接关系对节点进行排名,广泛应用于搜索引擎。
-
WCC(弱连通分量):识别图形中任意两个顶点可通过路径连接(忽略边的方向)的子集。
-
SCC(强连通分量):识别图形中同一子集内所有顶点可相互到达的子集。
-
Label Propagation(标签传播):用于图形社区检测的半监督学习算法,节点通过迭代方式向相邻节点传播自身标签。
所用技术
-
JavaScript框架:Vitest + tinybench
-
通信方式:
-
Neo4j:官方Neo4j JS驱动("neo4j-driver": "^5.18.0")
-
GAE:基于Axios的纯HTTPS 请求("axios": "^1.6.8")
-
测试结果
图加载性能(wiki-Talk数据集)
|------------------|----------|------------|--------|
| 任务 | GAE耗时(秒) | Neo4j耗时(秒) | 速度提升倍数 |
| 加载wiki-Talk图 | 9.9 | 18 | 1.8倍 |
| 加载带属性的wiki-Talk图 | 10.7 | 19.2 | 1.8倍 |
图计算性能(wiki-Talk数据集)
|---------------------|----------|-------------|--------|
| 任务 | GAE耗时(秒) | Neo4j 耗时(秒) | 速度提升倍数 |
| 计算PageRank | 3.8 | 10.6 | 2.8倍 |
| 计算WCC | 2.3 | 4.5 | 1.7倍 |
| 计算SCC | 3.2 | 6.7 | 2.1倍 |
| 计算Label Propagation | 1.5 | 13 | 8.5倍 |
ArangoDB性能领先的原因
ArangoDB在wiki-Talk数据集上的出色表现,源于其特定的架构优化,而非单纯的计算性能优势。本次测试中,ArangoDB承担数据存储角色,图分析引擎(GAE)负责计算任务,核心优化集中在两个关键阶段:
图加载阶段优化
-
并行数据提取(Parallel Data Extraction):ArangoDB支持从单节点和分布式系统中并行加载数据,可横向扩展至多台设备,通过提升并行度加快数据传输速度,相比串行或非并行提取方案,性能大幅提升。
-
定向数据传输(Projections for Targeted Data Transfer):仅传输分析所需的数据属性。例如,若仅需边ID和单个属性,系统会精准提取并传输这些字段,避免传输完整文档带来的额外开销,减少数据量和网络延迟。
图分析引擎(GAE)优化
- 高效的内存结构:采用高度优化的内存数据结构存储图数据,在降低内存占用的同时,保证极快的访问速度,图加载后可立即投入计算,无额外延迟。
测试范围说明
需特别说明的是,本次测试未评估以下内容数据插入ArangoDB的耗时和ArangoDB自身执行的计算任务。测试核心评估维度为:
-
从ArangoDB向GAE加载图数据的效率。
-
GAE执行图算法的能力。
通过聚焦这两个阶段,测试充分展现了ArangoDB设计上的优势------能够通过快速数据加载和与GAE的高效协同,支撑大规模图工作流。
测试可重复性保障
本次测试结果100%可复现,确保结果的一致性和可验证性。如需复现测试,可按照以下步骤操作:
-
搭建硬件环境:安装Ubuntu 23.10操作系统,配置192 GB内存和Ryzen 9 7950X3D CPU。
-
安装配置数据库:使用提供的Docker配置,安装并配置最新版本的Neo4j和ArangoDB,两者均采用单线程(非集群)配置。
-
执行测试:使用wiki-Talk数据集,按照测试配置中概述的工作流A和B,运行指定的图算法(PageRank、WCC、SCC、Label Propagation)。
-
结果对比:测量内存中图创建时间和计算时间,对比两款数据库的表现。
结语
基准测试结果清晰表明,在图计算和数据加载任务中,ArangoDB的性能远超Neo4j。其显著的速度优势------尤其是在执行复杂算法和加载大规模数据集时的高效表现,彰显了其优化的架构设计和出色的数据处理能力。
-
如果你的应用需要大规模图数据处理+实时或近实时图分析,ArangoDB显然比Neo4j更适合。
-
对于推荐系统、社交网络分析、欺诈检测、网络安全、知识图谱、复杂关系分析等场景,ArangoDB的速度与可扩展性能够带来明显优势。
-
ArangoDB不仅是图数据库,它是一个多模型(multi-model)数据平台,结合图(graph)、文档(document)、键值(key/value)、向量(vector)和搜索(search)等能力,使开发者/企业能够更灵活构建复杂应用。
因此,如果你正在为数据密集、连接复杂、需要高性能分析的系统选型,ArangoDB无疑是更值得信赖的选择!
