Mongodb集群中的分布式读写

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第81篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关注威赞。谢谢。

本文简单介绍Mongodb的分布式操作。mongodb支持复制集和分片集合,本文结合官方文档,整理介绍复制集和分片结合的数据读取。

复制集中的数据读取

默认情况下,应用链接到复制集后,从复制集的主节点承担了客户端或应用的数据读写操作。mongodb允许用于指定参数readpreferences来通过复制集中的其他节点来读取数据。

同样用户可以设置readpreferences参数,将读取操作转移到从节点或与主节点最近的节点来实现下面的操作目的

  • 减少多数据中心数据同步的延迟
  • 将大量的读取操作分配的主节点以外的节点,从而提高读取数据吞吐量
  • 在从节点做数据备份
  • 当主节点切换时,直到新的主节点选出来以后才可以读取数据。

在复制集从节点读取数据时,因为数据变更从主节点同步到从节点需要时间和过程,因此读取数据的状态可能不是最新的状态。同样因为数据同步的延迟,在从节点中读取到的数据可能不是单调连续的。客户端可以使用数据一致性的session设置,保证数据读取的正确性。当然,使用从节点读取数据时,客户端可以按照数据库连接或操作来设置。用户可以参考相关的文档来设定不同的参数。

复制集中的数据写入

在复制集中,所有的写入操作都是发生在主节点。主节点执行写入操作,同时将操作记录在主节点的操作日志当中。操作日志是一个可重现的顺序操作的集合。从节点持续的将操作日志同步到自己的节点,并依据操作日志当中记录下来的事件,将数据变更同步写入到自己节点的数据集中。用户可以指定mongodb主节点通知用户数据变更完成的方式。比如,当主节点数据写入完成后,就返回写入结果给客户,或者在最近的一个从节点完成后,将数据变更结果返回给客户。

分片集中数据读取

分片集允许用户将数据分成不同的数据块,保存到分片集的不同节点当中。这种方式对应用和数据库客户端来说是透明的。数据分块保存发生在数据库集群当中。在复制集当中,用户的操作是针对集群中的一个mongos服务实例的。mongos服务实例,依据数据分块时产生的元数据,将请求派发到不同的节点。

当用户指定具体的数据分片时,mongodb分片集无需再次确认到哪个节点中读取数据,这样读取操作会变得很高效。针对分片集群的查询应该带上分片键。带有分片键的查询,mongos可以用过分片元数据将查询分配到具体的分片节点当中。

对于没有分片键的查询,mongodb分片集群不得不查询集群中所有的节点。这样从每个分片节点收集数据,会变得很低效。在大型分片集群当中,这种分散收集的方式是不可行的。

与复制集类似,分片集在从节点中读取到的数据可能无法反应数据最新的状态。在从节点中读取的数据,也无法保证是单调一致的。用户可以使用一致性会话,保证数据读取的一致性。

分片集中数据的写入

在分片集合中,mongos直接将应用或客户端发过来的数据写到对应的数据分片中。mongos通过元数据配置库,找到数据应该写入的节点,将写入数据的操作派发到该节点。

Mongodb依据用户指定的分片键,将数据分成不同的数据块。然后将这些数据块保存到不同的分片节点中。分片键决定了数据块写入的节点。mongodb分片集写入数据时,会影响集群的性能。

mongodb数据更新单个文档数据时,必须要包含分片键或主键。多文档数据的更新时,带有分片键在某些情况下会提高效率。多文档数据更新也有可能被发到每一个分片服务上。

如果分片键的值每个插入操作都增加或减少,那么所有的这些插入操作会产生一个新的数据分片。这样来说,单个插入操作的容量,就会被限制为分片的容量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/38570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网摸鱼日报(2024-07-01)

互联网摸鱼日报(2024-07-01) 36氪新闻 最前线 | 孚能科技广州基地投产,年产能30GWh,主推SPS大软包产品 本周双碳大事:800亿元“风光火储”大项目来了;光伏巨头SolarEdge股价骤跌20%;韩国电池厂大火,锂电安…

目标检测算法的优缺点

目标检测算法在计算机视觉领域具有广泛的应用,其优缺点因算法类型和具体实现而有所不同。以下是对一些主流目标检测算法优缺点的概述: 1. 传统目标检测算法 优点: 模型简单:传统目标检测算法通常基于手工设计的特征和分类器&am…

Java进阶学习|Day3.Java集合类(容器),Stream的使用,哈希初接触

java集合类(容器) Java中的集合类主要由Collection和Map这两个接口派生而出,其中Collection接口又派生出三个子接口,分别是Set、List、Queue。所有的Java集合类,都是Set、List、Queue、Map这四个接口的实现类&#xf…

Powershell 简易爬虫,提取种子网站的磁力链接

目录 一. 需求二. 分析2.1 思路分析2.2 技术点 三. 代码四. 效果 一. 需求 ⏹有网站如下所示,先要求从按照关键词搜索到的网页中,提取出所有的磁力链接。 二. 分析 2.1 思路分析 打开网页之后,从网页中先提取出所有的标题相关的url然后再打…

linux驱动部分内容整理

文章目录 Linux驱动概念应用程序调用驱动程序流程驱动模块的加载linux设备号加载和卸载注册新字符设备注册设备节点自动创建设备节点编译编译驱动程序编译应用程序 地址映射ioctrl命令码的解析 并发与竞争原子操作自旋锁信号量互斥体 linux中断DMA映射其它printkmemcpyvolatile…

如何在ubuntu上安装ros-noetic?

如何在ubuntu上安装ros-noetic? 1. 源由2. 快速安装3. ROS学习 1. 源由 围绕ros-noetic这个系统,前面已经有不少谈及: Linux 35.5 JetPack v5.1.3ros-noetic安装Linux 35.5 JetPack v5.1.3Fast-Planner编译安装Linux 35.5 JetPack v5.1.…

RocketMQ常用基本操作

文章中的rabbitmq使用的是rocketmq-all-5.1.3-bin-release版本,需要安装包的可自行下载 RockerMQ启动停止命令 启动命令 nohup sh bin/mqnamesrv & nohup sh bin/mqbroker -n localhost:9876 --enable-proxy & 查看日志 tail -f ~/logs/rocketmqlogs/…

多线程编程的挑战与解决方案

多线程编程的挑战与解决方案 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 多线程编程的挑战 在现代软件开发中,多线程编程成为处理并发任务…

PatchTST创新点

这篇论文的创新点主要集中在PatchTST模型的设计和应用中。以下是对其创新点的详细说明: 创新点 频道独立补丁设计:PatchTST模型通过将多变量时间序列分割成不同的频道,每个频道作为单变量时间序列处理。每个频道独立地通过实例归一化操作和补…

明星中药企业系列洞察(九)一手好牌打的稀烂!近500年老字号锁定退市,太安堂为何“塌房”了?

近日,太安堂发布公告称,公司已收到深交所下发的《关于广东太安堂药业股份有限公司股票终止上市的决定》,深交所决定终止公司股票上市,预计其最后交易日期为7月4日。太安堂曾作为国内知名的中成药上市公司之一,是国家级…

matlab仿真 通信信号和系统分析(上)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第三章内容,有兴趣的读者请阅读原书) 一、求离散信号卷积和 主要还是使用卷积函数conv,值得注意的是,得到的卷积和长度结果为81&#xff0…

node.js+uniapp(vue),阿里云短信验证码

reg.vue: 思路是&#xff1a;前端调用获取验证码的接口 > 后端生成验证码返回给前端 > 前端渲染验证码 <template> <div> <input class"sl-input" v-model"phone" type"tel" maxlength"11" placeholder"手…

微信小程序毕业设计-微信食堂线上订餐系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

【在线评论】不同视角下在线评论对客户满意度和推荐度的影响—推文分析—2024-07-01

今天的推文主题是【在线评论】&#xff0c;重点关注可以关注第四篇&#xff0c;很全面地分析了在线评论的信息多维性。 第一篇从客户的在线评论入手&#xff0c;将客户消费的动机为功利、享受、社会满足&#xff1b;第二篇是关于在线评论对消费者再次选择同一家酒店的机制探索…

MySQL之主从同步、分库分表

1、主从同步的原理 MySQL主从复制的核心是二进制日志 二进制日志&#xff08;binlog&#xff09;记录了所有DDL语句和DML语句&#xff0c;但不包括数据查询&#xff08;select、show&#xff09;语句。 1.1、复制分三步 master主库在事务提交时&#xff0c;会把数据变更记录…

电子战学习笔记01:电子战概论

0、写在文前 本人在学习电子战相关理论知识时&#xff0c;一直感觉无从下手&#xff0c;之后在老师的推荐下购买了《EW101&#xff1a;电子战基础》纸质书籍学习&#xff0c;所以将自己的学习笔记在CSDN上记录一下&#xff0c;也供有需要的同学参考。 1、电子战定义 电子战&…

Spring Boot与Apache Kafka集成的深度指南

Spring Boot与Apache Kafka集成的深度指南 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代分布式系统中&#xff0c;消息队列的作用愈发重要&#xff0…

【鸿蒙学习笔记】鸿蒙ArkTS学习笔记

应用开发导读&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-dev-guide-V5 【鸿蒙培训】第&#xff11;天・环境安装 【鸿蒙培训】第&#xff12;天・装饰器・组件和页面生命周期 【鸿蒙学习笔记】数据类型 【鸿蒙学习笔记】运算…

Spring Cloud中的服务发现与注册

Spring Cloud中的服务发现与注册 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨Spring Cloud中的服务发现与注册&#xff0c;这是微服务架构中至…

全网最详细的 gin框架请求数据绑定Bind 源码解析 -- 帮助你全面了解gin框架的请求数据绑定原理和方法

在gin框架中&#xff0c;我们可以将多种请求数据&#xff08;json, form,uri&#xff0c;header等&#xff09;直接绑定到我们定义的结构体&#xff0c;底层是通过反射方式获取我们定义在结构体上面的tag来实现请求数据到我们的结构体数据的绑定的。 在gin的底层有2大体系的数据…