Module 04 · NoSQL Databases in Cloud云端 NoSQL 数据库
Overview of MongoDBMongoDB 概述
学习目标
观看本视频后,你将能够:
- 解释 MongoDB 是什么
- 列出 MongoDB 的不同组件
- 描述 MongoDB 的使用场景及优势
MongoDB 是什么?
MongoDB 是一种文档型(Document-Oriented)和NoSQL数据库,它的存储方式不同于传统的SQL 关系型数据库。
📌 传统 SQL 数据库 ⬇
- 以**表(Table)**的形式存储数据
- 每一行代表一个记录,每一列代表一个字段
📌 MongoDB ⬇
- 以文档(Document)形式存储数据
- 采用非关系型存储方式,无需固定的表结构
- 文档类似于 JSON 对象或 Python 字典
📝 示例:学生信息文档
{
"firstName": "John",
"lastName": "Doe",
"email": "johndoe@example.com",
"studentId": 12345
}
MongoDB 的核心组件
MongoDB 主要由 数据库(Database)、集合(Collection) 和 文档(Document) 组成。
| 组件 🔹 | 作用 📌 | 示例 📊 |
|---|---|---|
| 数据库(Database) | 存储所有数据的容器 | Campus Management DB |
| 集合(Collection) | 逻辑分组,类似 SQL 中的表 | Students、Employees |
| 文档(Document) | 具体数据记录,类似 SQL 的行 | { "firstName": "John", "lastName": "Doe" } |
📌 集合(Collection)
- 相似类型的文档会被存储在同一个集合中
- 例如:
- 学生信息文档存储在 Students 集合中
- 员工信息文档存储在 Employees 集合中
📌 文档(Document)
- 由多个字段(Field)组成,类似于 JSON 对象
- 每个字段都有唯一的名称,如 firstName, lastName, email, studentId
- 支持多种数据类型,例如:
- 日期(Date):
ISODate或 Unix 时间戳 - 数字(Number):整数(Integer)或小数(Decimal)
- 列表(List):支持存储多个值,包括不同类型的混合数据
- 嵌套文档(Sub-document):支持在文档内存储另一个文档
- 日期(Date):
MongoDB 的优势
1 灵活的数据存储方式
📌 传统的 SQL 数据库需要先设计模式(Schema),再创建表结构。
📌 MongoDB 采用动态模式(Schema-less),可以随时新增字段。
🚀 示例:添加一个新字段
如果想为学生记录添加出生日期(birthDate),在 SQL 数据库中需要 ALTER TABLE 语句,而在 MongoDB 中只需:
{
"firstName": "John",
"lastName": "Doe",
"email": "johndoe@example.com",
"studentId": 12345,
"birthDate": "1998-05-20"
}
2 适用于结构化 & 非结构化数据
📌 MongoDB 允许存储 结构化 或 非结构化 数据,并能轻松整合不同格式的数据源。
📝 示例:适用于多国家业务
如果一个校园管理系统扩展到 美国,美国的地址使用 zip code 而非 postcode,MongoDB 允许灵活存储:
{
"studentId": 12345,
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zipCode": "10001"
}
}
3 高可用性(High Availability)
MongoDB 通过复制集(Replica Set) 实现高可用性,确保数据不会因单点故障而丢失。
📌 复制集可在多个服务器间存储数据副本,提供故障恢复能力。
📌 主从复制架构(Primary-Secondary Replication) 确保服务不中断。
4 水平 & 垂直扩展(Scalability)
MongoDB 支持水平扩展(Sharding) 和 垂直扩展(Scaling Up)。
| 扩展方式 | 说明 | 适用场景 |
|---|---|---|
| 垂直扩展(Scaling Up) | 增加更快的 CPU、更多的 RAM、更大的存储 | 适用于小规模数据增长 |
| 水平扩展(Sharding) | 通过分片(Sharding)将数据分布到多个服务器 | 适用于大规模数据存储,如社交媒体、日志系统 |
💡 MongoDB 可用于本地部署(On-Premises)、混合云(Hybrid Cloud)或全托管云服务(Fully Managed Cloud Service)
- IBM Cloud Databases for MongoDB
- MongoDB Atlas(支持 AWS、Azure、Google Cloud)
总结
🎯 本视频要点回顾:
- MongoDB 是 NoSQL 和文档型数据库,以 JSON 格式存储数据。
- 支持多种数据类型,包括日期、数字、列表、子文档等。
- 文档存储方式更灵活,无需预先定义表结构,可随时添加字段。
- 数据按集合(Collection)组织,类似 SQL 数据库的表(Table)。
- 适用于存储结构化 & 非结构化数据,适应多变的业务需求。
- 提供高可用性(HA)和水平/垂直扩展能力,支持大规模数据存储。
- MongoDB 可运行在本地、混合云或完全托管的云服务上。
🚀 MongoDB 作为现代 NoSQL 数据库的代表,广泛应用于大数据、实时分析、物联网(IoT)等领域!