4.7 KiB
基础概念
本章节将介绍 NoSQL 数据库的基本概念,并深入探讨 MongoDB 的核心概念、架构原理,为后续的学习打下坚实的基础。
NoSQL 数据库概述
NoSQL(Not Only SQL)泛指非关系型数据库,它们在数据结构、可扩展性和事务模型上与传统的关系型数据库(如 MySQL)有显著不同。
关系型数据库 vs NoSQL 数据库
特性 | 关系型数据库 (RDBMS) | NoSQL 数据库 |
---|---|---|
数据模型 | 基于表(Table)和行(Row)的结构化数据 | 多样化模型(文档、键值、列族、图) |
Schema | 固定(Schema-on-Write),需预先定义表结构 | 动态(Schema-on-Read),数据结构灵活 |
扩展性 | 主要通过垂直扩展(Scale-Up)提升单机性能 | 主要通过水平扩展(Scale-Out)构建分布式集群 |
事务 | 遵循 ACID 原则,保证强一致性 | 通常遵循 BASE 原则,保证最终一致性 |
适用场景 | 事务性要求高、数据结构稳定的应用 | 大数据、高并发、需要快速迭代的应用 |
NoSQL 数据库分类
NoSQL 数据库根据其数据模型的不同,主要分为以下几类:
-
文档型数据库 (Document-Oriented)
- 特点:以文档(通常是 JSON 或 BSON 格式)为单位存储数据,结构灵活。
- 代表:MongoDB, CouchDB
-
键值型数据库 (Key-Value)
- 特点:数据以简单的键值对形式存储,查询速度快。
- 代表:Redis, Memcached
-
列族型数据库 (Column-Family)
- 特点:数据按列族存储,适合大规模数据聚合分析。
- 代表:Cassandra, HBase
-
图形型数据库 (Graph)
- 特点:专注于节点和边的关系,适合社交网络、推荐系统等场景。
- 代表:Neo4j, ArangoDB
MongoDB 在 NoSQL 生态中的定位
MongoDB 是文档型数据库的杰出代表,它凭借其灵活的数据模型、强大的查询语言和高可扩展性,在 NoSQL 生态中占据了重要地位。它特别适用于需要快速开发、数据结构多变、高并发读写的应用场景。
核心概念
理解 MongoDB 的核心概念是掌握其使用的第一步。
文档(Document)与 BSON 格式
-
文档 (Document):是 MongoDB 中数据的基本单元,由一组键值对(key-value)组成,类似于 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 官方文档中关于“核心概念”的部分。