MongoDB聚合性能

时间:2016-08-09 01:25:33

标签: mongodb aggregation-framework mongodb-aggregation

我正在努力解决有关使用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)的数据存储在一个集合中。

根据MongoDb 32Tb(34,359,738,368 kb)的容量,我认为它的容量为58.63%。

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

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

我是否过于雄心勃勃地在这里预测MongoDb能够:

  1. 将大量数据存储在集合中
  2. 汇总并输出刷新数据的结果,以便在单独的集合中推动业务洞察,以便为提供客户业务的离散方面的服务消费
  3. 欢迎任何反馈,我想了解使用MongoDb的限制,而不是其他技术用于数量数据的存储和使用。

    提前致谢

1 个答案:

答案 0 :(得分:0)

对MongoDB中的大型集合(在副本集或分片集群中)没有限制。我认为你在达到无法分片的最大集合大小时会混淆它。

MongoDB Docs: Sharding Operational Restrictions

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