テーブル作成時のリレーショナル (SQL) データベースと DynamoDB の相違点
テーブルは、リレーショナルデータベースおよび Amazon DynamoDB の基本的なデータ構造です。リレーショナルデータベース管理システム (RDBMS) では、作成時に、テーブルのスキーマを定義する必要があります。対照的に、DynamoDB テーブルはスキーマレスであるため、プライマリキーを除いて、テーブルを作成する際に、追加の属性やデータ型を定義する必要はありません。
次のセクションでは、SQL を使用してテーブルを作成する方法と、DynamoDB を使用してテーブルを作成する方法を比較します。
SQL を使用してテーブルを作成する
SQL では、次の例に示すように、CREATE TABLE
ステートメントを使用して、テーブルを作成します。
CREATE TABLE Music ( Artist VARCHAR(20) NOT NULL, SongTitle VARCHAR(30) NOT NULL, AlbumTitle VARCHAR(25), Year INT, Price FLOAT, Genre VARCHAR(10), Tags TEXT, PRIMARY KEY(Artist, SongTitle) );
このテーブルのプライマリキーは、Artist および SongTitle で構成されます。
テーブルの列とデータ型すべて、およびテーブルのプライマリキーを定義する必要があります。(これらの定義は、ALTER TABLE
ステートメントを使用して、必要に応じて後で変更することができます。)
多くの SQL 実装では、CREATE TABLE
ステートメントの一部として、テーブルのストレージ仕様を定義することができます。他に明記されていない限り、テーブルはデフォルトのストレージ設定で作成されます。本稼働環境では、データベース管理者は最適なストレージパラメータを特定することもできます。
DynamoDB を使用してテーブルを作成する
CreateTable
オペレーションを使用してプロビジョニングモードのテーブルを作成し、次に示すように、パラメータを指定します。
{ TableName : "Music", KeySchema: [ { AttributeName: "Artist", KeyType: "HASH" //Partition key }, { AttributeName: "SongTitle", KeyType: "RANGE" //Sort key } ], AttributeDefinitions: [ { AttributeName: "Artist", AttributeType: "S" }, { AttributeName: "SongTitle", AttributeType: "S" } ], ProvisionedThroughput: { // Only specified if using provisioned mode ReadCapacityUnits: 1, WriteCapacityUnits: 1 } }
このテーブルのプライマリキーは、Artist (パーティションキー) および SongTitle (ソートキー) で構成されています。
CreateTable
に以下のパラメータを提供する必要があります。
-
TableName
– テーブルの名前。 -
KeySchema
– プライマリキーに使用する属性。詳細については、「テーブル、項目、属性」および「プライマリキー」を参照してください。 -
AttributeDefinitions
– キースキーマ属性のデータ型。 -
ProvisionedThroughput (for provisioned tables)
– このテーブルに必要な 1 秒あたりの読み取り/書き込み数。DynamoDB は、スループット要件を常に満たすように、十分なストレージとシステムリソースを確保しています。これらは、UpdateTable
オペレーションを使用し、必要に応じて後で変更できます。DynamoDB がストレージ割り当てを完全に管理しているため、テーブルのストレージ要件を指定する必要はありません。