分片

提高集群处理的性能,可同时提高应用的读写性能

  • 输入sh.status()命令会显示当前分片的运行状况, 此报告包括哪个分片是数据库的主分片以及分片中的分块分布

  • 片键一般选择的是索引,当查询时应该利用索引进行查询,这样mongos会将查询发往对应分片,而不是发送到所有的分片上

分片的几个成员


1.配置服务器
配置服务器存储群集的元数据和配置设置,配置服务器在 config 数据库 中存储了集群的元信息。 从MongoDB 3.4开始,配置服务器必须部署为副本集(CSRS)。而且最好不要手动修改config数据库中的数据config数据库包含包含分片群集元数据的集合。当元数据发生更改时,
MongoDB会将数据写入配置数据库,例如在块迁移或块拆分之后。如果三个节点的集群中一个或者两个配置服务器不可用,集群的元信息将变为 可读,
你还可以从分片中读写信息,但是数据块的迁移以及数据块的分裂在所有配置服务器都恢复可用之前不能够进行.---2.mongos轻量级的服务器
它将读写请求分发到分片中.应用并不直接访问分片,mongos实例会缓存从配置服务器得到的路由信息,
当群集有元数据更改时,mongos会更新缓存,例如块拆分或添加分片。3.mongod分片实例
分片是存储了一个集合部分数据的MongoDB实例,每个分片是单独的 mongod 或者是 replica set .
在生产环境中,所有的分片都应该是复制集。MongoDB以 每个集合 为单位使用分片,
你 必须 通过 mongos 访问开启了分片的集合,如果直接连接到某个分片,你只能看到集合的部分数据.
每个分片上的数据并没有特定的顺序.MongoDB并不保证两个连续的数据块会分布在同一个分片上.为了获得更好的性能,最好在任何可能的时候都使用具有特定目标的操作.
虽然有些操作不得不使用广播发送的形式,(比如有的时候需要查询的数据分散在所有的分片上)
你也应该尽可能在进行操作时带有片键来尽可能使用具有特定目标的操作.

主分片

每个数据库都有一个”主分片” 用来存储这个数据库中所有未开启分片的集合的数据.改变集群中的主分片,会影响性能

mongodb的块拆分 和 均衡功能

  • mongodb跟踪集群数据的方式:会将文档分组为块,每个块由给定的片键范围的文档组成,同一片键值的文档必须在同一块中,mongos会记录每个块中插入多少数据,一旦到达阈值(这里有一个概念叫 拆分阈值),就会对块尝试拆分,需要注意的是经过拆分的块可能还在同一分片上

  • mongos进程需要保持尽量稳定,频繁的掉线上线,可能导致块拆分功能的失效,导致超大块的诞生;只要有配置服务器挂了任何一个,拆分请求都会失败,mongos到达阈值后,不停的发送块拆分请求,会导致拆分风暴!

  • mongos还会定期化身为均衡器,用于在不同分片之间移动块,力求使集群的负载更加均衡。前提是只有到达均衡阈值,才会真正数据迁移,数据的迁移是对客户端透明的

Hashed片键的分配策略

哈希片键的可以更均匀的分布数据,缺点就是对于范围查询性能比较差,HASH适合单调增减的field。比如说_id和时间戳

如果集合已包含数据,则必须在使用shardCollection()之前使用db.collection.createIndex()方法在分片键上创建散列索引。如果集合为空,MongoDB将创建索引作为sh.shardCollection()的一部分。以下操作使用散列分片策略对目标集合进行分片。sh.shardCollection(“<database>。<collection>”,{<key>:"hashed" })

从头创建hash分片的步骤

range片键的分配策略

基于范围的分片涉及将数据划分为由分片键值确定的连续范围。 在此模型中,具有“close”分片键值的文档可能位于相同的块或分片中。

具体的范围片键命令,同时也是需要在指定键上有索引的!
sh.shardCollection( "database.collection", { <shard key> } )

从头创建range分片的步骤

Mongodb分片学习相关推荐

  1. MongoDB简单学习小总结

    MongoDB学习 背景:互联网发展开始只有少量的数据,一台服务器足够,使用的时候得进行数据备份以应对大量的读取和宕机.之后添加缓存层,提升查询速度. MongoDB具有二级索引.范围查询.排序.聚合 ...

  2. MongoDB分片实战

    1. 集群搭建 1.1环境准备 Linux环境 主机 OS 备注 192.168.32.13 CentOS6.3 64位 普通PC 192.168.71.43 CentOS6.2 64位 服务器,NU ...

  3. MongoDB分片(Sharding)技术

    C/C++Linux服务器开发/后台架构师知识体系整理 分片(sharding)是 MongoDB 用来将大型集合分割到不同服务器(或者说一个集群)上所采用的方法.尽管分片起源于关系型数据库分区,但 ...

  4. springboot和mongoDB分片配置 集群配置

    最近在开发的过程中,遇到mongoDB与springboot集群过程中的集群及分片链接的配置,以及mongoDB通过后台的方式创建索引及联合索引,在网上搜了下没有具体的配置举例,在项目中遇到之后,就顺 ...

  5. mongodb分片扩展架构

    目录 一.简介 二.分片集群 三.数据分布策略 四.Mongos访问模式 五.Config元数据 六.分片均衡 参考文档 一.简介 MongoDB目前3大核心优势:『灵活模式』+ 『高可用性』 + 『 ...

  6. MongoDB开发学习开天辟地,经典入门

    如果你从来没有接触MongoDB或对MongoDB有一点了解,如果你是C#开发人员,那么你不妨花几分钟看看本文.本文将一步一步带您轻松入门. 阅读目录 一:简介 二:特点 三:下载安装和开启服务器 四 ...

  7. 搭建mongodb分片

    搭建mongodb分片 http://gong1208.iteye.com/blog/1622078 Sharding分片概念 这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在shardi ...

  8. 搭建MongoDB分片集群

    在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...

  9. MongoDB 分片的原理、搭建、应用

    一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这 ...

  10. mongodb 分片群集配置 及数据迁移

    配置mongodb分片群集(sharding cluster) Sharding cluster介绍 这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monod ...

最新文章

  1. 信息科学部鼓励科学家更多瞄准“原创”研究
  2. 在等于操作中无法解决“SQL_Latin1_General_CP1_CI_AS”和“Latin1_General_CI_AS”之间的排序规则冲突
  3. 全球及中国铝行业产销需求与未来前景预测分析报告2022-2028年版
  4. Linux安装ipvsadm工具查看ipvs
  5. 在SQL Server里如何进行页级别的恢复
  6. Oracle数据库升级与补丁
  7. kafka自动提交offset失败:Auto offset commit failed
  8. 认识Linux下的各种系统服务
  9. java解压服务器文件夹,java获取远程服务器上的文件夹
  10. ASP.NET----实现点击按钮或链接弹出登录对话框
  11. 在计算机rwn代表,基于改进和RWn-SVM的化工过程故障快速诊断.pdf
  12. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_20-页面静态化-静态化测试-填写页面DataUrl...
  13. 贝叶斯派的概率图模型概述(总)
  14. 数据库的第一范式、第二范式、第三范式,BCNF范式
  15. js中函数的this指向
  16. 优衣库真的是一家技术驱动型公司?
  17. 推荐一个在线办公协作的
  18. java实现订单未支付失效_Java微信支付之关闭订单
  19. 电脑黑客用3D打印钥匙解开高安全性能手铐
  20. Cookie.js 源码解析

热门文章

  1. 高分子专业计算机建模,高分子与计算机模拟.doc
  2. 致远OA webmail.do任意文件下载 CNVD-2020-62422
  3. Centos7 搭建 Svn+ReviewBoard
  4. Hola~ 一款基于Electron的聊天软件
  5. 工信部,映射,映射端口,热备,磁盘,虚拟磁盘,冗余,磁盘阵列技术,廉价冗余磁盘阵列 ,RAID 0,RAID1 ,RAID 3,RAID 5,RAID 6 名词解释
  6. [2018国家集训队][UOJ449] 喂鸽子 [dp+组合数学]
  7. 大黑熊丨逗比与正经的对话描写
  8. java 二进制 base64编码_java自定义实现base64编码转换
  9. 使用Hex view编写脚本生成特定格式刷写文件
  10. 入门级测试Kotlin实现PopWindow弹窗代码