基礎

DynamoDB を列のあるスプレッドシートのようにモデル化してから、スキーマも ALTER TABLE もなく、プライマリキーがディスク上の住所だと気づく。あとで スケッチするアクセスパターンは、どれもその住所に収まるか、それと戦うかだ。

このセクションは型付き値モデル、1 つのパーティションキーの下でアイテムが コレクションにまとまる仕組み、そして一貫性の選択がなぜどの読み取り API にも 出てくるか。SQL の癖はここで捨てる。属性はアイテムごとに任意で、型は API 境界で重要であり、複合キーはメタデータではなく — データの物理的なソート順だ。

読み終えたらできること

  • 任意の DynamoDB アイテムを見て、JSON から推測せずに各属性の型を言える。
  • なぜ Query が 1 つのアイテムコレクションを返すのか、パーティションキーと ソートキーがディスク上で実際に何を制御するかを説明できる。
  • 非正規化の前にアイテムサイズを見積もり、400 KB の硬上限がいつ書き込みを 拒否するかを知っている。
  • 読み取りで強整合と結果整合のどちらを選ぶか決め、古いデータが UI で何を 犠牲にするか予測できる。

読む順番

次の順でガイドを進める。各ステップは前のものを前提にする。

  1. いつ DynamoDB を使うか — キーバリュー設計に ストレージと移行コストを投じる前の、向き/不向きの判断。
  2. データ型SNB、セット、リスト、 マップ。すべての API 呼び出しが守るべき型タグ。
  3. JSON マーシャリング — 素の JSON が 型付き DynamoDB 属性になる経路と、黙った型変換が刺さる場所。
  4. アイテムサイズ上限 — 400 KB の上限、 何がカウントされるか、子をインラインに詰めると超えるパターン。
  5. アイテムベースの操作 — すべての操作は アイテム全体が対象。部分更新は式であり、列書き込みではない。
  6. アイテムコレクション — 同じ パーティションキーを共有する全アイテム。1 回の Query がソート順で辿れる単位。
  7. 複合プライマリキー — パーティション + ソートキーとしての物理配置。DynamoDB の「プライマリキー」がスカラーではなく 範囲である理由。
  8. 一貫性 — ベーステーブルでの強整合と結果整合。 GSI に対して要求できること/できないこと。
10 件中 0 件読了クイズ
DynamoDBをいつ使うべきか(そしていつ使うべきでないか)
DynamoDB をいつ使い、いつ使わないべきか — リレーショナルデータベースより有利になるアクセスパターン・スケール・コストのシグナルと、不向きなワークロード。
初級読了 10 分
DynamoDB のデータ型:全型を例付きで
DynamoDB の 10 のデータ型 — スカラー(S、N、B、BOOL、NULL)、ドキュメント(M、L)、セット(SS、NS、BS)、DynamoDB-JSON での見え方、キーになれる型。
初級読了 6 分
DynamoDB JSON とマーシャリング
DynamoDB JSON とマーシャリング — なぜすべての値が型タグで包まれるのか、この形式が素の JSON とどう違うのか、そして両者をどう変換するのか。
初級読了 6 分
DynamoDB のアイテムサイズ上限(400 KB)
DynamoDB の 400 KB アイテムサイズ上限 — 何がカウントされるか、属性名とネストがどう積み上がるか、そして際限のないアイテムの肥大化を避けるモデリング。
初級読了 5 分
DynamoDB の制限とクォータ:実サービスに対して検証
DynamoDB の全制限とクォータを、超過時に実サービスが返すそのままのエラー付き — アイテム/キーサイズ、バッチ/トランザクション、インデックス数、式長、1 MB ページ。
中級読了 10 分
DynamoDBのアイテムベース操作
DynamoDBのアイテムベース操作 — GetItem、PutItem、UpdateItem、DeleteItemは、それぞれ完全なプライマリキーで単一のアイテムを指定する。QueryやScanとの違いも。
初級読了 7 分
DynamoDB のアイテムコレクション
DynamoDB のアイテムコレクション — 同じパーティションキーを共有する全アイテム — が効率的な Query 読み取りの単位である理由と、注意すべき制限。
初級読了 8 分
DynamoDB 複合プライマリキー:パーティションキー + ソートキー
DynamoDB の複合プライマリキーはパーティションキー + ソートキー — 関連アイテムをまとめてグループ化し、単純なキーではできない範囲クエリを可能にします。
初級読了 7 分
DynamoDB の強い整合性と結果整合性のある読み取り
DynamoDB の強い整合性と結果整合性のある読み取り — それぞれの保証、`ConsistentRead` の 2 倍の RCU コスト、GSI が結果整合性のみである理由。
中級読了 7 分
理解度チェッククイズに挑戦
このセクションで学んだ内容を確認しましょう。

USER#123 上の複合キーにソートキー PROFILEORDER#… があれば、1 回の Query でユーザーのプロフィールと直近の注文を時刻順に返せる。アイテム コレクションを誤解すると、テーブルを Scan するか、各行を GetItem で 取るか — どちらもスケールが悪く、どちらも請求に出る。

DynoTable で手を動かす

DynoTable でライブテーブルを開き、グリッドでキーを確認する。 テーブルの概要はパーティションキーとソートキーの名前に加え、すべての GSI を 示すので、クエリを書く前にアイテムのまとまり方が見える。サンプルアイテムを 無料の アイテムサイズ計算機 に貼ると、400 KB 上限に向けたバイト数が測れる。子レコードを 3 つ非正規化すると、読み取り/ 書き込みキャパシティユニットの切り上げが始まる 1 KB の線を越えがちだ。

ビジュアルなフィルタービルダーは型対応の演算子でハッシュキーとレンジキーの 条件を足せるので、JSON を手書きせず、実コレクションに対する Query を練習できる。 無料の読み取り専用アクセスはクエリ、PartiQL SELECT、エクスポートをカバーする。 書き込みには有料トライアルまたはライセンスが必要。

DynoTable をダウンロードして、読み進めながら自分のテーブルで これらのプリミティブを動かそう。