Amazon DynamoDB 入門
AWS データストアの活用
Dunieski Otano
AWS Solutions Architect
ホットパーティション問題
- 1人のレジ係が忙しく、3人が暇にしているレストランを想像してみましょう
- これが、パーティションキーの設計が不適切な場合に起こることです
- ホットパーティション = 特定のパーティションにトラフィックが集中し、他が遊んでいる状態
- 解決策:高カーディナリティのパーティションキー — 一意の値が多く、データを均等に分散できる属性

優れたパーティションキーの条件
- 高カーディナリティ:一意の値が多い
- userId、orderId、sessionId — 適切
- country、status、category — 不適切
- 均等な分散:アクセスパターンが偏らない
- 予測可能:クエリ時に値が確定している
DynamoDB テーブルの構造
- パーティションキー(必須):データの分散先を決定
- ソートキー(省略可):範囲クエリを有効化(例:userId + orderDate)
- 属性:追加のデータフィールド
- プライマリキー = パーティションキー、またはパーティションキー + ソートキー
最初のテーブルを作成する
- AWS コンソール:テスト用の簡単なセットアップ
- boto3(Python):プログラムによるテーブル作成
- 主な決定事項:パーティションキー、ソートキー、課金モード
複合キーとソートキーのクエリ
- 複合キー:パーティションキー + ソートキー
- 範囲クエリ:日付範囲や数値範囲でのクエリが可能
- 演算子:=、<、>、<=、>=、BETWEEN、begins_with
- 例:過去30日間に $100 以上のユーザーの注文を取得
キャパシティモード:オンデマンド vs プロビジョン済み
- オンデマンド:リクエストごとに課金、自動スケーリング
- 適している場面:予測困難なトラフィック、新規アプリケーション
- プロビジョン済み:RCU/WCU を指定、大規模利用でコスト削減
- 適している場面:安定したトラフィック、コスト最適化
- モードの切り替えは24時間に1回まで
Preparing Video For Download...