テーブルに対するクエリの実行 - 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アクションは、データが保存されている物理的な場所にすばやく効率的にアクセスすることができます。詳細については、「パーティションとデータ分散」を参照してください。

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" } }
注記

Query を使用したサンプルコードについては、「DynamoDB および AWS SDK の使用開始」を参照してください。

PartiQL for DynamoDB

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

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

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

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