MongoDB 存储引擎 mmapv1 原理解析
在 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
相关文章