MongoDB分片机制
为什么需要分片
应用层实现的手动分片:
MongoDB分片组件
mongos路由器负责将应用程序的请求指引到合适的分片上。注意到mongos路由器是在应用程序端实现的,因此分片的配置信息需要保存在另外的服务器上,即配置服务器。mongos通过两阶段提交同步更新最新的分片信息。
核心分片操作
Mongo的分片是基于集合的分片,即一个集合中的文档可以分布在不同的机器上。在对集合进行分片时,必须声明一个或多个字段作为分片键,如果选择_id,那么文档会基于对象ID的范围进行分布,由于Mongo的_id字段与时间戳相关,导致该字段是递增的,这样会使得分片不够随机,所以我们可以联合其他字段,比如usernama,与_id组成复合分片键。在讲具体的分片操作之前,我们需要明晰一个概念:
块
块是一个分片中一段连续的分片键的范围。注意,块是一个逻辑概念,块内的分片键是连续的,但物理上,块并不是连续的文档。
比如,如果一个从harris到norris的块存在于分片A上,这代表可以在分片A上找到这个范围的键,而并不代表从harris到norris的文档在分片A上是连续存储的。
拆分与迁移操作
在初始化分片集群时,只有一个块,这个块的范围覆盖了整个分片集群,随着数据的插入,我们不断更新这个块的范围的最大值和最小值。当块大小达到阈值(默认块的最大大小为64MB和100000个文档,先达到哪个就按哪个作为阈值),就会对块进行拆分,拆分很简单,就是对原来的范围一分为二,分为两个块,拆分过程不涉及任何的物理移动,仅仅是逻辑上对块的元数据进行更新。
当这个分片中的块越来越多时,就会由一个名为均衡器的软件进程,将块在不同分片上进行物理迁移。通常来说,当集群中拥有块最多的分片与拥有块最少的分片的块数差大于8时,均衡器就会进行一次均衡处理,块从块较多的分片迁移到块少的分片,直到两个分片的块数大致相等为止。
MongoDB分片机制相关推荐
- MongoDB分片实战
1. 集群搭建 1.1环境准备 Linux环境 主机 OS 备注 192.168.32.13 CentOS6.3 64位 普通PC 192.168.71.43 CentOS6.2 64位 服务器,NU ...
- 搭建mongodb分片
搭建mongodb分片 http://gong1208.iteye.com/blog/1622078 Sharding分片概念 这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在shardi ...
- 搭建MongoDB分片集群
在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...
- MongoDB 分片的原理、搭建、应用
一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这 ...
- mongodb分片概念和原理-实战分片集群
一.分片 分片是一种跨多台机器分发数据的方法.MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署. 问题: 具有大型数据集或高吞吐量应用程序的数据库系统可能会挑战单个服务器的容量.例如 ...
- Centos6.5搭建mongodb分片
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.7.tgz 是我使用的版本 1.准备3个实例: 10.0.0.13 1 ...
- 2021-05-12 MongoDB面试题 什么是MongoDB分片集群
什么是MongoDB分片集群? Sharding cluster是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建.sharding分片很好的解决了单台服务器磁盘空 ...
- MongoDB 分片总结
基础篇(能解决工作中80%的问题): MongoDB的概述.应用场景.下载方式.连接方式和发展历史等 MongoDB数据类型.重要概念以及shell常用指令 MongoDB文档的各种增加.更新.删除操 ...
- MongoDB分片(Sharding)技术
C/C++Linux服务器开发/后台架构师知识体系整理 分片(sharding)是 MongoDB 用来将大型集合分割到不同服务器(或者说一个集群)上所采用的方法.尽管分片起源于关系型数据库分区,但 ...
- MongoDB 分片的原理、搭建、应用 (转)
一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这 ...
最新文章
- java中List深拷贝的简单实例
- GPT-3 不够 Open,BigScience 构建开放语言模型,规模小 16 倍
- 产品设计的从0到1全流程:以优惠券为例
- 程序猿的日常——JVM内存模型与垃圾回收
- 爱因斯坦鲜为人知的另一面
- iPhone 12系列详细屏幕参数前瞻:首批只有三星、LG屏幕 均为OLED面板
- [题解]诸侯安置(dp+组合)
- 【图像隐写】基于matlab GUI变换域的可逆数字水印系统设计【含Matlab源码 1813期】
- 华为手机服务器位置,华为手机怎么查看云服务器地址
- 移动机顶盒migu-jt-u1 unt400c刷机 hi3798 root
- Win10系统如何修改无线MAC地址的几种方法
- css绘制三角形以及梯形
- 最近发现一个不错的网站,可以用它来赚钱
- Windows10永久关闭系统更新
- 顾客价值层级-名词解释06
- 大数据处理——Java
- 问题 C: 网格涂色
- Java程序员的互联网转型之路
- 推荐书籍android开发
- Linux系统学习笔记二