DynamoDB 的 CRUD 操作与 Query 和 Scan
在 AWS 中使用数据存储
Dunieski Otano
AWS Solutions Architect
代价高昂的失误
- 开发者用 Scan 查找单个用户
- 读取了整张 100 万项的表
- 费用:一次查找花了 $500
- 用 Query 只需 $0.01
DynamoDB 的 CRUD 操作
- PutItem:创建或替换项
- GetItem:按主键读取项
- UpdateItem:修改特定属性
- DeleteItem:删除项
- Query:按分区键检索项(高效)
- Scan:读取整表(昂贵)
Query vs Scan:关键差异
- Query:需分区键,只读特定项
- Scan:读整表,事后再过滤
- 原则:若已知键,用 Query;否则重思设计。
用条件表达式防止竞态条件
- 问题:两位用户同时更新同一项
- 解决:条件表达式
- 示例:仅在当前值等于期望值时更新
UpdateItem 表达式:修改属性
- SET:设置属性值或新建属性
- ADD:数字自增/自减,向集合添加
- REMOVE:从项中删除属性
- DELETE:从集合中移除元素
Query 与 Scan 的分页
- 问题:结果集过大,超过 1MB 限制
- 解决:用 LastEvaluatedKey 分页
- Limit:控制每页项数
- 直到 LastEvaluatedKey 为 null 再停止
Preparing Video For Download...