1

(本人只有NoSQL的概念知识,没有工作经验)

我知道以下类型的 NoSQL 数据库:

  • 键值、列族、文档数据库(聚合)
  • 图数据库

Map-Reduce 范式是否适用于所有人?我的猜测是否定的,因为 Map-Reduce 经常根据键和值进行讨论,但是由于不同 NoSQL 存储之间的区别不是那么清晰,我想知道 Map-Reduce 在哪里适用,哪里不适用。而且由于我正在评估将哪个数据库用于我拥有的一些应用程序创意,我应该考虑是否有可能实现大规模处理,无论我使用哪个商店。

4

1 回答 1

1

对 map reduce 的支持可能不应该是您选择数据存储的基础。

首先,map reduce 并不是进行大规模数据处理的唯一方法。例如,MongoDB 早期(在 v1 中)实现了 map reduce 支持,但后来添加了更通用的聚合框架,包含了许多将使用 map reduce 的任务。

Map reduce 只是处理大型数据集的一种范式。当您的应用程序需要使用 mapper 处理大量数据记录,然后需要使用 reducer 将结果组合在一起时才使用它。这就是它真正的作用。至于范式何时适用,何时不适用,只需查看您的用例即可。您是否需要一致地处理所有记录,然后合并结果?还是有另一种方式来表达你的问题?

看一下Mongo 聚合框架的例子,其中聚合被用作许多问题的更简单的替代方案,对于这些问题,强制它们进入 map-reduce 问题将是矫枉过正的。

它还应该有助于您深入了解您是否可以在没有 map-reduce 的情况下进行大规模数据处理的问题,答案是肯定的。显然 map-reduce 有利于创建搜索索引,但是大型数据集上的许多问题都受益于其他范式。

对“map reduce 的替代方案”进行网络搜索也会有所帮助。

于 2013-06-06T20:41:35.147 回答