在Mongo上进行大数据查询的最佳方法是什么?

时间:2012-07-20 23:26:54

标签: mongodb mapreduce bigdata

Mongo支持Map / Reduce查询,但它们似乎不是Hadoop意义上的map reduce(并行运行)。在大型Mongo数据库上运行查询的最佳方法是什么?我需要将它导出到其他地方吗?

1 个答案:

答案 0 :(得分:1)

根据您需要做什么,您的选择(在Mongo内部)是:

1)继续在Mongo中使用map / reduce,但为m / r目的启动一些辅助。这是一种并行化map reduce的简单方法。但是有一些限制,你只能使用“out:inline”选项,因此结果需要大约16MB。如果你还没有分片,这才真正可行。

2)查看2.2中的aggregation framework(2.2.0-rc0已经发布,我们发现它在MongoHQ上非常稳定)。这在数据库级别上得到了更好的优化,主要是让你远离janky javascript引擎,并且是10gen添加的更有趣的功能之一。它也可以在分片环境中工作。

对于上述任何一种情况,您需要确保有足够的RAM(或非常快的磁盘)来保存所有输入数据,中间步骤和结果。否则,您将受到IO速度的限制,并且不会从CPU中获得太多。

如果你想走出Mongo,你可以试试Mongo Hadoop适配器。 Hadoop是一种更好的map / reduce方法,这可以让你使用Mongo数据作为输入。然而,这可能在操作上很复杂,这意味着要么付出高昂的努力,要么就是脆弱的。