プライマリキー、インデックス
プライマリキー、インデックスは以下のパターンのみサポートしています。 3つ以上の項目を組み合わせたプライマリキー、インデックスは作成できません。
- パーティションキーのみ
- パーティションキーとソートキーの組み合わせ
プライマリキー
ドキュメントやAPIには プライマリキー
というキーワードは殆ど出てこないのですが、名前がないとコミュニケーション上不便なのでこのように呼ぶと良いでしょう。
- テーブルに対し必ず1つ設定します
- プライマリキーが重複するデータは登録できません
ローカルセカンダリインデックス (LSI)
- テーブルに対し0〜5つ設定します(クォータの引き上げ不可)
- プライマリキーを
パーティションキーのみ
のパターンとした場合は設定できません - プライマリキーのパーティションキー + 任意のソートキー の組み合わせでのみ作成が可能です
- テーブルの新規作成時のみ設定可能、後から削除することはできません
- 後から作成したい場合は GSI で作成することになります
グローバルセカンダリインデックス (GSI)
- テーブルに対し0〜20つ設定します(クォータの引き上げ可)
- テーブル作成後に追加可能、また、削除することも可能です
ハッシュキー (HASH_KEY)、レンジキー(RANGE_KEY) とは
古い記事や API のパラメータで、ハッシュキー (HASH_KEY)、レンジキー(RANGE_KEY) のような記載が出てくることがあります。これは以下のように読み替えます。
- ハッシュキー -> パーティションキー
- レンジキー -> ソートキー
データ型
使用可能なデータ型
データタイプ | データ型記述子 | 備考 |
---|---|---|
文字列 | S | |
数値 | N | |
ブール式 | BOOL | true または false |
バイナリ | B | Base64 でエンコードされたテキスト |
Null | NULL | |
文字列セット | SS | |
数値セット | NS | |
バイナリセット | BS | |
リスト | L | |
マップ | M |
パーティションキー、ソートキーに使用可能なデータ型
- 文字列
- 数値
- バイナリ
日時項目を保存したい場合
DynamoDB では日付、日時を表現するデータ型は存在しません。そのため、以下のような方法を採用することが多いです。
- 文字列型に固定フォーマットで保管
- ISO 8601 等で
2023-06-23T21:19:38+09:00
のように固定桁数で保存
- ISO 8601 等で
- 数値型にUNIX時間で保管
- 1970年1月1日0時0分0秒からの経過秒数
- TTL の項目として使用したい場合はこちらの方式を採用