2010-05-08 68 views
13

报价http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-ParallelismMongoDB:使用MapReduce而没有并行性有什么意义?

截至目前,在 单一的mongod过程MapReduce作业是单 线程。这是由于当前JavaScript 引擎中的设计 限制。我们正在研究 替代方案来解决此问题,但现在如果要并行执行 您的MapReduce作业,您需要在代码中使用分片或使用 聚合客户端。

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

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

回答

11

使用的MapReduce在简单或更传统的查询,主要的原因是,它只是可以做的事情(即聚合),简单的查询不能。

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

此外,并行来了,所以这是很好的有一些做法:)

+0

什么版本会得到并行? – nilskp 2012-03-27 17:22:51

+0

关于用于mongodb mapReduce的JS引擎的任何更新?它现在是否提供了并行性? – 2016-09-14 14:00:46

4

M/R在MongoDB中已经平行,如果你正在运行一个分片集群。无论如何,这是M/R的主要观点 - 将计算放在与数据相同的节点上。

+3

我是否正确地认为,利用多核计算机的当前方式是在同一台计算机上运行多个MongoDB实例? – 2010-10-01 14:57:18

1

超快的map/reduce是在路线图上

它不会在1.6版本(夏季发布)

今年这么晚了可能