DynamoDB の CRUD 操作と Query・Scan
AWS データストアの活用
Dunieski Otano
AWS Solutions Architect
コストの高いミス
- 開発者が Scan で 1 ユーザーを検索
- 100 万件のテーブル全体を読み取り
- 請求額:1 回の検索で $500
- Query なら $0.01 で済んだ
DynamoDB の CRUD 操作
- PutItem:アイテムの作成または置き換え
- GetItem:プライマリキーによるアイテムの読み取り
- UpdateItem:特定の属性の変更
- DeleteItem:アイテムの削除
- Query:パーティションキーによる取得(効率的)
- Scan:テーブル全体の読み取り(コスト大)
Query と Scan:重要な違い
- Query:パーティションキーが必要、特定のアイテムを読み取る
- Scan:テーブル全体を読み取り、後でフィルタリング
- 原則:キーがわかれば Query を使う。そうでなければ設計を見直す。
条件式による競合状態の防止
- 問題:2 人のユーザーが同じアイテムを同時に更新
- 解決策:条件式の使用
- 例:現在の値が期待値と一致する場合のみ更新
UpdateItem の式:属性の変更
- SET:属性値の設定または新規属性の作成
- ADD:数値の増減、セットへの追加
- REMOVE:アイテムから属性を削除
- DELETE:セットから要素を削除
Query と Scan のページネーション
- 問題:大きな結果セットが 1MB の上限を超える
- 解決策:
LastEvaluatedKey を使ったページネーション
- Limit:1 ページあたりのアイテム数を制御
LastEvaluatedKey が null になるまで繰り返す
Preparing Video For Download...