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

2024-08-31 12:20

本文主要是介绍【赵渝强老师】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

这篇关于【赵渝强老师】MongoDB的MMAPv1存储引擎的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123891

相关文章

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.