如何克服mongoDB聚合框架的局限性

时间:2013-06-17 05:50:29

标签: mongodb aggregation-framework

根据this link,MongoDB上的聚合框架有一定的局限性。

我想删除限制2,3。

我真的不在乎最终的尺寸是什么。我有很多内存和资源。

我不在乎它是否需要超过10%的系统资源。

我希望在我的申请中违反2,3。大多是2。

但我真的需要聚合框架。我有什么办法可以消除这些限制吗?

  • 原因*

我一直在工作的应用程序有这些东西

  1. 用户可以上传大型数据集
  2. 我们有一个菜单让他排序,汇总等
  3. 聚合目前没有任何限制,用户可以选择做他想做的任何事情。由于开发人员不知道数据,并且可以按任意数量的列进行分组,因此应用程序可能会出错。
  4. 选择mongodb以外的东西是不行的。我们已经使用MongoDB进行了太多的开发

    是否可以更改Mongo的源代码?

1 个答案:

答案 0 :(得分:2)

1)将聚合值直接保存到某个集合(如MapReduce)将在未来版本中发布,因此第一个解决方案只是等待一段时间:)

2)如果遇到第二或第三个限制,您可能需要重新设计数据方案和/或汇总管道。如果您使用大型时间序列,则可以减少聚合文档的数量,并在几个步骤中进行聚合(如MapReduce do)。我不能更具体地说,因为我不知道你的数据/用例(给我评论)。

3)您可以选择不同的框架。如果您熟悉MapReduce概念,则可以尝试Hadoop(它可以使用MongoDB作为数据源)。我没有MongoDB-Hadoop集成的经验,但我警告你使用Mongo的MapReduce - 它对大型数据集很难。

4)您可以在代码中进行聚合,但是您应该使用一些“低级”语言或库。例如,pymongo(http://api.mongodb.org/python/current/)不适合这样的东西,但是您可以托管像monary(https://bitbucket.org/djcbeach/monary/wiki/Home)这样的东西来有效地提取日期和NumPy或Pandas以按照想要的方式聚合它。