【愚公系列】2022年05月 .NET架构班 057-分布式中间件 Mongodb的架构
前言
mongodb是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
mongodb是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。mongodb最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
一、MongoDB全局架构设计
高度模块化的设计是 MongoDB 的架构基础。在 MongoDB 中,除了少量的核心代码,其他一切皆为模块。
所有模块间是分层次、分类别的,MongoDB 官方共有五大类型的模块:核心模块、配置模块、事件模块、HTTP 模块、mail 模块、stream模块。它们之间的关系如下:
在这 5 种模块中,配置模块和核心模块是与 MongoDB 框架密切相关的。而事件模块则是 HTTP 模块和 mail 模块的基础。HTTP 模块和 mail 模块的“地位”类似,它们都是更关注于应用层面。
二、MongoDB Wiredtiger架构设计
1.Wiredtiger引擎写入原理
第一件事:把商品数据存储到缓存中
第二件事:把缓存中的数据同步到磁盘
2.Wiredtiger数据防丢失原理
如上图,图中多了一个 journaling buffer 和 journal 文件
2.1 journaling buffer
存放 mongodb 增删改指令的缓冲区
2.2 journal 文件
类似于关系数据库中的事务日志
引入 Journaling 的目的是:
Journaling 能够使 mongodb 数据库由于意外故障后快速恢复
3.Wiredtiger 索引原理
MongoDB中缓存和磁盘存储数据都是依靠B+树数据结构实现数据存储,root节点和Internal 节点存储索引数据,leaf存储真实数据
- 点赞
- 收藏
- 关注作者
评论(0)