引用元; https://d1.awsstatic.com/webinars/jp/pdf/services/20181225_AWS-BlackBelt_DynamoDB.pdf
パーティションキーのみ
- パーティションキーは
ハッシュキー
(hash key)とも呼ばれる(AWS のドキュメントだと hash key を利用している例が多いように思える。) - テーブルを作成後は変更できない
- テーブルからデータをフェッチするときは Scan または GetItem を使う
複合キー
- パーティションキー と ソートキー を組み合わせる方法
- ソートキーはレンジキー(range key) とも呼ばれる
- テーブルを作成後は変更できない
- Query でフェッチできる
- ソートキーのみの条件検索はできない (パーティションキーの指定が必須)
グローバル・セカンダリ・インデックス ( GSI )
- キー以外の項目を指定して検索できるようになる
- Query で GSI を指定してフェッチできる (キーの指定は不要)
- テーブル作成後でも変更可能
ローカル・セカンダリ・インデックス ( LSI )
- GSI と同じように機能する
- テーブル作成後は変更不可能
一般的に言えば、次の 2 つの理由から LSI を避けるべきです。
GSI とは異なり、テーブルの作成後に更新または削除することはできません。テーブル作成時にすべての LSI を指定する必要があります。これにより、かなり柔軟性がなくなります。
ローカル セカンダリ インデックスを使用してテーブルを作成する場合、そのテーブルにはパーティション キー値ごとに 10 GB のサイズ制限があります。
参考サイト