zoukankan      html  css  js  c++  java
  • mongoDB系列之(三):mongoDB 分片

    1. monogDB的分片(Sharding)

    分片是mongoDB针对TB级别以上的数据量,采用的一种数据存储方式。

    mongoDB采用将集合进行拆分,然后将拆分的数据均摊到几个mongoDB实例上的一种解决方案。

    分片模式下,mongoDB实例分为三种:

    shards: 存储数据的mongoDB

    config: 保存设定的monogDB

    routing(mongos): 负责分片处理的mongoDB

    2. 配置分片

    2.1 试验环境

    1 mongos, 1 config, 2 shard

    config:  test166:27019
    mongos:  test166:27020
    shards:  test166:27017,test167:27017

    mongoDB都是单台构成,没有使用副本集

    2.2 启动config

    在test166上启动config实例,端口27019

    # mongod --configsvr --dbpath /var/lib/mongo-c --port 27019

    2.3 启动 mongos

    在test166上启动routing实例,端口27020

    # mongos --configdb test166:27019 --port 27020

    2.4 启动 shards

    在test166和test167上分别启动shards

    # /etc/init.d/mongod start

    2.5 添加shards

    连接monogs

    # mongo --port 27020

    添加shards

    mongos> use admin
    mongos> sh.addShard( "test166:27017" )
    mongos> sh.addShard( "test167:27017" )

    确认

    mongos> db.runCommand({listshards:1})

    2.6 开启分片

    对指定的库开启sharding

    mongos> sh.enableSharding("new")

    指定分片的片键

    片键有两种模式:hash模式,range模式

    2.6.1 使用hash模式分片

    mongos> sh.shardCollection( "new.person", { "_id": "hashed" } )

    插入数据确认

    mongos> use new
    mongos> for(var i=0;i<10;i++){db.person.insert({name:"bluejoe"+i});}
    

    使用hash模式,记录在各片上的分布比较平均

    2.6.2 使用range模式分片

    mongos> sh.shardCollection( "new.person2", { "name": 1 } )

    插入数据确认

    mongos> use new
    mongos> for(var i=0;i<100;i++){db.person2.insert({name:"jack"+i});}

    2.7 确认分片情况

    mongos> sh.status()
    或
    mongos> db.printShardingStatus()

    在各shard上确认数据分布情况(hash模式)

    > use new
    > db.person.find()
    

    test166:27017上的数据分布情况

    test167:27017上的数据分布情况

    2.8 其他

    要分片的库原来有数据的情况下,先建index,然后再指定片键

    mongos> sh.enableSharding("new2")
    mongos> use new2
    mongos> db.user2.createIndex( { "username": 1 } )
    mongos> sh.shardCollection( "new2.user2", { "username": 1 } )
    

    3. 后记

    本次测试环境使用mongoDB单台构成,没有使用副本集,使用副本集时的分片配置和上面类似,在此不详述。

  • 相关阅读:
    学生管理系统(2:添加主界面窗口)
    Qfile
    QButtonGroup
    comboBox
    QLineEdit
    QMessageBox
    实现简单的计算器(控制器代码)
    实现简单的计算器(计算功能模块实现)
    网络编程基础【HTML编程】
    网络编程基础【正则表达式】
  • 原文地址:https://www.cnblogs.com/ee900222/p/mongodb_3.html
Copyright © 2011-2022 走看看