当前位置: 首页 > backend >正文

mongodb 存储数据的具体实现方式

MongoDB 存储数据的具体实现方式涉及数据模型存储引擎分片机制等多个核心模块,以下是其实现原理的详细分析:

一、数据模型

1.1 文档型数据模型‌

MongoDB 使用 BSON格式存储数据,支持键值对、嵌套文档和数组等复杂结构。

1.2 无模式设计‌

文档之间无需遵循固定结构,允许动态增减字段,适用于需要非固定结构的存储场景‌。

二、存储引擎与底层实现

2.1 WiredTiger 存储引擎

自 MongoDB 3.2 起,WiredTiger 成为默认存储引擎,其核心特性包括:

B 树与 LSM 树混合架构‌:B 树用于快速数据检索,LSM 树(日志结构合并树)优化写入性能,先将数据写入内存,再批量持久化到磁盘‌。 ‌

内存映射机制‌:通过内存映射文件将磁盘文件直接映射到内存,减少数据访问延迟‌。

‌压缩技术‌:支持 Snappy 和 Zlib 算法压缩数据,减少存储空间占用‌

2‌.2 日志与持久化‌ ‌

预写日志:所有数据修改先写入日志文件(Journal),确保崩溃恢复时数据一致性‌

检查点机制‌:定期将内存中的脏数据刷新到磁盘,降低日志恢复的时间开销‌

三、分片与集群架构

3.1 ‌分片

通过水平分片将数据分布到多个节点,支持海量数据存储和高并发访问。

分片键决定数据分布规则,支持范围分片和哈希分片两种策略‌。

3.2 ‌集群组件

‌分片服务器:存储实际数据分片。 ‌

配置服务器:保存集群元数据(如分片位置、路由规则)。 ‌

查询路由器:作为客户端入口,解析查询请求并路由至对应分片‌

四、数据写入流程 ‌

第1步:客户端写入‌。 数据发送到 MongoDB 服务器,优先写入内存缓冲区‌

第2步:日志记录与持久化‌ 。写入操作记录到 Journal 日志,随后由存储引擎异步写入磁盘,写入完成时返回确认信号‌36。

第3步:索引更新‌。若涉及索引字段,同步更新内存中的索引结构(如 B 树),确保查询效率‌。

五、高可用性保障

5.1 ‌副本集(Replica Set)‌

通过主从复制实现数据冗余,主节点处理写操作,"从节点"异步复制数据。

主节点故障时,自动选举新主节点

5.2 读写分离

支持将读请求分发到从节点,分担主节点负载‌

http://www.xdnf.cn/news/846.html

相关文章:

  • 计算机视觉中的正则化:从理论到实践的全面解析
  • 缓存设计模式
  • HTTP与HTTPS的区别
  • 固定资产全生命周期管理:采购至报废的高效管理路径
  • CC注入Tomcat Upgrade/Executor/WebSocket内存马
  • 【网络安全】CI/CD 流水线漏洞
  • Python 金融量化分析
  • 【ESP32】【微信小程序】MQTT物联网智能家居案例
  • 模拟量数据信号采集模块的特点及应用
  • 无需接线!虚幻引擎变量跨次元绑定的无线电奥秘
  • Spring Boot 核心模块全解析:12 个模块详解及作用说明
  • 蓝桥杯 17.发现环
  • springboot对接阿里云大模型
  • 忽略 CS8616 警告在 Visual Studio 2022 中【C# 8.0 】
  • ios17 音频加载失败问题
  • Redis 慢查询分析与优化
  • 蓝桥杯 18.分考场
  • C++之unordered封装
  • 基于Python的设计模式之创建型模型
  • 动手学深度学习——Transformer
  • 14.第二阶段x64游戏实战-分析人物的名字
  • Github 热点项目 Jumpserver开源堡垒机让服务器管理效率翻倍
  • 25.解决中医知识问答删除历史对话功能后端处理请求时抛出异常
  • 前端基础之《Vue(7)—生命周期》
  • 深度学习算法:从基础到实践
  • 第 28 场 蓝桥月赛
  • android framework开发的技能要求
  • HarmonyOS 笔记
  • Linux命令--将控制台的输入写入文件
  • Java编程基础(第三篇:初见静态方法)