当前位置: 首页 > article >正文

【赵渝强老师】MongoDB的MMAPv1存储引擎

在这里插入图片描述

  在MongoDB 3.2版本以前,MongoDB使用MMAPv1作为默认的存储引擎。在MMAPv1的存储引擎中,包含以下的组成部分:

  • Database

  每个Database由一个.ns名称空间文件及若干个数据文件组成。数据文件从0开始编号,依次为.0、.1、.2等。数据文件大小从64MB起,依次倍增,最大为2GB。

  • Namespace

  每个Database可以包含多个Namespace名称空间文件,该名称空间对应MongoDB中的集合,名称空间文件文件实际上是一个Hash表,可用于快速定位某个集合的起始位置

  • 数据文件

  每个数据文件被划分成多个extent,每个extent只包含一个名称空间的数据。同一个名称空间的所有extent之间以双向链表形式组织。名称空间的元数据里包含指向第一个及最后一个extent的位置指针,通过这些信息,就可以遍历一个名称空间下的所有extent数据。下图说明了名称空间文件与数据文件之间的关系。

在这里插入图片描述

  • Extent

  每个Extent包含多个Record,该Record对应MongoDB集合中的Document),同一个Extent下的所有Record以双向链表形式组织。

  • Record

  每个Record对应mongodb里的一个文档。

  视频讲解如下:

MongoDB的MMAPv1存储引擎

【赵渝强老师】MongoDB的MMAPv1存储引擎

  下面通过一个简单的示例来演示MMAPv1存储引擎。

(1)创建目录用于保存MMAPv1存储引擎的数据。

mkdir -p /data/mmapv1

(2)编辑配置文件/data/mmapv1/mmapv1.conf,输入下面的内容。

dbpath=/data/mmapv1/
port=27018
fork=true
logpath=/data/mmapv1/mmapv1.log
storageEngine=mmapv1

(3)启动MongoDB服务器端。

mongod --config /data/mmapv1/mmapv1.conf

(4)使用mongoshell连接MongoDB。

mongo --port 27018

(5)在MongoDB中创建一个数据库和一张新的集合,并插入一条数据。

> use mmapv1
> db.test1.insert({name:'Tom',age:18});

(6)查看目录/data/mmapv1下的文件。

tree /data/mmapv1

输出的信息如下:
/data/mmapv1
├── admin.0
├── admin.ns
├── diagnostic.data
│   ├── metrics.2022-04-04T05-18-26Z-00000
│   └── metrics.interim
├── journal
│   └── j._0
├── local.0
├── local.ns
├── mmapv1.0        ---> mmapv1数据库的第一个数据文件。
├── mmapv1.conf
├── mmapv1.log
├── mmapv1.ns       ---> 这是在第(5)步中创建的mmapv1数据库的名称空间文件。
├── mongod.lock
├── storage.bson
└── _tmp


http://www.kler.cn/news/290188.html

相关文章:

  • Java 集合性能优化
  • 临时表的魔力:SQL中的快速缓存与数据处理
  • 前端常见文件下载方式总结
  • 已经存在的项目如何变成git的一个repository
  • springboot集成guava布隆过滤器
  • 24/9/3算法笔记 kaggle泰坦尼克
  • goalng http client的MaxIdleConnsPerHost,MaxIdleConns,MaxConnsPerHost参数设置总结
  • 鸿蒙模拟器篇
  • stream流常见方法
  • Spring Cloud Gateway之路由配置
  • 谷粒商城实战笔记-285~290-分布式事务
  • 设计模式 18 备忘录模式
  • LeetCode的高频SQL50题(基础版)学习笔记
  • 惠中科技RDS自清洁膜层:光伏领域的绿色革命
  • Spark MLlib模型训练—回归算法 Survival Regression
  • 【Selenium】Selenium运行时报cannot find Chrome binary错误的解决办吧
  • linux之网络子系统-MAC帧、数据报、段 的头部信息
  • 【C++】如何解决“pointer to incomplete class type is not allowed”。
  • 一篇文章讲清楚什么是Spring AOP
  • 从汇编角度分析C语言中的局部变量是如何产生的
  • pikachu文件包含漏洞靶场通关攻略
  • 运维管理体系及其实践要点:为高效运维保驾护航
  • zabbix通过OMSA监控Dell服务器_zabbix dell http
  • 为什么我会有使用gradle,需要花长时间去下载依赖?使用maven就不会有这种感受?
  • c++ websocket简单讲解
  • 大势智慧携“实景三维+AI”信创产品体系亮相2024中国地理信息产业大会
  • 详解 HTTPS 与 TLS证书链校验
  • 避坑之:深信服AC跨三层取MAC(核心交换机是锐捷S7808C_RGOS 11.0(4)B2P1)
  • 实验室ICPR 2024论文分享┆DS MYOLO:一种基于状态空间模型的驾驶场景可靠目标检测器
  • Edge资源占用优化:调整浏览器设置与关闭自动更新检查