前言
存储引擎是Mongodb管理数据存储主要的组件,Mongodb支持多种存储引擎,每种存储引擎适合特定的场景
WiredTiger
特性
1. version >= 3.2版本默认存储引擎
2. 支持文档级别的并发
3. 使用MVCC(MultiVersion Concurrency Control)实现并发控制
4. 可以通过快照恢复数据
5. 优先写journal日志保证数据落地,单机模式建议开启journal日志
6. 支持集合和索引数据压缩
7. 使用存储引擎内部缓存和文件系统缓存
适用场景
适合大部分场景
MMAPv1
特性
1. mongodb第一代引擎,基于文件内存映射(based on memory mapped files)
2. 不支持big-endian架构的系统
3. 通过频繁写journal日志数据来恢复数据
4. 记录连续存储在硬盘
5. 更新时,内容超过分配的空间,记录需要移动到新位置,索引重建和产生硬盘碎片,非常耗时,尽量避免这种情况的发生
6. 记录空间分配策略: 2的N次方,适用记录可能会变化的场景; 原始大小,适用不会更新的场景,比如日志记录
7. 使用所有系统可用缓存,由系统控制,可随时回收,内存越大性能越好
适用场景
高量读写和某些情况高量更新
In-Memory
特性
1. version >= 3.2.6版本可用,仅企业版支持
2. 所用数据存储在缓存中,性能比其它存储引擎要好
3. 支持文档锁
4. 需要分配足够的可用内存
5. 不支持持久存储
适用场景
小数据量,临时存储,数据中转场景
参考资料
【1】mongodb存储
https://docs.mongodb.com/manual/storage/
【2】Storage Engines
https://docs.mongodb.com/manual/core/storage-engines/
【3】WiredTiger Storage Engine
https://docs.mongodb.com/manual/core/wiredtiger/
【4】MMAPv1 Storage Engine
https://docs.mongodb.com/manual/core/mmapv1/
【5】In-Memory Storage Engine
https://docs.mongodb.com/manual/core/inmemory/
【6】Journaling
https://docs.mongodb.com/manual/core/journaling/
【7】GridFS
https://docs.mongodb.com/manual/core/gridfs/
【8】FAQ: MongoDB Storage
https://docs.mongodb.com/manual/faq/storage/