分片,简单来说就是将海量数据做水平扩展的数据库集群系统,通过多台服务器分配数据。
使用分片技术的根本原因在于垂直扩展数据库的费用过于昂贵并且有扩展上限;其次水平扩展可以提供更好的性能,单个服务器的配置可以不是很高并且磁盘IO的压力相对来说更小。
1、使用分片之前要先了解一下基本的术语:
- chunk
mongodb的数据分块称为chunk,每个chunk都是collection中一段连续的数据记录,通常是200MB,超出则生成新的数据库。
- shard server
存储实际数据的分片,每个shard可以是一个mongod实例或者是一组Replica Set。
- config server
存储数据时,需要为每个collection指定一个shard key,shard key决定collection的哪条数据属于哪个chunk。config server就是用来存储所有shard节点的配置信息、每个chunk的shard key范围、chunk在各shard的分布情况、集群中所有DB和collection的sharding配置信息。
- route process
前端路由,给客户端访问。通过访问前端路由询问config server需要到哪个shard上查询或保存数据,再连接相应的shard进行操作,然后将操作结果返回给客户端。
2、分片配置准备
测试过程中,发现4.0版本只支持Replica Set的分片,不支持单一的mongodb实例,因此换用3.2版本的进行测试。