mongodb最佳实践

官方文档对限制的描述:

https://docs.mongodb.com/manual/reference/limits/

表数据不可能无限大,主要基于,

1,表大了运维会带来困难,比如balance。备份还原。副本集同步。冷启动。刷脏页。传输带宽。这些需要全量高IO操作的都会需要很长时间,影响可用性。

2,表大了不可避免的对性能有影响,主要看热数据在内存中的容量。

一些建议:

表数据不可以无限大下去。在实际使用中我们也发现,数据量大之后有些运维动作会很不方便,最典型的有:

  • 重新同步从节点
  • 从备份恢复数据

所以为了日常运维方便,建议数据量维持在一定量之内。

这个量我们的经验值是每个节点2TB。注意是节点,不是表。

再注意这里说的2TB是数据容量,不是存储容量。由于压缩的存在,存储容量会比数据容量小得多。

数据容量可以在各个库上执行db.stats().dataSize获得。

副本集每个实例建议数据不要超过4T,数据量大备份恢复时间会很长

最大文档大小有助于确保单个文档不会使用过多的RAM或在传输过程中占用过多的带宽。要存储大于最大大小的文档,MongoDB提供了GridFS API。

MongoDB支持BSON文档嵌套的级别不超过100。

单表行数,如果做限制参数,那不要超过2的32次方,就是42亿。如果不设定现在参数,那么默认行数不限制。

If you specify a maximum number of documents for a capped collection using the max parameter to create, the limit must be less than 2 32 documents.

If you do not specify a maximum number of documents when creating a capped collection, there is no limit on the number of documents.

-----------------------------------------------------------------------------------------------------------------------------------------------------

预估项目mongo集群规模:

获取单个文档大小,单位 bytes

PRIMARY> Object.bsonsize(db.result.findOne())
9739  完全数据一个document差不多9KB大小,如果6亿行,那就是5T大小

一天50w的扫描量计算,

1年2亿条数据,那就是1.6T的数据,5个分片,每个分片就是300G数据

1个季度5000万条数据,总共0.4T数据,400多G数据,分5片,每片80G数据,1000万行。

mongos> Object.bsonsize(db.sha256_test.findOne())
329   只是白名单数据一个document差不多329b

白名单30亿行数据以上,分5片,每片6亿行,一行329b大小,一共180G大小,总共差不多1T的数据。

如果内存按表数据大小的30%给与,那么就是54g

源数据是,7片,一片300g,一共2T数据。

综上,

1季度,日扫描50w量的数据+白名单历史数据,一共0.4T+1T=1.4T数据。

单分片行数1000万+6亿行=6亿行数据,单分片大小80G+180G=260G数据。分5片

mongo qps 预估400到500,结合s目前近100的qps使用6G内存,申请8G内存先跑起来观察产品运行情况

结论:

需要集群环境:

2个路由节点,3个配置节点,5个分片节点,每组分片是一个副本集

集群配置:

路由节点与配置节点可以按照标准配置

分片节点,8G内存,500G磁盘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值