データモデリング

ここが DynamoDB と SQL が最も大きく分かれる部分です。エンティティごとに 1 テーブルへ正規化するのではなく、アクセスパターンから出発し、それに応えるキーを設計します。多くの場合、すべてのエンティティを 1 つのテーブルに詰め込みます。正しくやれば、親とその子を 1 回の Query で取得でき、JOIN は不要です。

間違えると、Query できないテーブルと、実行できないマイグレーションができあがります。だからトレードオフが重要であり、このセクションではシングルテーブル設計が誤った選択になるケースを正直に扱います。

7 件中 0 件読了クイズ
DynamoDB のシングルテーブル設計
DynamoDB のシングルテーブル設計 — オーバーロードしたキーを持つ1つのテーブルがエンティティごとのテーブルに勝る理由を、具体的な注文/顧客の例と GSI オーバーロードのパターンとともに解説。
中級読了 4 分
DynamoDB でのデータモデリング
アクセスパターン優先の方法で DynamoDB のデータをモデリングする方法 — マルチプレイヤーのリーダーボードのクエリをパーティションキーとソートキーに変える段階的な解説。
中級読了 8 分
DynamoDB でシングルテーブル設計を使うべきでないとき
DynamoDB でシングルテーブル設計を使うべきでないとき — 複数テーブルが勝つワークロード(重い分析、単純な CRUD、独立したスケーリング)を、具体例とともに解説。
中級読了 6 分
DynamoDB の Type 属性
DynamoDB の Type 属性 — 行を識別し、GSI を1つのエンティティに絞り込み、将来のマイグレーションを乗り切るために、すべてのアイテムにエンティティ型を刻む理由。
中級読了 7 分
DynamoDB における非正規化
DynamoDB の非正規化 — なぜ結合する代わりにデータを複製するのか。ブログの著者名の例、陳腐化の罠、そして埋め込みと複製をいつ選ぶか。
中級読了 6 分
DynamoDB のシングルトンアイテム
DynamoDB のシングルトンアイテム — フィーチャーフラグや設定のようなグローバルな状態を保持する固定キーの1行。GetItem で取得する理由と、競合なしに更新する方法。
中級読了 7 分
理解度チェッククイズに挑戦
このセクションで学んだ内容を確認しましょう。

シングルテーブル設計から始めてください。その後のすべてはこのメンタルモデルを前提とします。

DynoTable を試すと、これらのレイアウトをライブのテーブルに対してモデリングし、ブラウズできます。