1

セカンダリ インデックスだけで条件を使用して、dynamodb テーブルでクエリを実行できますか。ハッシュキーに条件を付けたくありません。それを行う方法はありますか?

4

6 に答える 6

1

2013 年 12 月現在、可能です。Dynamo は、グローバル セカンダリ インデックスをサポートしています。

クエリの実行方法については、ドキュメントページを参照してください。基本的に、テーブルとインデックスを指定する必要があります。インデックスにすべての属性を射影した場合はレコードを取得できます。そうでない場合は、以前のようにテーブル内のオブジェクトを検索するために使用できる元のハッシュ キーを取得できます。

于 2014-01-13T19:41:39.443 に答える
0

LSIまたはGSIを照会している場合でも、操作には常にハッシュ キーがQuery必要です

于 2015-05-01T05:27:28.553 に答える
0

いいえ、DynamoDB にクエリを実行するには、ハッシュ キーを知っている必要があります。ハッシュ キーがわからない場合、データを取得する唯一の方法はテーブル全体のスキャンです。

于 2013-07-11T19:11:33.443 に答える
0

TL;DRはい、セカンダリ インデックスに基づいてクエリを実行できます。

例:

したがって、次の構造を持つテーブルを考えてみましょう。

- user_id (partition key)
- created_at (sort key)
- account_id
- api_path
- execution_time
- platform
- ttl
- metadata

account_id に基づいてクエリを実行する場合は、次のように GSI を作成できます。

account_id (partition key)
created_at (sort key)

このインデックスを呼び出したとしましょう: account_id-created_at-index

次のようにクエリを実行できるようになりました (簡潔にするために選択した言語として Python が使用されます。これはすべての SDK に適用されます)。

import boto3
from boto3.dynamodb.conditions import Key

dynamodb = boto3.resource('dynamodb')
table = db.Table('table_name')
response = table.query(KeyConditionExpression=Key('account_id').eq(some_account_id), IndexName=account_id-created_at-index)

ここで重要なIndexNameパラメータに注意してください。

に適用される項目がある場合KeyConditionExpression、それらはresponse['Items']オブジェクトのリストでアクセスできます。

于 2019-03-07T08:22:43.747 に答える