我正在努力解决有关使用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能够:
欢迎任何反馈,我想了解使用MongoDb的限制,而不是其他技术用于数量数据的存储和使用。
提前致谢
答案 0 :(得分:0)
对MongoDB中的大型集合(在副本集或分片集群中)没有限制。我认为你在达到无法分片的最大集合大小时会混淆它。
MongoDB Docs: Sharding Operational Restrictions
对于您计划拥有的数据量,从一开始就使用分片群集是有意义的。