MongoID在哪里查询map_reduce关联

时间:2013-08-06 23:25:40

标签: ruby ruby-on-rails-3 mongodb ruby-on-rails-3.2 mongoid

我有一个应用程序正在做一项工作,聚合来自不同社交网站的数据后端进程完成Java工作很棒。 它的前端开发Rails应用程序截止日期是3周,一些分析过滤器abd报告任务还剩下几天几乎完成。 当我开始实施地图缩减为不同的状态工作超过100,000记录超过我的本地机器工作伟大。 突然,我的同事给了我当前更新的数据库,现在有2.7百万记录,我的期望是它会运行得很好,因为我在map_reduce执行之前指定了日期范围和过滤器。我相信这会导致过滤器的结果,但不是一个案例。

实施例 我有一个查询只显示最后24小时加载的记录统计数据

结果是0记录发现但在200秒之后有270万条记录才达到毫秒级。 代码示例

filter is hash of condition expected to check before map_reduce
map function
reduce function
SocialContent.where(filter).map_reduce(map, reduce).out(inline: true).entries

请注意......随着数据库在几天内成倍增长,剩余时间范围内的理想解决方案是什么。

1 个答案:

答案 0 :(得分:0)

我建议你看一些不同的东西:

  • 您的所有数据是否仍然适合内存?你现在有更多的记录,这可能意味着MongoDB需要更频繁地访问磁盘。
  • M / R无法使用索引。您尚未显示Map和Reduce函数,因此无法指出错误。用这些功能更新问题,以及他们应该做什么,我会更新答案。
  • 相反,使用聚合框架,它可以使用索引,也可以并发运行。理解和调试也更容易。在http://docs.mongodb.org/manual/reference/aggregation/
  • 上有相关信息