MongoDB核心知识点详解
一、MongoDB简介与特性
MongoDB是一种流行的开源文档型数据库管理系统,属于NoSQL(Not Only SQL)数据库的一种。它以其灵活性、高性能和易于扩展的特点著称,被广泛应用于现代互联网应用中。
1. NoSQL概述
-
定义: NoSQL(Not Only SQL)指非关系型数据库,是为大规模数据存储而设计的数据库系统。摒弃了传统关系型数据库的部分特性,如固定的表结构和ACID(原子性、一致性、隔离性、持久性)事务,转而强调更高的性能和可扩展性。
-
优点:
- 高并发读写:能够处理大量的并发请求。
- 海量数据存储:支持存储非常大的数据集。
- 高可扩展性:可以通过增加更多的硬件资源轻松扩展系统能力。
-
高可用性:具有强大的容错能力和灾难恢复机制。
-
缺点:
- 缺乏事务一致性:相比关系型数据库,事务支持较弱。
- 缺乏读写实时性:对实时性要求极高的场景不够理想。
- 不支持复杂查询:查询语言不如SQL丰富。
2. NoSQL数据库类型
- Key-Value:使用键值对的形式存储数据,适用于快速存取场景。
- 列式数据库:按列存储数据,适合大数据分析。
- 文档型数据库:以文档形式存储数据,MongoDB即属于此类。
- 图结构数据库:基于图形模型存储数据。
二、MongoDB数据模型
MongoDB采用了一种面向文档的数据模型,其中包含了数据库(Database)、集合(Collection)和文档(Document)三个主要组成部分。
1. 数据库(Database)
- MongoDB中的数据库是一个容器,用于组织相关的集合。每个数据库都是独立的,并且有自己的权限设置。
- 命名规则:
- 必须是任意的UTF-8字符串,例如“我的数据库”。
- 不能是空字符串。
- 不能包含特定字符如空格、
.
、$
、/
、\\
。 - 长度不得超过64个字节。
- 保留词:
admin
、local
、config
等。
2. 集合(Collection)
- 集合类似于关系型数据库中的表,用于存储文档。
3. 文档(Document)
- 文档是MongoDB中数据的基本单元,类似于关系型数据库中的行。每个文档是一个JSON格式的对象,具有灵活的结构。