这是一种将海量的数据水平扩展的数据库集群系统数据分表存储在sharding 的各个节点上使用者通过简单的配置就可以很方便地构建一个分布式MongoDB 集群。 MongoDB 的数据分块称为 chunk。每个 chunk 都是 Collection 中一段连续的数据记录通常最大尺寸是 200MB超出则生成新的数据块。

这是一种将海量的数据水平扩展的数据库集群系统数据分表存储在sharding的各个节点上使用者通过简单的配置就可以很方便地构建一个分布式MongoDB集群。

MongoDB的数据分块称为chunk。每个chunk都是Collection中一段连续的数据记录通常***尺寸是200MB超出则生成新的数据块。
要构建一个MongoDBShardingCluster需要三种角色

1、ShardServer

即存储实际数据的分片每个Shard可以是一个mongod实例也可以是一组mongod实例构成的ReplicaSet。为了实现每个Shard内部的auto-failoverMongoDB官方建议每个Shard为一组ReplicaSet。
2、ConfigServer
为了将一个特定的collection存储在多个shard中需要为该collection指定一个shardkey例如{age:1}shardkey可以决定该条记录属于哪个chunk。ConfigServers就是用来存储所有shard节点的配置信息、每个chunk的shardkey范围、chunk在各shard的分布情况、该集群中所有DB和collection的sharding配置信息。
3、RouteProcess
这是一个前端路由客户端由此接入然后询问ConfigServers需要到哪个Shard上查询或保存记录再连接相应的Shard进行操作***将结果返回给客户端。客户端只需要将原本发给mongod的查询或更新请求原封不动地发给RoutingProcess而不必关心所操作的记录存储在哪个Shard上。
下面我们在同一台物理机器上构建一个简单的ShardingCluster架构图如下

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第1张

创建数据目录和日志目录

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第2张

启动ShardServer实例1和实例2

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第3张

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第4张

启动ConfigServer

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第5张

启动RouteProcess

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第6张

mongos启动参数中chunkSize这一项是用来指定chunk的大小的单位是MB默认大小为200MB为了方便测试Sharding效果我们把chunkSize指定为1MB。

配置Sharding

接下来我们使用MongoDBShell登录到mongos添加Shard节点

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第7张

验证Sharding正常工作

我们已经对test.users表进行了分片的设置下面我们们插入一些数据看一下结果

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第8张

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第9张

我们看一下磁盘上的物理文件情况

MongoDB实战——Sharding 分片(上)(MongoDB分片)  MongoDB 第10张

看上述结果表明test.users集合已经被分片处理了但是通过mongos路由我们并感觉不到是数据存放在哪个shard的chunk上的这就是MongoDB用户体验上的一个优势即对用户是透明的。

本文出自 “phper-每天一点点~” 博客,请务必保留此出处http://janephp.blog.51cto.com/4439680/1330656

转载请说明出处
知优网 » MongoDB实战——Sharding 分片(上)(MongoDB分片)

发表评论

您需要后才能发表评论