MongoDB聚合表现能力

MongoDB aggregation performance capability

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

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

如果我有 65,000 个客户,每个客户每天(平均)提供 350 个销售交易,最终每天创建的文档约为 22,750,000 个。当我说销售交易时,我指的是一个对象,它类似于带有抬头和行项目的发票。我拥有的每个文档平均为 2.60kb。

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

基于上述,我估计一年内有 8,392,475,0,00(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 中的集合没有限制(在副本集或分片集群中)。我认为您将此与达到无法分片后的最大集合大小混淆了。

MongoDB Docs: Sharding Operational Restrictions

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