【问题标题】:How to overcome the limitations with mongoDB aggregation framework如何克服 mongoDB 聚合框架的限制
【发布时间】:2013-06-17 05:50:29
【问题描述】:

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

我想解除限制 2、3。

我真的不在乎结果集的大小。我有很多 RAM 和资源。

而且我不在乎它是否占用超过 10% 的系统资源。

我希望在我的申请中同时违反 2、3。主要是 2 个。

但我确实需要聚合框架。我可以做些什么来消除这些限制?

  • 原因 *

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

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

选择 mongodb 以外的东西是不行的。我们已经在 MongoDB 的开发中投入了太多的精力

Mongo 的源代码可以改吗?

【问题讨论】:

  • 它是开源的。尽管结果大小问题将难以克服。老实说,没有更多信息,就没有一个好的答案。我建议您考虑一个更符合您要求的数据库。
  • 数据库没有问题 - 如果您希望依赖不存在的功能,我会考虑您的架构是否适合您的用例。

标签: mongodb aggregation-framework


【解决方案1】:

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

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

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 以按照需要的方式聚合它。

【讨论】:

  • 将查看您提到的库。谢谢
  • 您的设计似乎有很大的问题,而不是 MongoDB。处理 MongoDB 源不是一种选择,因为像我在第 4 点中所说的那样编写自己的解决方案更容易。
  • 将单个文档一分为二并应用链接似乎是 RDBMS,它打破了 nosql、无模式的整个概念!您需要应用连接来检索!
猜你喜欢
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2013-07-20
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多