2017-03-03 4 views
0

dynamodbテーブルのglobal secondary indexをクエリして、一度に1000個のレコードをフェッチし、次のクエリで次のセットを返す方法はありますか?私はjava applicationテーブルをクエリし、それに関連付けられているすべてのレコードをフェッチし、それは私のEC2インスタンスでヒープスペースエラーの原因となっています。 Kinesis checkpointerのようなdynamodbクエリ操作を並列化する方法はありますか?以下は、私がどのように質問しているかです。1百万のレコードを持つインデックスのdynamodbの照会

DynamoDBQueryExpression<RecordsTest> queryExpression = new DynamoDBQueryExpression<RecordsTest>() 
       .withHashKeyValues(test).withConsistentRead(false); 
     List<RecordsTest> test = mapper.query(RecordsTest.class, queryExpression); for (RecordsTest tst : test) { 
      System.out.println(" record not found");} 

はまた、IはQuerySpecオプションを使用して試みたが、これは私が返すアイテムの制限を指定テーブルからの要素の同じセットを返します。返されたアイテムは、以前に返されなかったものにしたい。

+0

スキャンでは、ぺ一ジ化されたリストが返されます。これは、あなたが舞台裏で望んでいるものをすでに実行しています。 – twentylemon

+0

テーブルにプロビジョニングされたスループットを念頭に置いてクエリを実行したい – ZZzzZZzz

答えて

1

クエリAPIは、KeyConditionsで指定したパーティションキーから開始して、DynamoDBパーティションで順次読み取りを実行します。 sharding with prefixes on the partition keyをスキーマの一部として使用する場合は、パーティションキーの各断片で並列にクエリAPIを実行できます。同じ結果を返さないようにするには、前の呼び出しのLastEvaluatedKeyを使用して、後続のQuery呼び出しでExclusiveStartKeyを設定する必要があります。

関連する問題