【问题标题】:Map-Reduce - only applicable to key-value NoSql data models?Map-Reduce - 仅适用于键值 NoSql 数据模型?
【发布时间】:2013-06-07 04:41:35
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: hadoop mapreduce neo4j key-value-store


    【解决方案1】:

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

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

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

    查看Mongo aggregation framework 的示例,了解使用聚合作为许多问题的更简单替代方案,对于这些问题,强制它们进入 map-reduce 问题将是矫枉过正。

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

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

    【讨论】:

    • 这对雷很有帮助。在将您的问题标记为正确之前,我将把问题留待更长时间。
    • 我希望 Map-Reduce 成为我的武器库的一部分的(天真)原因是大男孩们这样做(如有疑问,请随波逐流)。我知道我不想成为谷歌或亚马逊,所以我不应该盲目跟随(这就像说我应该选择一个键值存储,因为他们这样做),但是当解决方案不那么频繁地被谈论时(我已经从未听说过 Mongo 聚合框架)趋势是逃跑。但你是对的。
    • Map reduce 很棒而且功能强大,它确实适用于许多任务。在某些情况下,您会想要它。但有时它是矫枉过正,有时它是不合适的,因为你需要元素之间的通信,而 map-reduce 的 map 阶段不这样做。你看到this SO question yet了吗?
    • 感谢您的链接。我需要更仔细地完成它。我同意,Map Reduce 太过分了,特别是当您考虑到关系数据库免费提供此功能并且可以在很大程度上扩展时。
    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多