DynamoDB クエリの例

Dynamodb Kuerino Li



データベースはデータの集まりであり、DynamoDB も例外ではありません。データベースには、事前定義されたメカニズムなしでは取得が困難なデータが多数含まれています。ここで、query コマンドが重要な役割を果たします。

他のデータベース管理システムと同様に、DynamoDB は、システムとやり取りしてデータにアクセスして操作できるさまざまなクエリ方法を提供します。 DynamoDB でのクエリは、クエリ コマンドに関連する項目または項目のグループを取得できる非常に強力なツールです。

この記事では、DynamoDB クエリ操作の主な例について概説します。







一般的な DynamoDB クエリの例

DynamoDB でのクエリ操作のデフォルトの動作は、クエリ項目に関連付けられたすべての項目を返すことです。興味深いことに、DynamoDB のクエリ コマンドは、テーブルまたはセカンダリ インデックスで使用できます。



いずれの場合でも、必ずパーティション キーの値に等しい条件を指定してください。繰り返しますが、コマンドで使用する場合は、並べ替えキーに別の条件を指定する必要がある場合があります。



DynamoDB をクエリするときに遭遇する他のパラメーターには、KeyConditionExpression と FilterExpression も含まれます。 KeyConditionExpression は、照会するキー値を指定します。一方、FilterExpression は、応答を得る前にクエリ結果からアイテムを削除します。上記の式パラメーターのプレースホルダーとして ExpressionAttributeValues を使用します。





DynamoDB クエリの例は次のとおりです。

主キーに基づくテーブルからの単一項目の検索

DynmoDB の Query ユーティリティを使用して、アイテムのパーティション キーとソート キーの値の組み合わせに基づいて単一のアイテムを見つけることができます。このような操作の構文は次のとおりです。



aws dynamodb クエリ\

--テーブル名 MyTableName \

--キー条件式 「パーティションキー = :pk AND ソートキー = :sk」 \

--式属性値 '{':pk':{'S':'a123b'},':sk':{'S':'def456b'}}'

上記のクエリ ユーティリティは、パーティション キーの値が a1234b でソート キーの値が odef456b のアイテムを MyTableName テーブルから取得することを目的としています。たとえば、上記のユーティリティを使用して、「注文」テーブルでアイテムを見つけることができます。アイテムのパーティション キーの値は次のとおりです。 wr546gg Customer_ID を表し、そのソート キー値は 24536433 注文番号を表します。

結果は次のようになります。

上記の結果は、パーティション キーの値が wr546gg であり、並べ替えキーの値が 24536433 である唯一のアイテムとして Holiday Books を返します。また、アイテムに関連付けられている他のすべての追加属性も返します。この図では、請求書番号と支払った金額が返されます。

特に、指定された主キー値に一致する項目がない場合、クエリ コマンドは空白のリストを返します。

取得する 特定の属性値に一致する DynamoDB テーブルのすべての項目

フィルター式を使用して、特定の DynamoDB テーブルで同様の属性値を持つすべてのアイテムを取得します。

このクエリ操作のコマンドは次のとおりです。

aws dynamodb クエリ\

--テーブル名 MyTableName \

--フィルター式 'OtherAttribute1 = :val' \

--式属性値 '{':val':{'S':'value1'}}'

たとえば、上記のクエリ コマンドを使用して、Music テーブルで 5 分を超える曲を取得できます。これを実現するには、OtherAttribute1 の値を 5.00 に設定し、MyTableName を Music に設定します。

結果は次のようになります。

簡潔にするために、リストを切り詰める必要があります。しかし、結果から、クエリ コマンドは DynamoDB Music テーブルから filterexpression 値が 5.00 の 11 項目を取得しました。

特定の範囲の属性値を持つすべてのアイテムを取得する

以下のコマンドは、特定のテーブル内のアイテムを取得するときに役立ちます。

aws dynamodb クエリ\

--table-name <テーブル名> \

--キー条件式 'attribute_name :val1 と :val2 の間' \

--式属性値 '{':val1':{'N':'<値1>'},':val2':{'N':'<値2>'}}'

もちろん、他のコマンド ラインの場合と同様に、すべての属性をカスタマイズした資格情報に置き換える必要があります。たとえば、「age」という名前の範囲キー属性を持つ Employee テーブルを使用します。 30歳から42歳までの雇用主の検索を目指します。

新しいコマンド ラインは次のようになります。

aws dynamodb クエリ\

--table-name ユーザー \

--キー条件式 「:val1 と :val2 の間の年齢」 \

--式属性値 '{':val1':{'N':'30'},':val2':{'N':'42'}}'

上記のユーティリティを実行すると、次の図のような応答が返されます。

上の図は、クエリが 6 つのアイテムを返したことを示しており、各クエリの属性値を示しています。 ScannedCount はテーブルでスキャンされたアイテムの数であり、CapacityUnits は操作中に消費されたユニットの量です。

結論

DynamoDB は NoSQL データベースであるため、そのクエリ操作は通常の AQL データベースのようには動作しません。しかし、一度実行すると、操作が非常に強力であり、データベースとのやり取りが簡単になることがわかります。