mongodb sharding 机制

来源:互联网 发布:淘宝导航条改颜色 编辑:程序博客网 时间:2024/04/30 09:04
用过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。就不会再往该分片迁移数据。
原创粉丝点击