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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
DynamoDB 入门/课时/DynamoDB Streams
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综合练习

DynamoDB Streams

变更捕获、Lambda 触发概念。

30 分钟

DynamoDB Streams

DynamoDB Streams 捕获表中 Item 级变更(INSERT / MODIFY / REMOVE),按时间排序推送给 Lambda 等消费者,实现 变更数据捕获(CDC)。

学习目标

  • 理解 Stream 记录结构与视图类型
  • 掌握 Stream → Lambda 的典型链路
  • 对照 MySQL binlog、MongoDB Change Streams

核心内容

启用 Stream

aws dynamodb update-table \
  --table-name UserProgress \
  --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES
StreamViewType内容
KEYS_ONLY仅主键
NEW_IMAGE变更后 Item
OLD_IMAGE变更前 Item
NEW_AND_OLD_IMAGES前后完整对比

事件结构(概念)

{
  "eventName": "MODIFY",
  "dynamodb": {
    "Keys": { "PK": "USER#u_1001", "SK": "LESSON#ddb-crud" },
    "NewImage": { "action": "complete", "viewCount": 3 },
    "OldImage": { "action": "view", "viewCount": 2 }
  }
}

Lambda 函数(aws-essentials)订阅 Stream ARN,批量处理 Records。

典型用途

UserProgress 写入/更新
        ↓ Stream
   Lambda 聚合 → 写入统计表 / 推 SNS / 同步 OpenSearch
        ↓
   MySQL cf_track 不受影响(权威数据仍走 JPA)
  • 异步 denormalize:进度变更更新「课程完成人数」计数
  • 审计日志:OLD/NEW 对比写 S3
  • 跨系统同步:推送到 MySQL 只读副本(最终一致)

对照 mongodb-essentials Change Streams;MySQL 用 binlog + Debezium(sql-essentials 进阶话题)。

注意事项

  • Stream 保留约 24 小时,消费者需幂等
  • 与全局表、事务写入的 ordering 需单独评估
  • 不要用 Stream 替代主库事务;cf_track 元数据变更仍走 MySQL

练习

  • 为 UserProgress 启用 NEW_AND_OLD_IMAGES Stream,查看 Stream ARN
  • 设计 Lambda 伪代码:MODIFY 时若 action 变为 complete 则 increment 计数
  • 对比 MongoDB Change Stream 与 DynamoDB Stream 的触发粒度

小结

Streams = Item 级 CDC,衔接 Lambda 做异步衍生数据;主库权威仍在 MySQL。 下一课 Spring 集成。

加载本节练习…
← 上一课Query 与 Scan下一课 →Spring 集成