想要深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是 Memeory-Mapped Files。
Memeory-Mapped Files
下图展示了数据库是如何跟底层系统打交道的。
内存映射文件是OS通过mmap在内存中创建一个数据文件,这样就把文件映射到 一个虚拟内存的区域。
虚拟内存对于进程来说,是一个物理内存的抽象,寻址空间大小为2^64
操作系统通过mmap来把进程所需的所有数据映射到这个地址空间(红线),然后 再把当前需要处理的数据映射到物理内存(灰线)
当进程访问某个数据时,如果数据不在虚拟内存里,触发page fault,然后OS 从硬盘里把数据加载进虚拟内存和物理内存
如果物理内存满了,触发swap-out操作,这时有些数据就需要写回磁盘,如果 是纯粹的内存数据,写回swap分区,如果不是就写回磁盘。
MongoDB的存储模型
时间: 2024-10-28 21:03:47