DynamoDBを初めて使用していて、Javaを使用してIN句を使用してDynamoDBのテーブルでどのようにクエリを実行できるかを知りたがっています。IN句を使用したDynamoDBのクエリ
私は要件が取得することであるとして
SELECT ID FROM items WHERE Product IN ("apple","orange").
または
SELECT Product FROM items WHERE ID IN (100,200).
DynamoDBを初めて使用していて、Javaを使用してIN句を使用してDynamoDBのテーブルでどのようにクエリを実行できるかを知りたがっています。IN句を使用したDynamoDBのクエリ
私は要件が取得することであるとして
SELECT ID FROM items WHERE Product IN ("apple","orange").
または
SELECT Product FROM items WHERE ID IN (100,200).
に類似したクエリを実行するitems.
それは `sのスキーマという名前のテーブルが
1. Product (Partition Key of type String)
2. ID (Sort Key of type int)
3. Date (attribute of type String)
である必要がありパーティションキーのない製品には、2つのオプションがあります。
1)ソートキー属性にGSI(グローバルセカンダリインデックス)を作成しますId
製品を取得するためにクエリAPI
2)スキャンにテーブル全体を使用する - それは完全なテーブルをスキャンして、非常に効率的ではないが
どちらのオプションも、IN演算子をDynamoDBで使用できます。 IDを使用してスキャン用
サンプルコード: - 製品別
Map<String, AttributeValue> attributeValues = new HashMap<>();
attributeValues.put(":id1", new AttributeValue().withN("100"));
attributeValues.put(":id2", new AttributeValue().withN("200"));
DynamoDBScanExpression dynamoDBScanExpression = new DynamoDBScanExpression()
.withFilterExpression("ID IN (:id1, :id2)")
.withExpressionAttributeValues(attributeValues);
PaginatedScanList<yourModelClass> scanList = dynamoDBMapper.scan(yourModelClass.class, dynamoDBScanExpression,
new DynamoDBMapperConfig(DynamoDBMapperConfig.ConsistentReads.CONSISTENT));
Iterator<yourModelClass> iterator = scanList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next().getTitle());
}
問合せ: -
1)パーティションのオペレータで重要
2をを使用することはできません)することはできませんソートキーを知らずにbatchLoad
APIを使用してください
結論: -
効率的なソリューションは、属性Id
にGSI(ソートキーなし)を作成し、batchLoad
APIを使用することです。
注: GSIのパーティション・キーが
真剣に一意である必要はありませんか!?最初のGoogleのヒット=> http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SQLtoNoSQL.ReadData.Query.html – Zorglube
これはJavaScriptで、私はJavaでそれを必要とします –
本当にSQLクエリはあなたはそれを送信するために使用する言語に続いて異なる?おそらく、クエリをビルドする方法は変わるかもしれませんが、SQLはSQLのままです。 Criteriaをよく知っていれば、これは=> http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryingJavaDocumentAPI.htmlに役立ちます。基準について気づいていない場合は、その記事を読むことをお勧めします。 – Zorglube