这个取决于几方面:
- 你主机的配置,是性能比较好的物理机,还是性能较一般的虚拟机
- 你业务的访问量,数据量增长情况,你的分片能否抗得住
我们当前的做法你可参考下(你可以根据你实际情况定):
- 单个分片数据量不超过200G(指数据目录大小)
- 原则上尽量使用多分片(单片数据量太大导致迁移等时间更长,更容易出现问题)
- 分片不减少,即分片扩展后,如果数据量不是很大,宁愿复用主机存放分片以节省资源,也不removeShard
- 分片扩容需要提前做,因为增加后,还需要一定的时间才能平衡(之前1T数据平衡了一个月)
- 每分片的写入量在500/S左右
因为配置的是虚拟机,性能不怎么样,所以你需要根据你的实际情况而定。
gaorb 编辑答案
你好! 我的使用场景是物联网,我们现在的机器配置是可以 的,所心说机器问题不考虑,那么 怎么设计一个集群的分片数量呢,一个分片的数据量又是多少 呢,我们的集群分片字段是用一个消息id做分片(消息id 类型是long类型,雪花算法生成),预计要存储36万亿的数据量(36 500 000 000 000),那么 我要怎样去设计Mongodb集群呢,分多少 个集群去承载这些数据,一个集群几个分片.
huangfh 发表新评论
我初步规划是 一个集群 60个分片,一个分片2亿数据,共需要3000套集群来存 36万亿的数据量,不知道 可行不,大神们给些意见。谢谢。
>>> 36000000000000.0/(60*200000000)
3000.0