Mongodb 分片操作 介绍
为什么需要分片操作?由于数据量太大,使得CPU,内存,磁盘I/O等压力过大。当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。
当单个MongoDB节点的数据量过大的时候,我们通常考虑将数据切分为多个shard,也就是切分为多片。
(一)
数据分片之后,整个集群中的MongoDB节点就分为了三类,一类是Router节点,实现前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。一类是Config节点,存储了整个 元数据ClusterMetadata,其中包括 chunk信息,明确知道客户端请求的数据在哪个shard节点上。第三类,shard节点,存储真实的数据,将原有的数据集分片之后平均存储在每一个shard节点之上。(二)
MongoDB的分片机制上建立在副本集概念之上的概念,因为这里每一个shard节点都将组成一个副本集,使每一个shard节点的数据具有高可用性。这里需要补充一个chunk的概念,大数据集首先是切分为多个chunk,之后再将chunk发布到各个shard节点中,就是每一个shard节点的数据都是一个一个的chunk组成的。那么chunk又是基于什么标准切分出来的呢?是这样的,一般在切分chunk的时候,会指定索引,比如age,如果在一个collection中给age这个字段创建了一个索引,那么切分chunk的时候,就以age这个索引来切分,使得1~60岁这个年龄阶段的数据能够根据不同的区间范围,切割为多个chunk,例如1~15岁为一个chunk,15~20岁一个chunk,21~30岁一个chunk,31~60岁一个chunk,每一个chunk的数量大小均等,因此整个collection就被切割成为了3个chunk,chunk信息将会保存至config节点中,而chunk数据将会保存在每一个shard节点中。- (三)
shard分片的衡量的标准,也就是根据哪个索引(切片键)进行切片(让经常写的数据尽量离散分散到各个shard中,让经常读的数据尽量集中到一个shard中)
Mongodb 分片操作 介绍的更多相关文章
- Mongodb 分片操作实战
由于生产环境中一般使用zoomkeeper做config节点的仲裁节点,zoomkeeper会在三个config节点中挑选出一台作为主config节点.且mongos节点一般是两个节点,必须做高可用, ...
- MongoDB 分片操作
添加分片 use admin //添加分片节点,每个分片都是一个副本集[allowLocal:true仅仅开发时才将分片配置到本地,生产时不能这样] db.runCommand({addshard:& ...
- [置顶] MongoDB 分布式操作——分片操作
MongoDB 分布式操作——分片操作 描述: 像其它分布式数据库一样,MongoDB同样支持分布式操作,且MongoDB将分布式已经集成到数据库中,其分布式体系如下图所示: 所谓的片,其实就是一个单 ...
- MongoDB分片介绍
本文简单介绍MongoDB的分片功能,对分片进行了概述,具体的功能详解,后续文章会陆续推出 分片是把数据分配到多个服务器上的一种方式,MongoDB使用分片实现大数据部署以及高吞吐操作. 大数据以及高 ...
- MongoDB:数据库介绍与基础操作
二.部署在本地服务器 在上次的学习过程中,我们主要进行了MongoDB运行环境的搭建和可视化工具的安装.此次我们将学习MongoDB有关的基本概念和在adminmongo上的基本操作.该文档中的数据库 ...
- MongoDB 分片管理(不定时更新)
背景: 通过上一篇的 MongoDB 分片的原理.搭建.应用 大致了解了MongoDB分片的安装和一些基本的使用情况,现在来说明下如何管理和优化MongoDB分片的使用. 知识点: 1) 分片的配置和 ...
- MongoDB 分片的原理、搭建、应用
一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这 ...
- MongoDB基础教程系列--第九篇 MongoDB 分片
1.分片介绍 分片(sharding)是将数据拆分,将其分散存到不同机器上的过程.MongoDB 支持自动分片,可以使数据库架构对应用程序不可见.对于应用程序来说,好像始终在使用一个单机的 Mongo ...
- MongoDB 分片集群技术
在了解分片集群之前,务必要先了解复制集技术! 1.1 MongoDB复制集简介 一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合.复制集提供了数据冗余和高等级的可靠性,这 ...
随机推荐
- 【python3】拷贝U盘文件
一.起因 前天在公众号上,看到一篇如何用python偷偷拷贝别人U盘内容的文章推送,感觉这个想法挺有意思的,可惜是用的是linux系统,而且移动硬盘的盘符也是写死的,不够灵活,于是就自己动手写了一个d ...
- 牛客练习赛31 D 最小相似度
最小相似度 链接 分析: 转化为求1的个数,这样两个串不同的位置的个数就是1的个数.那么对于一个二进制串x,它的贡献就是max{x与s[i]异或后0的个数}=>max{m-x与s[i]异或后1的 ...
- Java Swing:JPanel添加边框
一.JPanel添加不同边框的效果图如下所示 二. 不同边框样式的代码实现 JPanel jpanel = new JPanel(); jpanel.setBorder(BorderFactory.你 ...
- let和var定义变量的区别
使用 let 语句声明一个变量,该变量的范围限于声明它的块中. 可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值. 使用 let 声明的变量,在声明前无法使用,否则将会导致错误. 如果未在 ...
- cogs1538 [AHOI2005]LANE 航线规划
套路题+裸题 首先肯定离线,倒过来处理,删边->加边 连边的时候,如果不连通就连,否则在这两个点的链上打个覆盖标记,查询的时候输出没被覆盖的路径条数 #include<cstdio> ...
- COGS1871 [国家集训队2011]排队(魏铭)
bzoj:http://www.lydsy.com/JudgeOnline/problem.php?id=2141 cogs:http://cogs.pro:8080/cogs/problem/pro ...
- Map.containsKey(String key)
判断key有没有对应的value值有,返回true无,返回false
- 动态加载与插件系统的初步实现(三):WinForm示例
代码文件在此Download,本文章围绕前文所述默认AppDomain.插件容器AppDomain两个域及IPlugin.PluginProvider.PluginProxy3个类的使用与变化进行. ...
- 大神教你零基础学PS,30堂课从入门到精通
ps视频教程,ps自学视频教程.ps免费视频教程下载,大神教你零基础学PS教程视频内容较大,分为俩部分: 大神教你零基础学PS--30堂课从入门到精通第一部分:百度网盘,https://pan.bai ...
- PageHelper分页插件使用
mybatis的分页插件jar包: 配置方法: 在mybatis配置文件中加下面代码 <plugin interceptor="com.github.pagehelper.PageIn ...