MongoDB 分片

高数据量(消耗内存)和高吞吐量(消耗CPU)的数据库应用会对单机的性能造成较大压力,为了解决这些问题,一般采用两种方法:水平扩展(将数据集分布在多个服务器上)和垂直扩展(增加更多的CPU和存储资源)。

当MongoDB存储海量数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们可以通过分割数据,使得数据分布在多个服务器上。

1. 分片集群架构

  • Config Server:存储集群所有节点、分片数据数据信息等元数据信息,默认需要配置3个Config Server节点;
  • Mongos:专用路由进程,提供对外应用访问,将客户端发来的请求准确无误的路由到集群中的一个或一组服务器上,同时会把接收到的响应拼装起来发回客户端;
  • Shard:存储数据,以chunk为单位存储数据;
1.1 Chunk

在Shard内部,MongoDB还会把数据分为chunks,每个chunk包含shard的一部分数据,chunk的产生有两个用途:

  • Splitting:当chunk的大小超过配置的chunk size(默认为64M)时,MongoDB的后台进程会把这个chunk切分成更小的chunk;
  • Balancing:balancer时一个后台进程,负责chunk的迁移,从而均衡各个shard的负载;


    chunk size的选择:小的chunk size数据均衡时迁移速度快,数据分布更均匀,但数据分裂频繁,路由节点消耗更多资源;大的chunk size数据分裂少,但数据块迁移消耗IO资源大,通常选择100M~200M;

2. 数据区分

2.1 分片键 shard key

MongoDB中的数据分片是以集合为基本单位的,集合中的数据通过shard key被分成多个部分。其实shard key就是在集合中选一个键,用该键作为数据拆分的依据。

注意:

  • shard key是不可变的;
  • shard key必须有索引;
  • shard key大小限制512bytes;
  • shard key用于路由查询;
2.2 以范围为基础的分片 Sharded Cluster

Sharded Cluster支持将单个集合的数据分散存储到多个shard上,用户可以指定根据集合内文档的某个字段(shard key)来进行范围分片。

在使用shard key做范围划分的系统中,拥有”相近”shard key的文档很可能存储在同一个数据块中,因此也会存储在同一个分片中。

2.3 基于哈希的分片

对于基于哈希的分片,MongoDB计算一个字段的哈希值,并用这个哈希值来创建数据块。在使用基于哈希分片的系统中,拥有”相近”shard key的文档很可能不会存储在同一个数据块中,因此数据的分离性更好一些。

MongoDB 分片相关推荐

  1. mongodb分片扩展架构

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

  2. 搭建mongodb分片

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

  3. 搭建MongoDB分片集群

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

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

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

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

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

  6. mongodb 启动_精心总结--mongodb分片集群启动与关闭

    概述 网上教程有点坑啊,很多bug,今天刚好涉及到所以抽空整理了下mongodb分片集群启动与关闭方面的教程.希望对大家有点帮助. 基础环境配置 192.168.240.145 测试Nosql服务器1 ...

  7. MongoDb分片集群认证

    本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html), Mong ...

  8. mongodb分片概念和原理-实战分片集群

    一.分片 分片是一种跨多台机器分发数据的方法.MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署. 问题: 具有大型数据集或高吞吐量应用程序的数据库系统可能会挑战单个服务器的容量.例如 ...

  9. 实战:MongoDB 分片集群Shard Cluster 搭建(1台路由节点,3台配置节点,9台分片节点)

    MongoDB 分片集群搭建(分片集群安全认证+SpringBoot访问) 一.搭建要求 一台路由节点 IP地址:192.168.80.110 端口:11111 三套复制集(每个分片节点中的复制集 都 ...

最新文章

  1. Kupu,“document-centric”的开放源码的客户端文本编辑器
  2. 成为数据专家,你只差一个Quick Insights的距离
  3. 中国液化石油气(LPG)市场销售现状与竞争发展策略分析报告2022-2028年版
  4. [NOIP1999] 普及组
  5. 2018 5大技术趋势
  6. JSP Servlet Mysql学生成绩管理系统
  7. HashMap深度解析
  8. c 语言 循环判断语句,C值循环语句(七)
  9. 财务有必要学python吗-8年老财务:财务分析学python就能提高效率?一半人是骗子...
  10. 如何保护 Apple ID 避免被盜用的风险?
  11. 【OpenCV学习笔记】【编程实例】四(获取一个或多个感兴趣区域)
  12. java2实用教程第六版习题答案
  13. shiro安全框架 面试题
  14. 南航计算机学院的实验室,南航计算机科学与技术学院导师介绍:魏欧
  15. [转]用python来开发webgame服务端(5)
  16. 通信笑笑点(2010.08.14)
  17. Ubuntu 命令行 安装 Operator Mono 字体
  18. CVPR 2019 Oral 论文解读 | 百度提出关于网络压缩和加速的新剪枝算法
  19. 学计算机拼音摇号,电脑摇号:作弊100%!
  20. 华为电脑linux系统怎么改win10,例举华为电脑如何重装win10

热门文章

  1. linux c 之使用-O来优化gcc
  2. 用beyond compare解决git不能同步项目重新下载项目然后就行对比解决冲突
  3. 华为鸿蒙vogtloop30pro价格,华为Mate30系列基本确认:首发麒麟985+鸿蒙系统,价格感人!...
  4. python爬取网易云音乐问题陈述_python 网易云音乐 评论爬取问题
  5. python多进程和多线程一起使用_Python3多进程与多线程区别及使用(2.线程)
  6. 大大小小的正六边形嵌套,就会形成像万花筒般有趣的视觉图形!
  7. 渤海发现大油田,证券会提示风险,微博回应流量造假,刘国梁制定史上最严奖惩体系,这就是今天的大新闻。...
  8. 【10.29周一电商,已好】中国日历的至高境界,377张震撼级插画,美到爆!
  9. exchange服务器维护模式命令,Exchange服务器系列课程之七--维护邮件服务器(二)
  10. php xmlhttprequest,DOM XMLHttpRequest