MapReduce 是倒退:拿它与关系数据库比较公平吗?

  • Scott Delap
  • 宋玮

2008 年 1 月 19 日

话题:JavaDevOps语言 & 开发架构

最近 David J. DeWitt 和 Michael Stonebraker 在 the Database Column 上写了一篇文章试图将日益流行的 MapReduce 编程范式与关系数据库进行比较。该文章说道:

……作为数据处理范式,MapReduce 代表着一个巨大退步。数据库社区已经学到了如下三个经验,这些经验从 40 年前 IBM 第一次在 1968 年发布 IMS 时就已经揭示出来了……根据迄今为止的评估实验,我们严重怀疑 MapReduce 应用程序能有多大伸缩性。此外,MapReduce 的实现者应该好好学习近 25 年来的并行 DBMS 研究文献。

文章接着给罗列了如下判据:

  • MapReduce 是一个糟糕的实现(与 B-trees 相比)
  • MapReduce 不是革新
  • MapReduce 缺乏某些特性(如装载和索引)
  • MapReduce 与 DBMS 工具不兼容

博客界很快就声称这一比较及其理由都是漏洞百出的。Greg Jorgensen 进行了逐条反驳。在这些条目中,他指出 MapReduce 不是数据库,而是用于分布式处理的算法技术,不能这么比较。Jorgensen 建议更好的比较对象应该是 SimpleDB:

……作者真正想抱怨的是分布式“云”数据管理系统,如亚马逊的 SimpleDB;实际上,如果你将“MapReduce”换为“SimpleDB”,原文差不多就有意义了……

Rich Skrenta 从打破习惯的角度发表了评论:

……打破了你的习惯的东西总是有些地方看不顺眼的。功能不足,发展得也不成熟。但要是在价格上能赢 10 倍,不牢靠的廉价货最终也会胜出。想想 Linux 对阵 AT&T 的 Unix,或 mysql 对阵 Oracle……

关于这篇文章冗长的争论和评论还可以从redditycombinator上找到。

查看英文原文:MapReduce A Step Backwards: Is Comparison to Relational Databases Fair?
JavaDevOps语言 & 开发架构