インデックス (Indexes)

セカンダリインデックスは、同じデータに対する 2 つ目のアクセスパターン、つまり別のパーティションキーとソートキーを与えてくれます。SQL から来た人が陥る罠は、GSI を気軽に追加できる B-tree インデックスのように扱うことです。そうではありません。GSI は独自のキー、独自のコスト、独自の整合性ルールを持つ、データの複製コピーです。

このセクションでは、正しいインデックスの種類を選ぶこと、インデックスを安く保つこと、そして本番で噛みついてくる落とし穴 — 古い読み取りや、テーブルではなくインデックスに起因する書き込みのスロットリング — を扱います。

7 件中 0 件読了クイズ
DynamoDB の GSI vs LSI
DynamoDB の GSI vs LSI — パーティションキー、整合性、キャパシティ、10 GB の違い、そしてどちらのセカンダリインデックスに手を伸ばすかのシンプルなルール。
初級読了 3 分
DynamoDB のインデックス射影
DynamoDB のインデックス射影 — KEYS_ONLY、INCLUDE、ALL がそれぞれ GSI や LSI に何をコピーするか、書き込みコストのトレードオフ、そして射影されていない属性が読み取りを増やす理由。
中級読了 5 分
DynamoDB のスパースインデックス
DynamoDB のスパースインデックスは、グローバルセカンダリインデックスに、そのキーを持つアイテムだけを保持させます — 大きなテーブルの小さなサブセットをクエリする最も安価な方法です。
中級読了 7 分
DynamoDB のキーオーバーロード
DynamoDB のキーオーバーロード — 汎用的な pk/sk という名前の下に多数のエンティティ型を格納し、型をキーの値にエンコードして、begins_with でそれぞれを切り出す。
上級読了 6 分
DynamoDB の GSI が結果整合性である理由
DynamoDB の GSI が結果整合性である理由 — 書き込み直後の読み取りで古い結果が返る落とし穴、その裏にある伝播の仕組み、そしてそれを前提に設計する方法。
中級読了 7 分
DynamoDB で GSI がベーステーブルの書き込みをスロットルする理由
プロビジョニング不足の DynamoDB GSI がベーステーブルの書き込みをスロットルする理由 — GSI バックプレッシャー、ホットなインデックスパーティション、注意すべき例外、そしてその直し方。
上級読了 6 分
理解度チェッククイズに挑戦
このセクションで学んだ内容を確認しましょう。

GSI と LSI から始めてください。残りは違いを知っている前提です。

DynoTable を試すと、インデックスを直接確認して Query できます。