两种存储引擎
WiredTiger 存储引擎,默认
In-memory 内存存储引擎
WiredTiger
文档级并发模型
支持多个客户端同时修改集合的不同文档。
快照和检查点 checkpoint
WiredTiger使用MultiVersion(MVVC)并发控制。
检查点可以充当恢复点
日志 Journal
日志与检查点结合使用,确保数据持久性。日志保留检查点之间的数据修改
日志通过快速压缩库进行压缩,通过 storage.wiredTiger.engineConfig.journalCompressor 配置压缩算法或不压缩。
压缩
MongoDB支持对集合和索引压缩,压缩可以减少存储空间,但增加CPU开销。
MongoDB Wiredtiger存储引擎实现原理:https://mongoing.com/archives/2540
MongoDB 存储引擎 WiredTiger 原理解析:https://mongoing.com/archives/5367
In-Memory内存存储引擎
文档级并发模型
同样支持文档级并发
持久性
没有持久化支持,所有数据均在内存中,包括应用程序数据和系统数据,例如用户,权限,索引,副本集配置,分片群集配置等。
日志功能不适用内存引擎
日志
使用日志记录的恢复过程:
1.在数据文件中查找最后一个检查点 checkpoint 的标识符。
2.在日记 journal 文件中搜索与最后一个检查点 checkpoint 的标识符匹配的记录。
3.从上一个检查点 checkpoint 开始,将操作应用于日志文件。
使用日志功能,WiredTiger为每个客户端发起的写操作创建一个日记记录。日志记录包括由初始写入引起的任何内部写入操作。
例如,对集合中文档的更新可能会导致对索引的修改;WiredTiger创建单个日志记录,其中包含更新操作及其关联的索引修改。
https://docs.mongoing.com/cun-chu/journaling
本文由 mdnice 多平台发布