Node.js MongoDb mapreduce到另一个集合的内存效率是否比“out inline”更高`

Node.js MongoDb mapreduce到另一个集合的内存效率是否比“out inline”更高`,node.js,mongodb,Node.js,Mongodb,我在一个内存为512兆的实例上运行MongoDb(以及其他一些web应用程序),所以每兆字节都会计数 声明out:{inline:1} 在内存中执行map reduce操作并返回结果 这表明其他out类型不会在内存中执行。。将mapReduce结果返回到另一个集合中会更节省内存吗?如果最后我仍然需要读取集合数据以将其返回到客户端,考虑到内联只有在从应用程序调用Map Reduce时才真正有用,我应该声明Map Reduce不是设计的要内联运行应用程序,您应该尝试转换到聚合框架或其他东西(如果可以

我在一个内存为512兆的实例上运行
MongoDb
(以及其他一些web应用程序),所以每兆字节都会计数

声明
out:{inline:1}

在内存中执行map reduce操作并返回结果


这表明其他out类型不会在内存中执行。。将
mapReduce
结果返回到另一个集合中会更节省内存吗?如果最后我仍然需要读取集合数据以将其返回到客户端

,考虑到内联只有在从应用程序调用Map Reduce时才真正有用,我应该声明Map Reduce不是设计的要内联运行应用程序,您应该尝试转换到聚合框架或其他东西(如果可以的话)


内联输出限制为16MB(单个BSON文档)。考虑到这一点,您可能会发现,实际上,将数据写入一个集合,然后再次读取该集合要比在内存中执行所有操作要慢。

写入另一个集合,然后再从中读取不需要将整个数据集保存在内存中(这里的“数据集”指的是聚合数据集)。它可以安全地写入/读取磁盘

当您使用“out:inline”时,它全部存储在内存中。如果内存不足,将发生一些交换/分页

无论如何,为了获得好的性能数据,您应该有足够的内存来保存所有热数据。磁盘速度很慢


考虑到所有这些,不管是内联还是非内联,它可能没有什么区别。

我想说:是的,让
mapReduce
将结果存储在一个集合中肯定会更节省内存


如果使用
inline
,MR操作的结果将以数组形式返回,这意味着所有结果都将存储在内存中,然后再交给调用代码。如果将结果存储在集合中,则可以使用游标或流,以避免在返回到客户端之前必须将所有内容读入内存。

啊,是的,内联限制为最大文档大小。忘了。:)