MongoDB开发使用手册
### MongoDB开发使用手册知识点梳理 #### 一、基础部分 **1.1 MongoDB简介** - **NoSQL背景:** - 随着互联网用户的快速增长和用户行为的变化,传统的关系型数据库在处理高并发读写操作、海量数据存储以及提供高可用性和高扩展性方面遇到了挑战。 - NoSQL(Not Only SQL)数据库应运而生,以解决这些挑战。 - **互联网发展阶段:** - **静态内容阶段:** - 特点:中心化的网站提供静态内容。 - 系统:Apache。 - **动态内容阶段:** - 特点:用户访问动态内容并提供少量内容。 - 系统:Apache+MySQL+PHP, IIS+ASP+SQL Server, IIS+ASP.NET+SQL Server, Tomcat+JSP+Oracle。 - **博客与去中心化阶段:** - 特点:Web 2.0网站的雏形,用户参与更多交互。 - 系统:高并发访问,数据库压力增大,引入Memcached缓存。 - **社交媒体与大规模系统阶段:** - 特点:用户频繁参与交互和内容提供,系统需进行用户行为分析。 - 系统:支持高并发、实时响应和分布式计算的NoSQL数据库。 - **NoSQL数据库特点:** - 支持高并发读写操作。 - 海量数据存储能力。 - 提供高可用性和高扩展性。 - 内存操作快速,支持并发量高。 - 分布式部署。 - 支持事务处理。 **1.2 主流NoSQL数据库介绍** - 本章节将对主流NoSQL数据库进行详细介绍,包括但不限于Memcached、Redis、HBase等。 **1.3 MongoDB概述** - **MongoDB内部结构:** - MongoDB采用文档模型,由数据库(Database)、集合(Collection)和文档(Document)组成。 - 每个数据库对应一个或多个文件,文件大小根据数据增长动态调整。 - 示例: - 创建两个数据库(`test`, `test1`),在两个集合(`user1`, `user2`)中插入记录。 - 文件大小以16MB开始,随后以16MB、32MB、64MB……直至2GB递增。 - **内存管理:** - MongoDB启动时加载文件到物理内存,内存管理交由操作系统。 - 使用MMAP技术将文件映射到虚拟内存,再映射到物理内存。 - 在32位系统中,由于内存限制,单个数据库文件的最大上限为2GB。 - 在64位系统中,内存上限大幅提高,因此单个数据库的上限也随之增加。 - 物理文件被分割成多个块,通过双向链表连接。 - 内存按照递增方式分配,以确保较大的数据库有足够的预留空间。 - MongoDB会定期进行内存压缩,释放空闲内存块,整理内存碎片,便于重新分配。 #### 二、MongoDB内部文件与内存管理详解 **2.1 数据库文件结构** - MongoDB的数据库文件存储在磁盘上,每个数据库对应一系列文件,包括数据文件和索引文件。 - 数据文件以固定的大小递增,最大不超过2GB。 - 索引文件用于加速查询操作,存储有关集合的信息。 **2.2 内存管理** - **MMAP映射机制:** - MongoDB利用MMAP映射文件到虚拟内存,再映射到物理内存。 - 这种机制使得文件可以直接作为内存的一部分被访问,提高了数据读写的效率。 - **内存分配策略:** - MongoDB采用预分配的方式管理内存。 - 当新数据插入时,系统查找是否有合适大小的空闲内存块可供分配;若没有,则分配新的内存块。 - 这种策略有助于避免小规模数据库占用过多磁盘空间,同时保证大规模数据库有足够的预留空间。 - **内存压缩与优化:** - MongoDB定期执行内存压缩操作,以释放未使用的内存区域,减少内存碎片。 - 通过移动数据、合并空闲块等方式,整理内存布局,提高内存利用率。 《MongoDB开发使用手册》不仅详细介绍了NoSQL数据库的历史背景和发展原因,还深入探讨了MongoDB的核心概念和技术细节。对于希望深入了解MongoDB及其应用的开发者来说,这些知识点提供了宝贵的学习资料。
剩余47页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip