Files
Cloud-book/数据库/MongoDB_2025/MongoDB基础概念.md
2025-08-27 17:10:05 +08:00

113 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 基础概念
本章节将介绍 NoSQL 数据库的基本概念,并深入探讨 MongoDB 的核心概念、架构原理,为后续的学习打下坚实的基础。
---
## NoSQL 数据库概述
NoSQLNot Only SQL泛指非关系型数据库它们在数据结构、可扩展性和事务模型上与传统的关系型数据库如 MySQL有显著不同。
### 关系型数据库 vs NoSQL 数据库
| 特性 | 关系型数据库 (RDBMS) | NoSQL 数据库 |
| :--- | :--- | :--- |
| **数据模型** | 基于表Table和行Row的结构化数据 | 多样化模型(文档、键值、列族、图) |
| **Schema** | 固定Schema-on-Write需预先定义表结构 | 动态Schema-on-Read数据结构灵活 |
| **扩展性** | 主要通过垂直扩展Scale-Up提升单机性能 | 主要通过水平扩展Scale-Out构建分布式集群 |
| **事务** | 遵循 ACID 原则,保证强一致性 | 通常遵循 BASE 原则,保证最终一致性 |
| **适用场景** | 事务性要求高、数据结构稳定的应用 | 大数据、高并发、需要快速迭代的应用 |
### NoSQL 数据库分类
NoSQL 数据库根据其数据模型的不同,主要分为以下几类:
1. **文档型数据库 (Document-Oriented)**
- **特点**:以文档(通常是 JSON 或 BSON 格式)为单位存储数据,结构灵活。
- **代表**MongoDB, CouchDB
2. **键值型数据库 (Key-Value)**
- **特点**:数据以简单的键值对形式存储,查询速度快。
- **代表**Redis, Memcached
3. **列族型数据库 (Column-Family)**
- **特点**:数据按列族存储,适合大规模数据聚合分析。
- **代表**Cassandra, HBase
4. **图形型数据库 (Graph)**
- **特点**:专注于节点和边的关系,适合社交网络、推荐系统等场景。
- **代表**Neo4j, ArangoDB
### MongoDB 在 NoSQL 生态中的定位
MongoDB 是文档型数据库的杰出代表,它凭借其灵活的数据模型、强大的查询语言和高可扩展性,在 NoSQL 生态中占据了重要地位。它特别适用于需要快速开发、数据结构多变、高并发读写的应用场景。
---
## 核心概念
理解 MongoDB 的核心概念是掌握其使用的第一步。
### 文档Document与 BSON 格式
- **文档 (Document)**:是 MongoDB 中数据的基本单元由一组键值对key-value组成类似于 JSON 对象。文档的结构是动态的,同一个集合中的文档可以有不同的字段。
```json
{
"_id": ObjectId("60c72b2f9b1d8b3b8c8b4567"),
"name": "Alice",
"age": 30,
"email": "alice@example.com",
"tags": ["mongodb", "database", "nosql"]
}
```
- **BSON (Binary JSON)**MongoDB 在内部使用 BSON 格式存储文档。BSON 是 JSON 的二进制表示形式,它支持更多的数据类型(如日期、二进制数据),并优化了存储空间和查询性能。
### 集合Collection概念
- **集合 (Collection)**:是 MongoDB 文档的容器可以看作是关系型数据库中的表Table。但与表不同集合不需要预先定义结构schema-less
### 数据库Database结构
- **数据库 (Database)**:是集合的物理容器。一个 MongoDB 实例可以承载多个数据库,每个数据库都有自己独立的权限和文件。
### MongoDB 与关系型数据库术语对比
| MongoDB | 关系型数据库 (RDBMS) |
| :--- | :--- |
| Database | Database |
| Collection | Table |
| Document | Row (or Record) |
| Field | Column (or Attribute) |
| Index | Index |
| Replica Set | Master-Slave Replication |
| Sharding | Partitioning |
---
## 架构原理
了解 MongoDB 的底层架构有助于我们更好地进行性能调优和故障排查。
### 存储引擎WiredTiger
WiredTiger 是 MongoDB 默认的存储引擎,它提供了文档级别的并发控制、数据压缩和快照等高级功能,是 MongoDB 高性能的关键。
### 内存映射文件系统
MongoDB 使用内存映射文件Memory-Mapped Files来处理数据。它将磁盘上的数据文件映射到内存中使得 MongoDB 可以像访问内存一样访问数据,从而将数据管理委托给操作系统的虚拟内存管理器,简化了代码并提升了性能。
### 索引机制
为了提高查询效率MongoDB 支持在任意字段上创建索引。与关系型数据库类似MongoDB 的索引也采用 B-Tree 数据结构,能够极大地加速数据检索过程。
### 查询优化器
MongoDB 内置了一个查询优化器,它会分析查询请求,并从多个可能的查询计划中选择一个最优的执行计划,以确保查询的高效性。
---
## 文档学习
- 阅读 MongoDB 官方文档中关于“核心概念”的部分。