写点什么

ArangoDB、MongoDB 和 Neo4j 性能比较

  • 2015-06-18
  • 本文字数:1159 字

    阅读完需:约 4 分钟

Claudius Weinberger 是 ArangoDB 的首席执行官。在他看来,原生多模型数据库是指数据库引擎兼有文档、图和键 / 值数据模型,提供了涵盖三种模型的统一查询语言和 API,并允许在单个查询中混合使用三种模型。他认为,多模型数据库可以与文档存储及图数据库(比如, MongoDB Neo4j )一较高下。为了支持这个观点,其团队对 ArangoDB、MongoDB 和 Neo4j 进行了性能测试。近日,他发表了一篇博文,介绍测试过程和结果。

测试所用的数据集是一个社交网络快照,由斯坦福大学的 SNAP 提供,其中包含 160 多万个顶点(代表个人资料)和 3000 多万条边(代表朋友关系)。他们用顶点数据做文档数据库测试,用顶点和边的综合数据做图数据库测试。测试场景如下:

  • 单次读:单文档(个人资料)读取(10 万次);
  • 单次写:单文档写入(10 万次);
  • 聚合:计算社交网络的年龄分布,即每个年龄出现多少次;
  • 相邻顶点:为 500 个顶点查找直接相邻顶点以及相邻顶点的相邻顶点;
  • 最短路径:在一个高度连通的社交图中查找 19 条最短路径。

其中,所有数据库都执行相同的操作,所有测试用例都是用 JavaScript 实现,在 node.js 中运行。

测试结果以 ArangoDB 的吞吐量指标为基准,百分比越小表明吞吐量越高,相反,百分比越高表明吞吐量越低:

可以看出,测试结果支持 Weinberger 的观点。MongoDB 的单文档读 / 写更快,但 ArangoDB 的聚合和查找相邻顶点效率更高。由于在 MongoDB 中测试最短路径查询需要完全在客户端实现,所以他们没有对 MongoDB 做这项测试。令 Weinberger 吃惊的是,Neo4j 并没有在查找相邻顶点的测试中胜出。

在 Hacker News 上,部分网友对测试的客观性提出了质疑。网友 harunurhan 提出:

你们确定对 Neo4j 或 MongoDB 进行了与 ArangoDB 同等程度的调优?而且,我不喜欢一家公司发表自家产品与其它产品的评测文章。虽然,许多文章信息丰富且客观,但我一律将它们视为市场营销 / 广告文章。

对此,网友 neunhoef(来自 ArangoDB 的 Max)答复说:

我们已经花费了相当大的精力来对每一种数据库进行调优。但显然,与其它数据库相比,我们更了解自己的产品。不过,我们已经号召更了解其它产品的人(参与进来),调查将一直开放,任何人都可以做出贡献及提出改进建议。

网友 bhouston 则表示:

我认为,要做到客观,唯一的方式是提供一项测试,然后给每个 DB 提供商机会,让他们调整数据库和查询,以便优化性能。

对此,网友 porker 提醒道:

据我所知,测试是开源的,原始结果也在那里,也欢迎贡献。

感兴趣的读者可以访问该测试的 GitHub 页面,或者参与 HN 的讨论


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-06-18 09:1620272
用户头像

发布了 1008 篇内容, 共 410.6 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

阿里云内部 WebRTC 研究分享| 内容合集

阿里云CloudImagine

阿里云 音视频 WebRTC 视频云 技术专题合集

Java中级开发笔试题及答案,成功入职腾讯月薪45K,

Java 程序员 后端

Java中高级面试必知必会,高级Java开发面试解答之线程篇,

Java 程序员 后端

计算机操作系统学习笔记 | 进程

Regan Yue

操作系统 进程 9月日更

视频剪辑软件对比之:会声会影与剪映

懒得勤快

常见的IT自动化运维工具有哪些?推荐一款好用的?

行云管家

阿里云 运维 IT运维 PSSH

IOS技术分享| any自习室场景实现

anyRTC开发者

音视频 在线教育 移动开发 ios技术分享

ECIC演讲精华|如何构建云原生应用下的高性能持久化存储?

焱融科技

技术 分布式 云原生 高性能 存储技术

update 没有索引导致业务崩了,老板骂了一个小时

华为云开发者联盟

数据库 innodb 事务 索引 update 语句

Compose 中的图形

Changing Lin

9月日更

李沐亚马逊资深首席科学家 - 动手学深度学习 易筋 ARTS 打卡 Week 64

John(易筋)

ARTS 打卡计划

ironSource 出品 AdQuality 解决方案全新升级,助力开发者管理应用内广告

MySQL连接控制插件介绍

Simon

MySQL

云随想二:云时代,你如何采购软件?

FLASH

云原生 采购软件

SaaS 102 | 做 SaaS 产品应该如何做决策?

Teddy Chan

创业 数据 SaaS 决策 电商SaaS

FunTester抄代码之路

FunTester

Jmeter 测试框架 HttpClient FunTester ngrinder

Java中高级岗面试为何越来越难,学习Java开发的步骤,

Java 程序员 后端

一个通用即时通讯(IM)系统的设计

OpenIM

5个非常重要的数据Oceanbase,TiDB,Cassandra,RocksDB,MemDB

hanaper

Java中级笔试题百度文库,基础+进阶+高级,

Java 程序员 后端

火爆全网的Spring Security手册及源码笔记,在Github上标星103K

编程 架构 面试 程序人生 金九银十

过二级等保需要哪些安全设备?多少钱?

行云管家

数据库 网络安全 等保 等级保护

2021 CHIMA观感:医疗信息化发展的几个趋势,值得关注

菜根老谭

医疗信息化

Java中级开发面试题,只需一篇文章吃透Java多线程技术,

Java 程序员 后端

java中间件、数据库与spring框架,Java性能优化最佳实践,

Java 程序员 后端

Java中高级岗面试为何越来越难,都2021年了,还不会Redis?

Java 程序员 后端

webrtc Fec kPacketMaskRandomTbl 概述

webrtc developer

webrtc、 fec mask

教你实现一个朴实的Canvas时钟效果

华为云开发者联盟

标签 函数 canvas 时钟

移动端短语音消息音频格式选择

轻口味

android 音视频 9月日更

FunTester测试框架Redis性能测试实践

FunTester

redis 性能测试 测试框架 FunTester

在 CentOS 7上安装Sonatype Nexus Repository OSS

吴脑的键客

nexus Ops

ArangoDB、MongoDB和Neo4j性能比较_数据库_谢丽_InfoQ精选文章