テーブル作成時のリレーショナル (SQL) データベースと DynamoDB の相違点 - Amazon DynamoDB

テーブル作成時のリレーショナル (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 がストレージ割り当てを完全に管理しているため、テーブルのストレージ要件を指定する必要はありません。