MapReduce是否比在JS中做地图和缩小要快?

时间:2011-11-09 16:16:30

标签: mongodb node.js mapreduce

我正在使用带有Node.js的MongoDB。在Mongo中使用MapReduce是否有任何速度优势,而不是在我自己的JS中获取完整的结果集并执行地图和减少?

3 个答案:

答案 0 :(得分:4)

检索整个结果集和执行m / r app端通常没有性能优势。事实上,在几乎所有情况下,在节点服务器上将整个结果集塞进内存中是一个特别糟糕的主意。

在MongoDB上执行map / reduce将确保在检索结果集和写回m / r的结果时,数据库和应用服务器之间没有浪费带宽。 MongoDB的map / reduce也可以轻松扩展。

TL; DR:始终在MongoDB中执行

答案 1 :(得分:1)

如果您的数据库与服务器位于不同的主机上,则数据传输会更小,这将浪费更少的带宽和时间。

答案 2 :(得分:0)

实际的数据传输既费钱又费时。想象一下,如果您每次想要进行库存盘点,那么您将所有物品运送到另一个仓库。

此外,您必须考虑事物的扩展方式。

  • 使用mongodb,您通常需要至少一个数据副本,这将为基于读取的任务增加性能。
  • 使用节点,由于它的扩展程度,您可能不需要再添加第二台服务器。向其中添加密集型任务可能会导致需要扩展面向外的节点服务器数量。