AWS DynamoDB インデックス設計
インデックスについて
セカンダリインデックス
グローバルセカンダリインデックス
パーティションキー及びソートキーをもつインデックス
キーはテーブルのものとは異なる可能性がある
パーティションをまたいでテーブル内の全てのデータを対象とする可能性がある (=グローバル)
テーブルのスループットとは異なるスループット設定がされる
ローカルセカンダリインデックス
パーティションキーはベーステーブルと同じで、そーとキーが異なるインデックス
同じパーティションキー値をもつベーステーブルのパーティションに限定される (=ローカル)
インデックスの読み書きのスループットはテーブルと共有される
DynamoDB のテーブルごとに、各々 5 つまでと決まっている。
設計パターン
以下の原則を守る。
インデックス数は最小限に抑える
ほとんど使用されないインデックスは、
大量の書き込みが発生する場合は作成しない
インデックス管理のための I/O オペレーションコストが割高になる
###
セカンダリインデックス
テーブル内の要素のサブセット + 代替キー
テーブルではなく、インデックスに対して Query を発行できる?
インデックスと紐づくテーブルを、ベーステーブルと呼ぶ
インデックスには、
代替キー (パーティションキー & ソートキー) を定義する
射影 (ベーステーブルからコピーしてくる属性軍) を定義する
ベーステーブルのプライマリキー属性も、インデックスにコピーされる
インデックス/テーブル間の整合性は、 DynamoDB によって自動的に取られる。
WIP