DynamoDB 的 CRUD 操作与 Query 和 Scan

在 AWS 中使用数据存储

Dunieski Otano

AWS Solutions Architect

代价高昂的失误

  • 开发者用 Scan 查找单个用户
  • 读取了整张 100 万项的表
  • 费用:一次查找花了 $500
  • 用 Query 只需 $0.01

失误

在 AWS 中使用数据存储

DynamoDB 的 CRUD 操作

  • PutItem:创建或替换项
  • GetItem:按主键读取项
  • UpdateItem:修改特定属性
  • DeleteItem:删除项
  • Query:按分区键检索项(高效)
  • Scan:读取整表(昂贵)

操作

在 AWS 中使用数据存储

Query vs Scan:关键差异

  • Query:需分区键,只读特定项
    • 快速、高效、低成本
  • Scan:读整表,事后再过滤
    • 慢、昂贵,尽量避免
  • 原则:若已知键,用 Query;否则重思设计。

扫描

在 AWS 中使用数据存储

用条件表达式防止竞态条件

  • 问题:两位用户同时更新同一项
  • 解决:条件表达式
  • 示例:仅在当前值等于期望值时更新

竞态

在 AWS 中使用数据存储

UpdateItem 表达式:修改属性

  • SET:设置属性值或新建属性
  • ADD:数字自增/自减,向集合添加
  • REMOVE:从项中删除属性
  • DELETE:从集合中移除元素

表达式

在 AWS 中使用数据存储

Query 与 Scan 的分页

  • 问题:结果集过大,超过 1MB 限制
  • 解决:用 LastEvaluatedKey 分页
  • Limit:控制每页项数
  • 直到 LastEvaluatedKey 为 null 再停止

分页

在 AWS 中使用数据存储

让我们来练习!

在 AWS 中使用数据存储

Preparing Video For Download...