(我对NoSQL只有概念知识,没有工作经验)
我知道以下类型的NoSQL数据库:
- 键值、列族、文档数据库(aggregate)
- 图形数据库
Map-Reduce范式适用于所有吗?我的猜测是没有,因为Map-Reduce经常在键和值方面进行讨论,但由于不同NoSQL存储之间的区别并不是那么明确,我想知道Map-Reduce在哪里适用,在哪里不适用。由于我正在评估使用哪个DB的过程中,我有一些应用程序的想法,我应该考虑是否有可能实现大规模的处理,无论我使用哪个商店。
对map reduce的支持可能不应该作为选择数据存储的基础。
首先,map reduce并不是进行大规模数据处理的唯一方法。例如,MongoDB早期(在v1中)实现了map reduce支持,但后来添加了更通用的聚合框架,包含了许多将使用map reduce的任务。
Map reduce只是处理大型数据集的一种范例。如果您的应用程序需要使用映射器处理大量数据记录,然后需要使用reducer将结果组合在一起,则只使用。这就是它真正能做的。至于范例何时适用,何时不适用,只需查看您的用例。您是否需要一致地操作所有记录,然后组合结果?或者还有别的方式来表达你的问题吗?
看一下Mongo聚合框架的例子,其中聚合被用作许多问题的更简单的替代方案,这些问题迫使它们进入map-reduce问题将是过度的。
它还应该帮助您深入了解您是否可以在没有map-reduce的情况下进行大规模数据处理的问题,答案是肯定的。显然,map-reduce对于创建搜索索引很有好处,但是大型数据集上的许多问题都受益于其他范例。
在网上搜索"map reduce的替代方案"也会有帮助。