2017-03-03 73 views
0

是否有辦法查詢dynamodb表的global secondary index以便一次獲取記錄(例如,1000)並返回下一個查詢的下一個集合。我有一個java application,它查詢表並獲取與其關聯的所有記錄,這導致我的EC2實例發生堆空間錯誤。有沒有辦法像Kinesis checkpointer那樣並行化dynamodb查詢操作。以下是我如何查詢。在有100萬條記錄的索引上查詢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");} 

另外,我還使用了QuerySpec選項嘗試,但它返回同一組從表中的元素,當我指定要返回的項目的限制。我希望返回的項目是那些以前沒有返回的項目。

+0

掃描將返回一個分頁列表 - afaik已經做了你想要的幕後。 – twentylemon

+0

我想查詢記住我的表上配置的吞吐量 – ZZzzZZzz

回答

1

查詢API對您在KeyConditions中提供的分區鍵開始,對DynamoDB分區執行順序讀取。如果您使用sharding with prefixes on the partition key作爲模式的一部分,則可以在分區鍵的每個分片上並行運行查詢API。如果要避免返回相同的結果,則需要使用前一個調用的LastEvaluatedKey在隨後的Query調用上設置ExclusiveStartKey。

相關問題