Amazon DynamoDB チートシート

記事タイトルとURLをコピーする

プライマリキー、インデックス

プライマリキー、インデックスは以下のパターンのみサポートしています。 3つ以上の項目を組み合わせたプライマリキー、インデックスは作成できません。

  • パーティションキーのみ
  • パーティションキーとソートキーの組み合わせ

プライマリキー

ドキュメントやAPIには プライマリキー というキーワードは殆ど出てこないのですが、名前がないとコミュニケーション上不便なのでこのように呼ぶと良いでしょう。

  • テーブルに対し必ず1つ設定します
  • プライマリキーが重複するデータは登録できません

マネジメントコンソールで新規テーブル作成時には `プライマリキー` の文字が

ローカルセカンダリインデックス (LSI)

  • テーブルに対し0〜5つ設定します(クォータの引き上げ不可)
  • プライマリキーを パーティションキーのみ のパターンとした場合は設定できません
  • プライマリキーのパーティションキー + 任意のソートキー の組み合わせでのみ作成が可能です
  • テーブルの新規作成時のみ設定可能、後から削除することはできません
    • 後から作成したい場合は GSI で作成することになります

docs.aws.amazon.com

グローバルセカンダリインデックス (GSI)

  • テーブルに対し0〜20つ設定します(クォータの引き上げ可)
  • テーブル作成後に追加可能、また、削除することも可能です

docs.aws.amazon.com

ハッシュキー (HASH_KEY)、レンジキー(RANGE_KEY) とは

古い記事や API のパラメータで、ハッシュキー (HASH_KEY)、レンジキー(RANGE_KEY) のような記載が出てくることがあります。これは以下のように読み替えます。

  • ハッシュキー -> パーティションキー
  • レンジキー -> ソートキー

データ型

使用可能なデータ型

データタイプ データ型記述子 備考
文字列 S
数値 N
ブール式 BOOL true または false
バイナリ B Base64 でエンコードされたテキスト
Null NULL
文字列セット SS
数値セット NS
バイナリセット BS
リスト L
マップ M

docs.aws.amazon.com

パーティションキー、ソートキーに使用可能なデータ型

  • 文字列
  • 数値
  • バイナリ

日時項目を保存したい場合

DynamoDB では日付、日時を表現するデータ型は存在しません。そのため、以下のような方法を採用することが多いです。

  • 文字列型に固定フォーマットで保管
    • ISO 8601 等で 2023-06-23T21:19:38+09:00 のように固定桁数で保存
  • 数値型にUNIX時間で保管
    • 1970年1月1日0時0分0秒からの経過秒数
    • TTL の項目として使用したい場合はこちらの方式を採用

各プログラミング言語のデータ型との対応