DynamoDB の CRUD 操作と Query・Scan

AWS データストアの活用

Dunieski Otano

AWS Solutions Architect

コストの高いミス

  • 開発者が Scan で 1 ユーザーを検索
  • 100 万件のテーブル全体を読み取り
  • 請求額:1 回の検索で $500
  • Query なら $0.01 で済んだ

ミス

AWS データストアの活用

DynamoDB の CRUD 操作

  • PutItem:アイテムの作成または置き換え
  • GetItem:プライマリキーによるアイテムの読み取り
  • UpdateItem:特定の属性の変更
  • DeleteItem:アイテムの削除
  • Query:パーティションキーによる取得(効率的)
  • Scan:テーブル全体の読み取り(コスト大)

ops

AWS データストアの活用

Query と Scan:重要な違い

  • Query:パーティションキーが必要、特定のアイテムを読み取る
    • 高速・効率的・低コスト
  • Scan:テーブル全体を読み取り、後でフィルタリング
    • 低速・高コスト、可能な限り避けること
  • 原則:キーがわかれば Query を使う。そうでなければ設計を見直す。

scan

AWS データストアの活用

条件式による競合状態の防止

  • 問題:2 人のユーザーが同じアイテムを同時に更新
  • 解決策:条件式の使用
  • 例:現在の値が期待値と一致する場合のみ更新

race

AWS データストアの活用

UpdateItem の式:属性の変更

  • SET:属性値の設定または新規属性の作成
  • ADD:数値の増減、セットへの追加
  • REMOVE:アイテムから属性を削除
  • DELETE:セットから要素を削除

expressions

AWS データストアの活用

Query と Scan のページネーション

  • 問題:大きな結果セットが 1MB の上限を超える
  • 解決策LastEvaluatedKey を使ったページネーション
  • Limit:1 ページあたりのアイテム数を制御
  • LastEvaluatedKey が null になるまで繰り返す

pagination

AWS データストアの活用

練習しましょう!

AWS データストアの活用

Preparing Video For Download...