文档章节

MongoDB分片

晨曦断罪
 晨曦断罪
发布于 2016/12/28 12:47
字数 567
阅读 8
收藏 0

1. 建立一个MongoDB集群(详见MongoDB集群搭建)

MongoDB集群搭建

2.分片

  1. 要对一个集合分片,首先要对这个集合的数据库启用分片

    sh.enableSharding(“test”)

  2. 对集合分片时需要指定片键。只有被索引过的键才能成为片键

    db.user.ensureIndex({“username”:1})

  3. 依据username进行分片

    sh.shardCollection(“test.users”,{“username”:1})
    也可以使用复合片键
    sh.shardCollection(“test.users”,{“username”:1,”age”:1})
    //但当给定username的值时,可以快速路由,但是,若给定age,则需要查询全部分片

3.查询

包含片键的查询可以使mongos直接路由到制定分片,被称之为定向查询
而不包含片键的查询使得mongos不得不将查询请求在每个分片上查询一次,将结果聚合起来返回客户端,被称之为分散-聚集查询。

4.块拆分

当多mongos启动时,有些mongos只需要负责路由,而并不需要拆分。所以可以在启动mongos时使用 –nosplit 关闭块拆分

5.均衡器

负责数据迁移,查看config.locks集合,可知那个是均衡器

db.locks.findOne(“_id”:”balancer”);

6.选择片键的标准

  • 计划做多少个分片
  • 是否为了减少读写延迟
  • 是否为了增加吞吐量
  • 是否为了增加系统资源

7.数据分发

常用的片键通常有三种

  • 升序片键
  • 随机分发的片键
  • 基于位置的片键

如果追求数据加载速度的极致,那么散列片键是最佳选择
创建一个三列片见,首先要创建散列索引

db.user.ensureIndex({“username”:”hashed”})
sh.shardCollection(“app.users”,{“username”:”hashed”})

使用GridFS则非常适合选择这种片键

db.fs.chunks.ensureIndex({“files_id”:”hashed”})
sh.shardCollection(“test.fs.chunks”,{“files_id”:”hashed”})

7.流水策略

当有一些更强大的服务器,我们则希望能它能承受更大的负载
为实现这种策略,需将最大范围的块指定在ssd分片上

sh.addShardTag(“shard-name”,”ssd”)
sh.addTagRange(“dbName.collName”{“_id”:ObjectId()}),
…{“_id”:MaxKey},”ssd”)
use config
var tag = db.tags.findOne({“ns”:”dbname.colname”},
“max”:{“shardKey”:”MaxKey”})
tag.min.shardKey = ObjectId()
db.tags.save(tag)

8.多热点

在集群中,分片最为高效;在单个mongod中写请求为升序更高效
可以使用复合片键,第一个为势较低的键,第二个为升序键。完美

© 著作权归作者所有

晨曦断罪
粉丝 0
博文 16
码字总数 12398
作品 0
石家庄
程序员
私信 提问
mongodb安装、连接,mongodb用户管理、创建集合、数据管理、备份恢复,副本集介绍、搭建、测试,分片介绍、搭建、测试,php的mongodb扩展、mongo扩展

21.26 mongodb介绍 21.27 mongodb安装 21.28 连接mongodb 21.29 mongodb用户管理 21.30 mongodb创建集合、数据管理 21.31 php的mongodb扩展 21.32 php的mongo扩展 21.33 mongodb副本集介绍 ...

tobej
07/16
57
0
在CentOS7上部署MongoDB分片群集

MongoDB分片概述 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读...

xuyan184004
2018/09/19
0
0
mongodb 集群搭建 分片+副本集

mkdir -p /home/mongodb/conf mkdir -p /home/mongodb/mongos/log mkdir -p /home/mongodb/config/data mkdir -p /home/mongodb/config/log mkdir -p /home/mongodb/shard1/data mkdir -p /h......

674591788
2018/06/26
0
0
mongodb 简单部署方案及实例

第一节 准备工作 一 安装mongodb 我这里选用rehl 5.6作为其运行载体。 1. 下载mongodb的linux版本(注意32位和64位的区别),下载地址:http://www.mongodb.org/downloads # wget http://fast...

猪猪
2012/04/12
20.8K
4
21.36 mongodb分片介绍

21.36 mongodb分片介绍 分片就是将数据库进行拆分,将大型集合分隔到不同服务器上。比如,本来100G的数据,可以分割成10份存储到10台服务器上,这样每台机器只有10G的数据。 通过一个mongos的...

脑洞老湿_
2017/10/20
22
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部