Coursera 笔记

Module 04 · NoSQL Databases in Cloud云端 NoSQL 数据库

Advantages of MongoDBMongoDB 的优势

Coursera ↗

学习目标

观看本视频后,你将能够:

  • 识别 MongoDB 的核心优势
  • 解释 MongoDB 如何满足不断变化的数据需求

MongoDB 的关键优势

1 灵活的模式(Schema)

MongoDB 采用灵活模式(Flexible Schema),支持存储不同结构的数据。

📌 示例:不同国家的地址格式

  • 🇬🇧 英国地址:包含邮政编码(Postcode),但没有邮政区号(Zip Code)
  • 🇺🇸 美国地址:包含邮政区号(Zip Code),但没有邮政编码(Postcode)

在 关系型数据库 中,每一行的字段必须一致,因此可能需要:

  1. 使用一个通用字段(但不够直观)
  2. 创建多个字段(导致数据冗余)

MongoDB 允许直接存储这些不同结构的数据,无需预定义固定的模式,例如:

{
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "state": "NY",
        "zipCode": "10001"
    }
}

{
    "address": {
        "street": "45 Baker St",
        "city": "London",
        "postcode": "W1U 8EW"
    }
}

💡 MongoDB 让数据存储更直观、灵活,且无须填充无意义字段!


2 代码优先(Code-First)开发

在关系型数据库(RDBMS)中,使用数据库前需要先定义表结构,然后才能读写数据。

📌 MongoDB 采用代码优先(Code-First)方式

  • 无需预定义表结构
  • 直接连接数据库即可写入数据
  • 减少开发初期的复杂性

🚀 示例:直接写入数据(无需创建表):

{
    "name": "Alice",
    "age": 25,
    "skills": ["Python", "MongoDB"]
}

📌 无需借助第三方 ORM(如 Hibernate)来管理数据访问!


3 进化式模式(Evolving Schema)

在现代应用中,数据需求会不断变化,例如:

📌 快递公司需要存储送货地址
🚚 2020 年疫情后,企业需要新增无接触配送字段。

  • 传统 SQL 数据库:必须修改表结构(ALTER TABLE)
  • MongoDB:可以直接新增字段,无需变更已有数据
{
    "orderId": 12345,
    "address": "456 Elm St",
    "contactlessDelivery": true
}

💡 MongoDB 让数据模式可以随业务需求快速调整,无需复杂的数据库迁移!


4 强大的查询 & 分析能力

MongoDB 具备强大的查询功能,包括:

📌 MongoDB 查询语言(MQL)

  • 提供丰富的操作符,支持复杂查询
  • 语法类似于 JSON,易于理解

📌 聚合管道(Aggregation Pipeline)

  • 类似 SQL 中的 GROUP BY 和 HAVING
  • 适用于复杂数据分析

🚀 示例:按年级分组学生成绩,查找每学期最高分

db.students.aggregate([
    { "$group": { "_id": "$yearGroup", "topScore": { "$max": "$score" } } }
])

💡 MongoDB 可直接在服务器端进行数据分析,提高查询性能!


5 高可用性(High Availability)

MongoDB 通过复制集(Replica Set)实现高可用性(HA),即:

  • 典型部署为 3 节点(Primary + 2 Secondaries)
  • 主节点(Primary) 处理写入,副本节点(Secondary) 处理读取
  • 自动故障转移(Failover),当主节点故障时,副本节点可自动接管

📌 示例:MongoDB 复制集架构

+---------------------+
|   Primary Node     |  <-- 主要处理读写
+---------------------+
        |      
+---------------------+   +---------------------+
| Secondary Node 1  |   | Secondary Node 2  |  <-- 处理读请求 & 备份
+---------------------+   +---------------------+

💡 MongoDB 复制集可防止单点故障,提高系统稳定性!


总结

🎯 本视频要点回顾:

  • MongoDB 具备灵活的模式(Flexible Schema),可存储不同结构的数据
  • 采用代码优先(Code-First)方式,无需预先定义表结构
  • 支持进化式模式(Evolving Schema),可快速适应业务需求变化
  • 提供强大的查询 & 聚合能力,可直接在服务器端执行复杂分析
  • 内置高可用性(High Availability),支持复制集(Replica Set)保障数据安全

🚀 MongoDB 适用于云端应用、大数据存储、实时分析、物联网(IoT)等场景,是现代数据库的强大选择!