当一个分片集群中一个分片集合的数据分布不均衡时,balancer进程会把拥有最多chunk的shard上的chunk迁移到拥有最少chunk的shard上,直到这个集合的数据分布均衡为止。例如,集合user在shard 1上拥有100个chunk,在shard2上拥有50个chunk,balancer进程会将shard1上的chunk迁移到shard2,直到两个shard上的chunk数量保持均衡位置。
向一个分片集群中添加或删除shard都会影响整个集群的均衡性。
Primary shard
每个数据库都会有一个primary shard存储这个数据库中所有未被分片的集合数据。
MongoDB Sharding技术的应用场景:
A.如果数据集data set大小将要或者已经超过了单个MongoDB实例的容量大小。
B.活动的工作集working set大小将要超过最大物理内存大小
C.单个MongoDB实例无法满足频繁的写操作。
如果以上三种情况没有满足,不需要部署sharding,只会增加复制度,同时在设计数据模型时,也要考虑到以后作分片的情况。
Data Quantity Requirements
Sharding只会在数据量比较大的情况下才会发挥作用,默认的chunk大小是64MB,只有在满足特定条件下,balancer进程才会将数据迁移到其他shard上,否则数据会一直存储到单个shard上。
Broadcast Operations and Targeted Operations
通常情况下,分片集群处理客户端的请求有以下另种方式:
将操作请求广播到整个集群中所有包含集合中的文档的shard上。
基于shard key将操作请求定位到单个shard或一组shard
CentOS 编译安装 MongoDB与mongoDB的php扩展
CentOS 6 使用 yum 安装MongoDB及服务器端配置
Ubuntu 13.04下安装MongoDB2.4.3
《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]
基于CentOS 6.5操作系统搭建MongoDB服务 uxidc.com/Linux/2014-11/108900.htm