mongodb sharding 机制

本文介绍了MongoDB中的分片机制,包括分片的基本概念、数据如何通过区间进行迁移、平衡器的工作原理以及分片键的选择等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用过mongodb的都知道sharding,这里介绍下分片机制
首先介绍下区间概念,比如[a,d),这就是一个区间,而mongodb每个分片的点,会有多个这样的区间,随着数据量的增加,分片的区间根据数据量会进行分裂,从而分裂成多个区间,如:[a,d)分裂成[a,c)和[c,d)l两个区间,一旦分片之间的数据量不平衡,那么就会以这个区间为单位,进行迁移。
以下的图示是,分片根据区间进行数据迁移,shard1和shard2,分别迁移了100G的数据给shard3和shard4.
mongodb sharding 机制 - dazuiba_008 - 魂醉的一亩二分地

以下图示是加入分片后,其他分片进行数据迁移,从每个分片分配100G数据给新增的shard5
mongodb sharding 机制 - dazuiba_008 - 魂醉的一亩二分地
平衡器:
如下图:如果两个分片不均衡,相差了2个chunks,就会产生数据迁移,但是过了一段时间后,又有可能不平衡,又产生迁移,这样数据就会产生频繁的,所以,mongodb规定了只有多于9个区间(chunks)的时候,才产生数据迁移,默认每个区间是200M,这个在mongos启动的时候指定参数chunkSize,单位MB,一般不会去人为修改。注:这里的区间可以理解为chunk,最多可以有指定分片键键值个分片,如果有需要的话。
mongodb sharding 机制 - dazuiba_008 - 魂醉的一亩二分地
分片键:指定以那个字段作为分片的列
在选取分片键的时候一定注意自己业务的实际情况而选。
例如低基数的分片键,很难扩展,增长型的分片键,容易热点等等。

以上介绍的平衡器,可以手工的停止,例如一个分片有几个TB,一个只有几十GB,如果有这种非常特殊的需求,可以指定shard的maxsize。就不会再往该分片迁移数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值