【问题标题】:MongoDB aggregation performance capabilityMongoDB聚合性能能力
【发布时间】:2016-08-09 17:17:19
【问题描述】:

我正在尝试解决一些关于使用 MongoDb 处理大量文档以用于各种聚合的性能注意事项。

我读到一个集合有 32TB 容量,具体取决于块和分片键值的大小。

如果我有 65,000 个客户,每个客户每天(平均)向我们提供 350 笔销售交易,那么最终每天会创建大约 22,750,000 个文档。当我说销售交易时,我的意思是一个对象,它就像一张带有抬头和行项目的发票。我拥有的每个文档平均为 2.60kb。

这些客户还收到了一些其他数据,例如帐户余额和目录中的产品。我估计任何时候都有大约 1,000 条产品记录处于活动状态。

根据上述情况,我在一年内大约有 8,392,475,000 个(84 亿)个文档,总共有 20,145,450,000 kb(18.76Tb)的数据存储在一个集合中。

基于 32Tb (34,359,738,368 kb) 的 MongoDb 集合的容量,我相信它将达到容量的 58.63%。

我想了解这对于在其上运行的不同聚合查询将如何执行。我想创建一组分阶段的管道聚合,它们写入不同的集合,用作业务洞察分析的源数据。

在 84 亿个事务文档中,我的目标是通过一组使用 $out 输出的单独服务在不同的集合中创建此聚合数据,以避免单个结果集的 16Mb 文档大小出现任何问题。

我是否过于雄心勃勃地期望 MongoDb 能够:

  1. 在一个集合中存储这么多数据
  2. 汇总并输出刷新数据的结果,以在单独的集合中推动业务洞察力,供提供客户业务离散方面的服务使用

欢迎任何反馈,我想了解使用 MongoDb 与其他技术相比,用于数量数据存储和使用的限制在哪里。

提前致谢

【问题讨论】:

    标签: mongodb aggregation-framework mongodb-aggregation


    【解决方案1】:

    MongoDB 中的集合大小没有限制(在副本集或分片集群中)。我认为您将此与达到无法分片的最大集合大小混淆了。

    MongoDB Docs: Sharding Operational Restrictions

    对于您计划拥有的数据量,从一开始就使用分片集群是有意义的。

    【讨论】:

    • 感谢@Kiril,对于我计划在聚合中使用的大量文档,您认为 MongoDb 可以处理吗?我知道存储大小只是我需要考虑的一个方面。谢谢,马特
    • 您的聚合查询性能将取决于特定查询返回的数据量以及可用于支持该查询的索引。如果您的报告需要梳理 18TB 的数据,以便查询成为快速数据,则必须在内存中或快速 SSD 上。
    猜你喜欢
    • 2015-02-17
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 2020-01-10
    相关资源
    最近更新 更多