mongodb 储存引擎
大学生啊你要知道,学习不一定能收获,但剁手一定能收货。
mongodb支持哪些储存引擎?
MongoDB 采用的也是 插件式的存储引擎架构 ,支持不同类型的存储引擎,不同的存储引擎解决不同场景的问题。在创建数据库或集合时,可以指定存储引擎。
(插件式的存储引擎架构可以实现 Server 层和存储引擎层的解耦,可以支持多种存储引擎)
主要有2中存储引擎:
1、WiredTiger 存储引擎:自 MongoDB 3.2 以后,默认的存储引擎为 WiredTiger 存储引擎open in new window 。非常适合大多数工作负载,建议用于新部署。WiredTiger 提供文档级并发模型、检查点和数据压缩(后文会介绍到)等功能。
2、In-Memory 存储引擎:In-Memory 存储引擎open in new window在 MongoDB Enterprise 中可用。它不是将文档存储在磁盘上,而是将它们保留在内存中以获得更可预测的数据延迟。
目前绝大部分流行的数据库存储引擎都是基于 B/B+ Tree 或者 LSM(Log Structured Merge) Tree 来实现的。
对于 NoSQL 数据库来说,绝大部分(比如 HBase、Cassandra、RocksDB)都是基于 LSM 树,MongoDB 不太一样。
WiredTiger 基于B+ Tree
(WiredTiger 还支持 LSM(Log Structured Merge)open in new window 树作为存储结构)
使用 B+ 树时,WiredTiger 以 page 为基本单位往磁盘读写数据。B+ 树的每个节点为一个 page,共有三种类型的 page:
root page(根节点):B+ 树的根节点。
internal page(内部节点):不实际存储数据的中间索引节点。
leaf page(叶子节点):真正存储数据的叶子节点,包含一个页头(page header)、块头(block header)和真正的数据(key/value),其中页头定义了页的类型、页中实际载荷数据的大小、页中记录条数等信息;块头定义了此页的 checksum、块在磁盘上的寻址位置等信息。
结构图: