テーブルのクエリにおける相違点
もう 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 では、式パラメータ (KeyConditionExpression や FilterExpression など) で 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 に関連付けられているすべての曲が返されます。
Select と ExecuteStatement を使用したコード例については、DynamoDB 用の PartiQL select ステートメント を参照してください。