AICon上海「Agent与多模态解决方案专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:1620327
用户头像

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

关注

评论

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

如何提高性能测试效能

老张

性能测试 测试效能

部署Spark2.2集群(on Yarn模式)

程序员欣宸

大数据 spark 8月月更

属实不赖!Alibaba开源GitHub星标114K微服务架构全彩进阶手册

冉然学Java

Java 阿里巴巴 开源 微服务 微服务架构

备受资本市场关注的Zebec,正在构建“新DeFi”生态

股市老人

《亲密关系》:如何保持良好的亲密关系?

郭明

读书笔记

SSM框架整合(Spring+SpringMVC+Mybatis)

开源 SSM框架 8月月更

SpringBoot 日志的各种使用姿势,你真的用对了吗?

程序知音

Java spring 程序员 springboot 后端技术

云原生(十八) | Kubernetes篇之Kubernetes(k8s)工作负载

Lansonli

云原生 k8s 8月月更

“新DeFi”生态的构建,流支付协议Zebec或厚积薄发

鳄鱼视界

STM32入门开发 制作红外线遥控器(智能居家-万能遥控器)

DS小龙哥

8月月更

测试开发【Mock 平台】09 开发:项目管理(五)搜索、删除和Table优化

MegaQi

测试平台开发教程 8月月更

如果让我设计一套,TPS百万级API网关!

小傅哥

Java 微服务 小傅哥 分布式架构 网关

DBPack 数据库限流熔断功能发布说明

峨嵋闲散人

分布式事务 云原生 分库分表 dbmesh Database Mesh

寻找OpenHarmony「锦鲤」|万元豪礼+技术干货全是你的!

OpenHarmony开发者

OpenHarmony

为什么电商云产品需要 Assisted Service Module (ASM) 模块的支持

汪子熙

typescript 电商 SAP 8月月更 Storefront

《MySQL入门很轻松》第4章:数据表中存放的数据类型

乌龟哥哥

8月月更

聊聊客户档案模型的设计与管理

Java 架构 CRM CDP

Kotlin协程解析系列(上):协程调度与挂起

vivo互联网技术

kotlin 协程

less的基本语法

Java学术趴

8月月更

【云原生】Docker 进阶 -- 构建自定义镜像实战

Bug终结者

Docker 阿里云 服务器 8月月更

35岁程序员危机,有何破解之法?

博文视点Broadview

多原则等于无原则,微服务识别方法究竟该怎么选?

老坛架构

架构 微服务

Java 泛型 T,E,K,V,,傻傻分不清?

TimeFriends

8月月更

最常见的 10种网络安全攻击类型

郑州埃文科技

网络安全 IP地址 网络攻击

[极致用户体验] 一行简单的样式,让网页有「高级感」

HullQin

CSS JavaScript html 前端 8月月更

RabbitMQ高可用架构总结

知识浅谈

RabbitMQ 8月月更

一对一直播系统源码——多人语音聊天室

开源直播系统源码

直播系统源码 语音直播系统 一对一直播视频源码 一对一语音直播

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