テーブルのクエリにおける相違点 - Amazon DynamoDB

テーブルのクエリにおける相違点

もう 1 つの一般的なアクセスパターンは、クエリ条件に基づき、テーブルから複数の項目を読み込むことです。

SQL を使用してテーブルのクエリを実行する

SQL を使用すると、SELECT ステートメントは、キー列、非キー列、または任意の組み合わせに対してクエリを実行できます。WHERE 句は、次の例に示すように、返る行を決定します。

/* Return a single song, by primary key */ SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today';
/* Return all of the songs by an artist */ SELECT * FROM Music WHERE Artist='No One You Know';
/* Return all of the songs by an artist, matching first part of title */ SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle LIKE 'Call%';
/* Return all of the songs by an artist, with a particular word in the title... ...but only if the price is less than 1.00 */ SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle LIKE '%Today%' AND Price < 1.00;

このテーブルのプライマリキーが、Artist および SongTitle で構成されていることに注意してください。

DynamoDB でテーブルのクエリを実行する

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

DynamoDB API

Amazon DynamoDB では、Query オペレーションを使用すると、同様の方法でデータを取得できます。Query オペレーションは、データが保存されている物理的な場所にすばやく効率的にアクセスすることができます。詳細については、「DynamoDB におけるパーティションとデータ分散」を参照してください。

Query は任意のテーブルまたはセカンダリインデックスでを使用できます。パーティションキーの値に対して等価条件を指定する必要があります。ソートキー属性が定義されている場合は、必要に応じて別の条件を指定できます。

KeyConditionExpression パラメータは、クエリを実行するキー値を指定します。オプションの FilterExpression を使用して、結果が返される前に、そこから特定の項目を削除できます。

DynamoDB では、式パラメータ (KeyConditionExpressionFilterExpression など) で ExpressionAttributeValues をプレースホルダーとして使用する必要があります。これは、ランタイム時に実際の値を SELECT ステートメントに代入する、リレーショナルデータベースでのバインド変数の使用に類似しています。

このテーブルのプライマリキーが、Artist および SongTitle で構成されていることに注意してください。

次に、DynamoDB Query の例をいくつか示します。

// Return a single song, by primary key { TableName: "Music", KeyConditionExpression: "Artist = :a and SongTitle = :t", ExpressionAttributeValues: { ":a": "No One You Know", ":t": "Call Me Today" } }
// Return all of the songs by an artist { TableName: "Music", KeyConditionExpression: "Artist = :a", ExpressionAttributeValues: { ":a": "No One You Know" } }
// Return all of the songs by an artist, matching first part of title { TableName: "Music", KeyConditionExpression: "Artist = :a and begins_with(SongTitle, :t)", ExpressionAttributeValues: { ":a": "No One You Know", ":t": "Call" } }
PartiQL for DynamoDB

PartiQL では、パーティションキーの ExecuteStatement オペレーションと Select ステートメントを使用してクエリを実行できます。

SELECT AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know'

このように SELECT ステートメントを使用すると、この特定の Artist に関連付けられているすべての曲が返されます。

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