深入剖析MongoDB架构

聊聊MongoDB(一):MongoDB体系结构与底层原理 MongoDB体系结构与底层原理前言MongoDB体系结构NoSQL 和 MongoDBMongoDB 和RDBMS(关系型数据库)对比什么是BSONBSON在MongoDB中的使用MongoDB索引Index索引类型MongoDB 索引底层实现原理分析MongoDB架构MongoDB逻辑结构MongoDB的数据模型描述数据模型如何选择数据模型MongoDB 存储引擎存储引擎概述WiredTiger存储引擎优势WiredTiger引擎包含的文件和作用WiredTiger存储引擎实现原理写请求checkpoi 阅读详情
近日,软件工程师Ricky Ho的在 他的博客里发表了一篇关于MongoDB架构( MongoDB Architecture)的博文,虽然这是一个听起来感觉很宽泛的话题,但是作者在文章中确实对MongoDB由内至外的架构进行了剖析。本文截取了其文章中的几张重点架构示意图进行简要描述。

1、MongoDB数据文件内部结构


  • MongoDB在数据存储上按命名空间来划分,一个Collection是一个命名空间,一个索引也是一个命名空间。
  • 同一个命名空间的数据被分成很多个Extent,Extent之间使用双向链表连接。
  • 在每一个Extent中,保存了具体每一行的数据,这些数据也是通过双向链接来连接的。
  • 每一行数据存储空间不仅包括数据占用空间,还可能包含一部分附加空间,这使得在数据Update变大后可以不移动位置。
  • 索引以BTree结构实现。
2、在MongoDB中实现事务


众所周知, MongoDB只支持对单行记录的原子性修改,并不支持对多行数据的原子操作。但是通过上图中的不可思议的操作步骤,实际上你也可以自己实现该事务。 其步骤如下:

  • 第1步:先记录一条事务记录,将要修改的多行记录的修改值写到里面,并设置其状态为init(如果这时候操作中断,那么在重新启动时,会判断到它处于init状态,从而将其保存的多行修改操作应用到具体的行上)。
  • 第2步:然后更新具体要修改的行,将刚才写的事务记录的标识写到它的tran字段中。
  • 第3步:将事务记录的状态从init变成pending(如果在这时候操作中断,那么在重新启动时,会判断到它的状态是pending,这时查看其所有对应的多条要修改的记录,如果其tran值不为空,那么就进行第4步;如果值为空,说明第4步已经执行过了,直接将其状态从pending变成 commited就行)。
  • 第4步:将需要修改的多条记录的相应值加以修改,并且unset掉之前的tran字段。
  • 第5步:将事务记录那一条的状态从pending变成commited,事务至此完成。
其实上面的步骤并不罕见,在支持事务的DBMS中,其事务原子性提交的保证大多都与上面类似。而事务记录的tran那条记录,就类似于这些DBMS中的redolog。

3、MongoDB数据同步


MongoDB采用Replica Sets模式的同步流程

本流程可简要描述如下:

  • 红色箭头表示写操作可以写到Primary上,然后异步同步到多个Secondary上。
  • 蓝色箭头表示读操作可以从Primary或Secondary任意一个中读取。
  • 各个Primary与Secondary之间一直保持心跳同步检测,用于判断Replica Sets的状态。
4、分片机制


  • MongoDB的分片是指定一个分片key来进行,数据按范围分成不同的chunk,每个chunk的大小有限制。
  • 有多个分片节点保存这些chunk,每个节点保存一部分的chunk。
  • 每一个分片节点都是一个Replica Sets,这样保证数据的安全性。
  • 当一个chunk超过其限制的最大体积时,会分裂成两个小的chunk。
  • 当chunk在分片节点中分布不均衡时,会引发chunk迁移操作。
5、服务器角色


前面讲了分片的机制,下面是具体在分片时几种节点的角色:

  • 客户端访问路由节点mongos来进行数据读写。
  • config服务器保存了两个映射关系,一个是key值的区间对应哪一个chunk的映射关系,另一个是chunk存在哪一个分片节点的映射关系。
  • 路由节点通过config服务器获取数据信息,通过这些信息,找到真正存放数据的分片节点进行对应操作。
  • 路由节点还会在写操作时判断当前chunk是否超出限定大小。如果超出,就分列成两个chunk。
  • 对于按分片key进行的查询和update操作来说,路由节点会查到具体的chunk然后再进行相关的工作。
  • 对于不按分片key进行的查询和update操作来说,mongos会对所有下属节点发送请求然后再对返回结果进行合并。

英文原文:MongoDb Architecture

 

MongoDB分片原理及架构详解 有一点需要注意,一个自增的Shard Key对写入和数据均匀分布不是很友好,因为自增的Shard Key总会在一个分片上写入,后续达到某个阀值才可能会写到别的分片上。使用分片减少了每个分片存储的数据。高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁盘IO上。MongoDB分片是指将数据库拆分成多份,把它们分散到不同的机器上,从而实现不需要功能强大的服务器就可以存储更多的数据和处理更多的请求。 阅读详情

相关推荐

Mongodb的体系结构,语法,底层原理,怎么开发使用,使用场景有哪些?

MongoDB 是一个面向文档的 NoSQL 数据库,数据以 BSON(二进制 JSON)格式存储。它提供了灵活的数据模型,适合处理大规模数据和高并发访问的应用场景。

zhang9880000的博客 1778

MongoDB详解(二)——MongoDB架构与原理

今天继续给大家介绍Linux运维相关知识,本文主要内容是MongoDB架构与原理。 一、MongoDB架构简介 二、MongoDB副本集 三、MondoDB存储引擎

永远是少年 4313

深入剖析MongoDB集群架构设计

MongoDB 有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。当讨论 MongoDB 的集群架构时,应强调副本集和分片这两种官方推荐和支持的模式。如果在历史背景下讨论,可以提及主从复制作为早期的一种复制方式,但需明确指出它在现代 MongoDB 中已不再适用。探索非关系型世界:MongoDB核心概念全解析-优快云博客TiDB存储引擎TiKV揭秘-优快云博客。

我是一名热爱编程和分享知识的技术作者,在金融和教育领域有多年的研发管理经验,感谢您访问我的博客,一定会为您带来不一样的收货! 2862

MongoDB技术架构详解

MongoDB是一个面向文档的数据库,它以BSON(Binary JSON)格式存储数据。与关系型数据库不同,MongoDB没有固定的表结构,允许存储不同结构和类型的数据。这使得MongoDB非常适合处理半结构化和非结构化数据,如日志、社交媒体数据等。高性能:MongoDB使用内存映射文件存储引擎(WiredTiger或MMAPv1),支持高速数据读写操作。高可用性:MongoDB支持主从复制和分片集群,确保数据的高可用性和可扩展性。灵活性:MongoDB支持动态模式,允许在运行时添加或删除字段。

码到三十五 2921

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战

在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件

weixin_30162121的博客 257

淘特App x-sign参数逆向实战:从抓包到算法定位

本文详细解析了淘特App的x-sign参数逆向过程,从抓包分析到算法定位,涵盖了使用jadx-gui进行静态分析、Frida动态Hook验证以及Native层算法还原等关键技术。文章重点介绍了x-sign参数的生成机制及其在阿里系应用中的安全防护策略,为逆向工程师提供了实用的调试技巧和对抗策略。

5b6n7m8的博客 228

深入剖析 MongoDB 架构

深入剖析 MongoDB 架构

Java技术交流 107

中科蓝讯Downloader配置实战:从软硬开关机到ANC降噪的完整指南

本文提供了中科蓝讯Downloader工具的详细配置实战指南。内容涵盖从基础的软硬开关机选择与配置,到核心的EQ音效调试、触摸按键与入耳检测优化,以及高阶的ANC降噪与电源管理设置。旨在帮助开发者快速掌握关键配置项,高效完成蓝牙耳机产品的功能调试与优化。

s4t5u6v7的博客 508

深入剖析MongoDB架构(数据存储架构)

近日,软件工程师Ricky Ho的在 他的博客里发表了一篇关于MongoDB架构( MongoDB Architecture)的博文,虽然这是一个听起来感觉很宽泛的话题,但是作者在文章中确实对MongoDB由内至外的架构进行了剖析。本文截取了其文章中的几张重点架构示意图进行简要描述。  1、MongoDB数据文件内部结构  MongoDB在数据存储上按命名空间来划分

lantian0802的专栏 2247

从 Material Requirements Planning 看 SAP 物料计划的底层控制逻辑

文章摘要:SAP中的MRP(物料需求计划)不仅仅是运行一个程序(如MD01N),其关键在于主数据和组织层级的正确配置。MRP的核心是解决"何时需要多少物料"的问题,涉及采购、生产、库存等多种供应来源。物料主数据的MRP视图必须在组织层级(如工厂、存储位置)下维护,不同层级的计划逻辑可能完全不同。S/4HANA更强调MRP Area作为细分计划单位,取代传统存储位置MRP。实施时需注意MRP Profile的合理使用,避免批量错误,并特别关注物料生命周期管理(如停用物料和替代件),这些因素共同决定了MRP能否

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1412

多智能体系统在军事仿真中的应用:AI人工智能战略推演

本文旨在全面解析多智能体系统在军事仿真领域的应用技术,重点探讨AI驱动的战略推演系统的设计原理和实现方法。研究范围涵盖从基础理论到实际应用的完整技术栈。本文采用从理论到实践的递进结构,首先介绍核心概念,然后深入算法实现,最后展示实际应用案例和未来展望。多智能体系统(MAS):由多个相互作用的智能体组成的分布式系统军事仿真(Military Simulation):通过计算机模拟军事行动和战争场景战略推演(Strategic Wargaming):通过模拟推演评估军事战略的有效性更高保真度的仿真。

AI天才研究院 1777

MongoDB——全面剖析MongoDB高可用架构

本文介绍了 3 种 MongoDB 的高可用架构,Master-Slave 模式,Replica Set 模式,Sharding 模式,这也是常见的架构演进的过程;MongdbDB Master-Slave 已经不推荐,甚至新版已经不支持这种冗余模式;Replica Set 通过数据多副本,组件冗余提高了可靠性,并且通过分布式自动选主算法,减少了停服时间窗,提高了可用性;Sharding 模式通过横向扩容的方式,为用户提供了近乎无限的空间;5、

zhanglongfei1016的专栏 1456

TypeError: XGBClassifier.fit() got an unexpected keyword argument ‘early_stopping_rounds‘ 解决方案

本文主要介绍了TypeError: XGBClassifier.fit() got an unexpected keyword argument 'early_stopping_rounds’解决方案,希望能对使用XGBoost的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

全面剖析 MongoDB 高可用架构

MongoDB高可用架构

cbmljs的博客 2943

机器人轨迹规划——梯形速度轨迹(超详细)

机器人轨迹 这一系列轨迹教程将主要包括以下内容: 点到点轨迹(P2P) 五次多项式插值轨迹 三次多项式插值轨迹 梯形速度曲线轨迹 双S形速度曲线轨迹 多个自由度轨迹的时间同步 在线轨迹规划 多项式在线轨迹规划 梯形在线轨迹规划 双S形在线轨迹规划 非线性实时轨迹滤波 多点轨迹(Multi-point) 三次样条曲线(cubic spline) 贝赛尔曲线(Bezier Curve) B样条曲线(BSpline) 时间最优轨迹 三次样条时间最优轨迹 任意路径下的时间最优轨迹 时间

出门搔白首,若负平生志 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: Hadoop基本操作命令
下一篇: Hadoop1.0 Eclipse Plugin-作业提交
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值