MongoDB:没有并行性使用MapReduce有什么意义?

时间:2010-05-08 14:13:45

标签: parallel-processing mongodb mapreduce

引用http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-Parallelism

  

截至目前,MapReduce就业了   单个mongod进程是单一的   螺纹。这是由于一个设计   当前JavaScript的局限性   引擎。我们正在调查   解决这个问题的替代方案,但是   现在如果你想并行化   你需要的MapReduce工作   要么使用分片,要么使用分片   在代码中汇总客户端。

如果没有并行性,与更简单或更传统的查询和数据聚合方法相比,MapReduce有哪些好处?

为避免混淆:问题不是“面向文档的DB比传统关系数据库有什么好处”

3 个答案:

答案 0 :(得分:11)

使用MapReduce而不是更简单或更传统的查询的主要原因是它只能执行简单查询无法做到的事情(即聚合)。

一旦需要聚合,使用MongoDB有两个选项:MapReduce和group命令。 group命令类似于SQL的“group by”,并且受限于必须在单个数据库响应中返回其所有结果。这意味着只有在少于4MB的结果时才能使用组。另一方面,MapReduce可以执行任何“分组依据”的操作,但可以将结果输出到新的集合,因此结果可以根据需要进行。

此外,并行性即将到来,所以有一些练习是好的:)

答案 1 :(得分:4)

如果您正在运行分片群集,则M / R已在MongoDB中并行。无论如何,这是M / R的要点 - 将计算放在与数据相同的节点上。

答案 2 :(得分:1)

超快地图/缩小是在路线图上

它不会出现在1.6版本(夏季版)中

今年晚些时候可能