大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
DynamoDB 是什么
Amazon DynamoDB 是 AWS 托管的 Serverless NoSQL 键值/文档 数据库,按请求计费、自动扩缩容。它与 MySQL 不是替代关系,而是 不同访问模式与运维模型的选型。
学习目标
- 理解 DynamoDB 与关系库、MongoDB 的定位差异
- 知道 Serverless 数据层的典型适用场景
- 明确 CodeRoadMap 仍以 MySQL
cf_track为权威数据源
核心内容
DynamoDB vs 其他数据库
| DynamoDB | MySQL(sql-essentials) | MongoDB(mongodb-essentials) | |
|---|---|---|---|
| 部署 | AWS 全托管 | 自建/RDS | 自建/Atlas |
| 模型 | Item + PK/SK | 行 + 表 + JOIN | 文档 Collection |
| 查询 | 按主键/索引 Query | 任意 SQL | MQL find/aggregate |
| 扩展 | 分区水平扩展 | 垂直/分库分表 | 分片集群 |
// DynamoDB Item 示例(UserProgress)
{
"PK": "USER#u_1001",
"SK": "LESSON#mongo-crud",
"trackSlug": "mongodb-essentials",
"action": "complete",
"updatedAt": "2026-03-01T10:00:00Z"
}
MySQL 中同等数据在 cf_track / cf_lesson / 进度表多表关联;MongoDB 可单文档嵌套,DynamoDB 则靠 PK/SK 设计 表达关系。
适用场景
- 高并发键值访问:会话、购物车、游戏状态
- AWS Serverless 栈:Lambda + API Gateway + DynamoDB(见 aws-essentials)
- 可预测访问模式:已知查询路径,用 GSI 支撑(见 ddb-gsi)
不适合:复杂 ad-hoc 报表、多表 JOIN 分析(postgresql-essentials + SQL 更合适)。
在本站架构里
platform → Spring Boot → MySQL(cf_track、cf_lesson 等权威数据)
↓
DynamoDB(可选,Serverless 实验/高并发进度缓存)
schema.sql 中 cf_track 存课程元数据;本 track 教你 何时、如何 在 AWS 侧引入 DynamoDB,而非替换主库。
练习
- 在 AWS 控制台搜索 DynamoDB,浏览表列表与 Region 选择
- 对比上方 Item 与
cf_track行结构,列出 3 处差异 - 写一句话:为何课程列表仍用 MySQL 而非 DynamoDB
小结
DynamoDB = AWS 托管、按访问模式设计的 NoSQL;本站 MySQL 仍是权威数据源。 下一课数据模型:Table、Item、Attribute。