テーブルにデータを書き込むときのリレーショナル (SQL) データベースと DynamoDB の相違点 - Amazon DynamoDB

テーブルにデータを書き込むときのリレーショナル (SQL) データベースと DynamoDB の相違点

リレーショナルデータベースのテーブルには、データのが含まれます。行はで構成されます。Amazon DynamoDB テーブルには、項目が含まれています。項目は属性で構成されます。

このセクションでは、テーブルに 1 つの行 (または項目) を書き込む方法を説明します。

SQL を使ってテーブルにデータを書き込む

リレーショナルデータベースのテーブルは、行と列で構成される、2 つのディメンションのデータ構造です。一部のデータベース管理システムは、通常、ネイティブ JSON または XML データ型を使用する半構造化データのサポートを提供します。ただし、実装の詳細はベンダー間で変わります。

SQL では、INSERT ステートメントを使用して、テーブルに行を追加します。

INSERT INTO Music (Artist, SongTitle, AlbumTitle, Year, Price, Genre, Tags) VALUES( 'No One You Know', 'Call Me Today', 'Somewhat Famous', 2015, 2.14, 'Country', '{"Composers": ["Smith", "Jones", "Davis"],"LengthInSeconds": 214}' );

このテーブルのプライマリキーは、ArtistSongTitle で構成されます。これらの列の値を指定する必要があります。

注記

この例では、Tags 列を使用して、Music テーブル内の曲に関する半構造化データを保存します。Tags 列は TEXT 型として定義され、MySQL で最大 65,535 文字を保存できます。

DynamoDB のテーブルにデータを書き込む

Amazon DynamoDB では、DynamoDB API または PartiQL (SQL 互換のクエリ言語) を使用して、テーブルに項目を追加できます。

DynamoDB API

DynamoDB API では、PutItem オペレーションを使用して、テーブルに項目を追加します。

{ TableName: "Music", Item: { "Artist":"No One You Know", "SongTitle":"Call Me Today", "AlbumTitle":"Somewhat Famous", "Year": 2015, "Price": 2.14, "Genre": "Country", "Tags": { "Composers": [ "Smith", "Jones", "Davis" ], "LengthInSeconds": 214 } } }

このテーブルのプライマリキーは、Artist および SongTitle で構成されます。これらの属性の値を指定する必要があります。

この PutItem 例に関する主要事項を示します。

  • DynamoDB では、JSON を使用して、ドキュメントのネイティブサポートを提供しています。これにより DynamoDB は Tags などの半構造化データを保存する場合に最適になります。また、JSON ドキュメント内からデータを取得および操作できます。

  • Musicテーブルには、プライマリキー (Artist および SongTitle) 以外には事前定義された属性はありません。

  • ほとんどの SQL データベースはトランザクション指向です。INSERT ステートメントを発行すると、データ変更は、COMMIT ステートメントを発行するまで永続的ではありません。Amazon DynamoDB によって、PutItem オペレーションの効果は、DynamoDB が HTTP 200 ステータスコード (OK) で応答する場合、永続的になります。

次に、PutItem の他の例をいくつか示します。

{ TableName: "Music", Item: { "Artist": "No One You Know", "SongTitle": "My Dog Spot", "AlbumTitle":"Hey Now", "Price": 1.98, "Genre": "Country", "CriticRating": 8.4 } }
{ TableName: "Music", Item: { "Artist": "No One You Know", "SongTitle": "Somewhere Down The Road", "AlbumTitle":"Somewhat Famous", "Genre": "Country", "CriticRating": 8.4, "Year": 1984 } }
{ TableName: "Music", Item: { "Artist": "The Acme Band", "SongTitle": "Still In Love", "AlbumTitle":"The Buck Starts Here", "Price": 2.47, "Genre": "Rock", "PromotionInfo": { "RadioStationsPlaying":[ "KHCR", "KBQX", "WTNR", "WJJH" ], "TourDates": { "Seattle": "20150625", "Cleveland": "20150630" }, "Rotation": "Heavy" } } }
{ TableName: "Music", Item: { "Artist": "The Acme Band", "SongTitle": "Look Out, World", "AlbumTitle":"The Buck Starts Here", "Price": 0.99, "Genre": "Rock" } }
注記

PutItem に加えて、DynamoDB は、同時に複数の項目に書き込むための BatchWriteItem オペレーションもサポートします。

PartiQL for DynamoDB

PartiQL では、PartiQL ExecuteStatement ステートメントを利用する Insert オペレーションを使用して、テーブルに項目を追加します。

INSERT into Music value { 'Artist': 'No One You Know', 'SongTitle': 'Call Me Today', 'AlbumTitle': 'Somewhat Famous', 'Year' : '2015', 'Genre' : 'Acme' }

このテーブルのプライマリキーは、Artist および SongTitle で構成されます。これらの属性の値を指定する必要があります。

注記

InsertExecuteStatement を使用したコード例については、DynamoDB 用の PartiQL 挿入ステートメント を参照してください。