CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
DynamoDB 入门/课时/综合练习
RawBlame
课时目录12 节

DynamoDB 入门

  1. 01DynamoDB 是什么
  2. 02数据模型
  3. 03分区键与排序键
  4. 04CRUD 与条件写
  5. 05GSI 与 LSI
  6. 06Query 与 Scan
  7. 07DynamoDB Streams
  8. 08Spring 集成
  9. 09容量模式
  10. 10时序库对照
  11. 11DynamoDB vs MySQL
  12. 12综合练习

综合练习

设计 UserProgress 表 PK/SK + GSI。

40 分钟

综合练习

本课串联 键设计 → CRUD → GSI → Query → Streams 概念,设计 UserProgress 实验表。主库 cf_track 仍在 MySQL,DynamoDB 只承载 Serverless 实验数据。

学习目标

  • 完成 UserProgress 表 PK/SK + GSI 设计与 CLI 实现
  • 用 Query 实现用户进度列表与按课时反查
  • 可选:Spring lab profile 暴露读写 API

核心内容

任务一:建表与键设计

需求:记录用户对课时的 view/complete,支持「某用户全部进度」「某课时全部用户」。

Table: CodeRoadMapLab-UserProgress
PK  = USER#<userId>
SK  = LESSON#<lessonSlug>
GSI ByLesson:
  GSI1PK = LESSON#<lessonSlug>
  GSI1SK = USER#<userId>
aws dynamodb create-table \
  --table-name CodeRoadMapLab-UserProgress \
  --attribute-definitions \
      AttributeName=PK,AttributeType=S AttributeName=SK,AttributeType=S \
      AttributeName=GSI1PK,AttributeType=S AttributeName=GSI1SK,AttributeType=S \
  --key-schema AttributeName=PK,KeyType=HASH AttributeName=SK,KeyType=RANGE \
  --global-secondary-indexes file://gsi-by-lesson.json \
  --billing-mode PAY_PER_REQUEST

对照 MySQL:在 sql-essentials 写 user_progress(user_id, lesson_slug, action, ...) + 两个索引。

任务二:写入与查询

  1. PutItem 至少 20 条(3 user × 5 lesson,混合 view/complete)
  2. Query PK=USER#u_1001,SK 降序
  3. Query GSI GSI1PK=LESSON#ddb-crud,统计 complete 人数
  4. UpdateItem:viewCount 自增 + ConditionExpression 防并发覆盖

参考 ddb-crud、ddb-query。

任务三(可选):Spring + Streams

  • ddb-spring:UserProgressStore + /api/lab/progress GET/PUT
  • 启用 Stream,伪代码描述 complete 时异步更新「课时完成计数」表
  • 不要修改 MySQL TrackController 或 cf_track 写入路径

验收清单

项标准
无 Scan 主路径用户列表、课时反查均 Query/GSI
热点PK 按用户分散,无 GLOBAL# 单键
权威边界cf_track 只读对照,不写 DynamoDB 镜像

练习

  • 完成任务一、二 CLI 脚本并保存为 lab-user-progress.sh
  • GSI Query 结果与手工计数一致
  • 写 200 字:为何 progress 可实验放 DynamoDB、cf_track 必须留 MySQL

小结

UserProgress = PK/SK + GSI 最佳练手;MySQL 仍管 cf_track 权威数据。 恭喜完成 DynamoDB 入门 track!

加载本节练习…
← 上一课DynamoDB vs MySQL