Amazon DynamoDBの構成要素について理解できたことをまとめました

2019-04-28Amazon, AWS

はじめに

AWS-CLIを使ってDynamoDBを操作してみる で「AWS CLI」から「DynamoDB」を操作してみました。

ただし、しっかり「DynamoDB」の仕組みについて理解できていなかったので、改めてドキュメントを読み進めて理解できたことを整理したいと思います。

※誤りが多分にあるかと思いますので指摘を喜んでお待ちしております。

ちなみに、プライマリーキーについて更に整理した内容は以下のエントリにまとめています。

参考資料

DynamoDBの構成要素

DynamoDBの構成要素は多くの点でリレーショナルデータベース(以下RDB)によく似ています。
RDBを理解していれば理解しやすいと思います。

概念 説明
テーブル RDBでいうテーブル。「項目」の集合。
項目 RDBでいうレコード(行)。「属性」の集合。
属性 RDSでいうカラム(列)。
プライマリーキー RDSでいうプライマリーキー。1つあるいは2つの属性の組み合わせでテーブルの全「項目」で一意でなければならない。

AWSのマニュアルでは、具体例として People というテーブルとそのデータ構造について触れています。

先に触れた構成要素と上記のサンプルデータの対応は以下のようになります。

概念 説明
テーブル People
項目 3項目。
属性 PersonId, LastName, FirstName, Phone(1項目目のみ), Address(2項目目のみ), FavoriteColor(3項目目のみ)
プライマリーキー PersonId だけで構成される単一プライマリーキー

プライマリーキーの「属性」の特徴・制約

プライマリーキーは1つ以上の「属性」で構成しなければならない

先に触れたとおり、プライマリーキーは単一の属性だけで構築しても良いですし、複数の属性で構成することもできます。

具体的な例を上げると、以下のようになります。

  • 単一「属性」で構成されるプライマリーキー : 銀行テーブルに対する銀行コード
  • 複数「属性」で構成されるプライマリーキー : 銀行支店テーブルに対する銀行コード+支店コード

「テーブル」にはプライマリーキーは必須となりますので、当然「テーブル」内の「項目」は最低でも1つの「属性」を持つことになります。

プライマリーキーは一意な値でなければならない

DynamoDBのプライマリーキー属性値は重複を許しません。

  • 銀行テーブルには銀行コードの重複はありえません
  • 銀行支店テーブルには銀行コード+支店コードの重複はありえません

プライマリーキーはスカラー値でなければならない

プライマリーキーはスカラー値でなければいけません。
以下のいずれかでなければなりません。

  • スカラー型
    • 文字列型
    • 数値型
    • 真偽値型
    • バイナリー型

プライマリーキー以外の「属性」の特徴・制約

プライマリーキーと同様スカラー型が多く利用されます。

  • スカラー型
    • 文字列型
    • 数値型
    • 真偽値型
    • バイナリー型

ちょっと変わったデータ型として「ドキュメント型」のリスト、マップのいずれかを設定し階層構造を取ることが可能です。
深さが最大32 レベルの「ドキュメント型」が指定できます。

  • ドキュメント型
    • リスト
    • マップ

その他、スカラー型のみを要素として保持する「セット」があります。
「セット」は構成要素が同一のスカラー型でなければいけません。(文字列型と数値型が混在してはいけない)
また構成要素内に同一の値を保持してはいけません。

  • セット

プライマリーキーについてもう少し深掘りしてみる

プライマリーキーについて更に整理した内容を以下のエントリにまとめています。

2019-04-28Amazon, AWS