MongoDB Sharding

2018-02-03  本文已影响93人  geekpy

介绍

Sharding Key

Sharding的优势

读写效率

由于我们可以将相应的写操作分布在不同的shard上,可以更加均匀分担写压力,因此写的性能一般情况下会得到提高。
读取操作时,如果query中包含shard key对应的field,或者以这个field为prefix的compound index key

存储容量

由于是水平分割,因此几乎可以无限扩容,不需要担心某个collection过大而无法单机存储的问题

高可用

从MongoDB3.2开始,config server已经支持replicaset模式,这样的话sharding节点和config节点均可以通过replicaset来保证高可用。

关于Sharding的考虑

由于sharding的不可逆性,所以最好是先不使用sharding,在业务运行一段时间后,根据业务的情况来做决定,这主要需要考虑如下因素:

Sharding策略

Sharding有两种策略:一种是ranged sharding; 另一种是hashed sharding。

Splitting and Migration

Splitting

splitting就是当chunk中存储的数据量超过设定的chunk size时(默认64M),将其分裂成两个chunk,具体参考chunk split

Splitting

Migration

数据迁移,是将某一个shard中的chunk数据迁移到另一个shard上。迁移有两种方式,一种是手动迁移,一种自动迁移。大部分时候,MongoDB会通过balancer进行自动迁移,以保持chunk在shard上能够均匀分布。手动迁移仅用于某些特定场景如bulk insert。

关于balancer

balancer是一个后台进程,它会自动判断含有最多chunk的shard和最少chunk的shard之间的chunk数量差达到了设定的threshold,如果达到了,就会自动进行数据迁移。


Balancing
上一篇下一篇

猜你喜欢

热点阅读