我正在努力提高聚合查询的速度。我的想法是使用Map Reduce创建一个新集合并在其上运行聚合。这会减少处理时间吗?有什么缺点?
答案 0 :(得分:1)
是的,它可以工作。这是提高查询速度的常用模式。但MongoDB在这种情况下是特殊的,因为Map Reduce需要JavaScript评估,而聚合框架是本地实现的,因此aggregation is faster。
我建议将概念与技术分开。在批处理作业中进行预计算仍然是一个好主意,但是您应该使用聚合框架而不是Map Reduce来进行预计算。
使用批处理作业的缺点是
为了进一步改进延迟,您可以考虑实施Lambda architecture。它通过尽可能预先计算结果,将查询时间降至最低。
这种体系结构方法尝试通过使用批处理来提供全面和准确的预计算视图,同时使用实时流处理来提供动态视图,从而平衡延迟,吞吐量和容错。两个视图输出可以在演示之前连接。