DynamoDB 的 CRUD 操作與 Query vs Scan
在 AWS 中使用資料儲存服務
Dunieski Otano
AWS Solutions Architect
昂貴的錯誤
- 開發者用 Scan 找單一使用者
- 讀完整個含 1,000,000 筆項目的資料表
- 帳單:查一次要 $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...