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单台构成,没有使用副本集,使用副本集时的分片配置和上面类似,在此不详述。
mongoDB系列之(三):mongoDB 分片的更多相关文章
- Mongodb系列:初识Mongodb
一.背景: 月初进行了期末考试非常荣幸可以參加到了考试系统维护中(详情请阅读:<那些年我们一起參加的活动:15年上半年考试系统维护总结>)!主要负责server维护,在维护期间对Mongo ...
- MongoDB系列:把mongodb作为windows的服务来启动
1.首先切换到mongodb安装目录下的bin目录,在控制台直接运行以下命令 "C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe" ...
- MongoDB系列:三、springboot整合mongoDB的简单demo
在上篇 MongoDB常用操作练习 中,我们在命令提示符窗口使用简单的mongdb的方法操作数据库,实现增删改查及其他的功能.在本篇中,我们将mongodb与spring boot进行整合,也就是在j ...
- MongoDB系列(三):增删改查(CURD)
上篇讲了MongoDB的基础知识,大家应该对MongoDB有所了解了,当然真正用的还是curd操作,本篇为大家讲解MongoDB的curd操作. 1.数据库操作 #.增 use config #如果数 ...
- MongoDB系列—— Window 搭建Mongodb 集群
Mongodb的集群方式的搭建有三种:Replica Set / Sharding / Master-Slaver.这里只说明最简单的集群搭建方式(Replica Set) Replica Set M ...
- Mongodb学习笔记三(Mongodb索引操作及性能测试)
第三章 索引操作及性能测试 索引在大数据下的重要性就不多说了 下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载.官网下载地址:http://www.robomo ...
- MongoDB系列一:MongoDB文档型数据库特点介绍
一.MongoDB数据库的存储特点: 1.MongoDB是文档型数据库,存储的是文档(将json二进制化为Bson存储): 2.存储的每篇文档都可以有自己独特的存储结构,颠覆了传统数据库必须按照表和列 ...
- MongoDB系列[2]:MongoDB导入导出以及数据库备份
PS: 以下所有操作都是基于MongoDB自带的工具进行的,所以操作时一定要手动切换到Mongodb的bin目录下面,并且使用管理员权限运行命令 导出工具 mongoexport 概念: mongoD ...
- MongoDB系列二:MongoDB安装过程
一.MongoDB安装,以Linux系统安装为例:(下载:www.mongodb.org 注意使用stable版本) 1.下载最新版本的MongoDB安装包,wget http://fastdl.mo ...
- MongoDB学习记录(三) - MongoDB的"增查改删"操作之"查"
查找使用的方法: db.collection.find() 查找所有文档 db.collection.find({})或者db.collection.find({}) 指定键值对 db.collect ...
随机推荐
- C基础 旋转数组查找题目
前言 - 引言 题目: 一类有序数组旋转查值问题. 例如: 有序数组 [ , , , , , , , , ] 旋转后为 [ , , , , , , , , ] 如何从中找出一个值索引, not fou ...
- RobotFramework基本用法(二)
双击打开C:\Python27\Scripts目录下的 ride.py 一,定义变量,打印 1,右键File-->New Poreject,在项目下右键New suite,在套件下右键 New ...
- js API
从基础知识JS-web-API js基础知识:ECMA 262标准 js-web-API: w3c标准 W3c标准中关于js的规定有 DOM操作.BOM操作.事件绑定.ajax请求(包括http协议) ...
- style一张图--openlayers
- 洛谷P1286 两数之和
这个题.. 刚开始没看见输入若干行,所以有的点就.. 令 m = n * (n - 1) / 2 已知 s = {s (1), s(2), ..., s(m)}, s(i) <= s(i+1) ...
- opencv(3)视频操作
视频中最常用的就是从视频设备采集图片或者视频,或者读取视频文件并从中采样.所以比较重要的也是两个模块,一个是VideoCapture,用于获取相机设备并捕获图像和视频,或是从文件中捕获.还有一个Vid ...
- javaweb作业二
作业:1.书写servlet的类架构及重要方法.(ServletConfig,Servlet)<---GenericServlet(getInitParameter(String str);in ...
- sqlserver sp_spaceused用法
sp_spaceused显示行数.保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间. 语法sp_spaceused [[@objname =] 'objnam ...
- MySQL学习笔记:repeat、loop循环
一.repeat循环 # ---- repeat ---- DELIMITER $$ CREATE PROCEDURE test_repeat() BEGIN ; REPEAT ; UNTIL a E ...
- JDK安装及配置 (tar.gz版)和tomcat的安装
jdk下载: 我们这里下载了jdk-8u65-linux-x64.tar.gz. 官网:http://www.oracle.com/technetwork/java/javase/downloads/ ...
