MongoDB 存储引擎 mmapv1 原理解析

2020-05-22 00:00:00 数据 删除 文件 记录 位置

在 MongoDB 发展的早期,并没有存储引擎的概念,文档的存储使用一种简单的基于 mmap 的存储管理机制,到 MongoDB 3.0,MongoDB 引入 WiredTiger 后,有了多存储引擎的支持,原来的存储机制也抽象为 mmapv1 存储引擎,并作为 默认的存储引擎。


在 MongoDB 3.2里,WiredTiger 取代 mmapv1 成为默认的存储引擎,其在性能、数据压缩、行级锁的支持上远胜 mmapv1,但在有些场景,比如大量集合的存储、inplace-update 的场景,目前 WiredTiger 还不能很好的胜任(这方面的改进已在官方的 Roadmap 上),mmapv1 的核心在于其足够简单,本文将详解 mmapv1 存储引擎的实现机制。


MongoDB 的 mongod 服务管理一个数据目录,可包含多个DB,每个DB的数据单独组织,本文主要介绍 mmapv1 存储引擎的数据组织方式。

Database

每个Database(DB)由一个.ns文件及若干个数据文件组成

$ll mydb.*
-rw-------  1 ydzhang  staff  67108864  7  4 14:05 mydb.0
-rw-------  1 ydzhang  staff  16777216  7  4 14:05 mydb.ns

相关文章