BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

ArangoDB、MongoDB和Neo4j性能比较

| 作者 谢丽 关注 9 他的粉丝 发布于 2015年6月19日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Claudius Weinberger是ArangoDB的首席执行官。在他看来,原生多模型数据库是指数据库引擎兼有文档、图和键/值数据模型,提供了涵盖三种模型的统一查询语言和API,并允许在单个查询中混合使用三种模型。他认为,多模型数据库可以与文档存储及图数据库(比如,MongoDBNeo4j)一较高下。为了支持这个观点,其团队对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读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT