mongoDB系列之(三):mongoDB 分片
来源:互联网 发布:券商研究报告网站 知乎 编辑:程序博客网 时间:2024/04/29 20:12
http://www.cnblogs.com/ee900222/p/mongodb_3.html
1. monogDB的分片(Sharding)
分片是mongoDB针对TB级别以上的数据量,采用的一种数据存储方式。
mongoDB采用将集合进行拆分,然后将拆分的数据均摊到几个mongoDB实例上的一种解决方案。
分片模式下,mongoDB实例分为三种:
shards: 存储数据的mongoDB
config: 保存设定的monogDB
routing(mongos): 负责分片处理的mongoDB
2. 配置分片
2.1 试验环境
1 mongos, 1 config, 2 shard
1
2
3
config: test166:27019
mongos: test166:27020
shards: test166:27017,test167:27017
mongoDB都是单台构成,没有使用副本集
2.2 启动config
在test166上启动config实例,端口27019
1
# mongod --configsvr --dbpath /var/lib/mongo-c --port 27019
2.3 启动 mongos
在test166上启动routing实例,端口27020
1
# mongos --configdb test166:27019 --port 27020
2.4 启动 shards
在test166和test167上分别启动shards
1
# /etc/init.d/mongod start
2.5 添加shards
连接monogs
1
# mongo --port 27020
添加shards
1
2
3
mongos> use admin
mongos> sh.addShard(
"test166:27017"
)
mongos> sh.addShard(
"test167:27017"
)
确认
1
mongos> db.runCommand({listshards:1})
2.6 开启分片
对指定的库开启sharding
1
mongos> sh.enableSharding(
"new"
)
指定分片的片键
片键有两种模式:hash模式,range模式
2.6.1 使用hash模式分片
1
mongos> sh.shardCollection(
"new.person"
, {
"_id"
:
"hashed"
} )
插入数据确认
1
2
mongos> use new
mongos>
for
(var i=0;i<10;i++){db.person.insert({name:
"bluejoe"
+i});}
使用hash模式,记录在各片上的分布比较平均
2.6.2 使用range模式分片
1
mongos> sh.shardCollection(
"new.person2"
, {
"name"
: 1 } )
插入数据确认
1
2
mongos> use new
mongos>
for
(var i=0;i<100;i++){db.person2.insert({name:
"jack"
+i});}
2.7 确认分片情况
1
2
3
mongos> sh.status()
或
mongos> db.printShardingStatus()
在各shard上确认数据分布情况(hash模式)
1
2
> use new
> db.person.
find
()
test166:27017上的数据分布情况
test167:27017上的数据分布情况
2.8 其他
要分片的库原来有数据的情况下,先建index,然后再指定片键
1
2
3
4
mongos> sh.enableSharding(
"new2"
)
mongos> use new2
mongos> db.user2.createIndex( {
"username"
: 1 } )
mongos> sh.shardCollection(
"new2.user2"
, {
"username"
: 1 } )
3. 后记
本次测试环境使用mongoDB单台构成,没有使用副本集,使用副本集时的分片配置和上面类似,在此不详述。
0 0
- mongoDB系列之(三):mongoDB 分片
- MongoDB集群(三) 分片
- MongoDB实战系列之五:mongodb的分片配置
- MongoDB实战系列之五:mongodb的分片配置
- MongoDB实战系列之五:mongodb的分片配置
- MongoDB实战系列之五:mongodb的分片配置
- mongodb测试之分片
- MongoDB之Sharding 分片
- MongoDB集群之分片
- MongoDB之分片
- MongoDB集群之分片
- MongoDB系列之三:java操作MongoDB
- mongodb架构mongodb分片集群与简易搭建方案—ttlsa教程系列之mongodb(六)
- mongodb架构mongodb分片集群与简易搭建方案---ttlsa教程系列之mongodb
- mongoDB 分片(shard)
- Mongodb集群之分片存储
- NoSql之MongoDB 分片管理
- MongoDB 分片
- PL/SQL异常
- Dynamics CRM FORM脚本库加载本地脚本
- Google 的开源技术protobuf 简介与例子
- 各种语言版本实现Stack traces
- 【设计模式】抽象工厂模式
- mongoDB系列之(三):mongoDB 分片
- 设计模式-迭代器模式
- x11 gtk qt gnome kde 之间的区别和联系 .
- Spring Http Basic(基本)和Digest(摘要)验证
- 2016经典搞笑语录:老师我错了,您当场把它砸了吧。
- 申请苹果个人开发者经历
- 试一下
- sprintf()函数的用法总结
- uwsgi 热启动