mongodb文档中的一个用例页面显示了创建包含大量数据的预聚合报告的示例: https://docs.mongodb.com/ecosystem/use-cases/pre-aggregated-reports-mmapv1/
该文件清楚地表明这仅适用于MMAPv1引擎,就WiredTiger而言,没有额外的权衡信息或者如何处理这种用例。
还有针对此类用例的设计宏观概述:https://www.mongodb.com/blog/post/schema-design-for-time-series-data-in-mongodb 但这显示的方法与上面的用例链接几乎相同。
有关如何处理此事的任何建议吗?
答案 0 :(得分:1)
https://jira.mongodb.org/browse/DOCS-4894有一些细节。显然标题有点误导,因为它仅适用于页面的一半:
该页面定义了4种关键模式:
- 预聚合(更新每个已消耗事件的平均值/分钟/最大值,而不是记录原始事件)。
- 分组(将记录集合在一起,例如按天分组,以便快速后续访问 - 处理大量细粒度事件的模式,然后为想要检索粗粒度数据的分析/报告提供服务)。
- 预分配(又称预填充,以避免过多的文档增长和重新分配)
- 文档内层次结构(防止事件摄取延迟随着每天的时间增加而增加)
醇>随着WiredTiger的推出,由于WiredTiger处理“就地更新”的方式,很可能不再需要模式3(预分配),甚至可能是有害的“在内部。也可能是模式4(文档内层次结构)在使用WiredTiger时也没有添加任何值(这需要由某人验证)。
似乎预聚合(也在博客文章中描述)和分组仍然是有效的模式。