0

我有一个应用程序正在从不同的社交网络站点聚合数据 后端进程完成 Java 工作得很好。它的前端是开发 Rails 应用程序的截止日期是 3 周,用于一些分析过滤器 abd 报告任务,还有几天就几乎完成了。当我开始为不同的州实施 map reduce 时,在我的本地机器上工作了超过 100,000 条记录。突然,我的同事给了我当前更新的数据库,它有 270 万条记录,现在我的期望是它会运行得很好,因为我在执行 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

请提出建议..在剩余时间范围内什么是理想的解决方案,因为数据库在几天内呈指数级增长。

4

1 回答 1

0

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

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