查询具有1百万条记录的索引上的dynamodb

时间:2017-03-03 20:35:51

标签: java amazon-web-services amazon-dynamodb

是否有办法查询dynamodb表的global secondary index,一次获取1000条记录,并在下一个查询中返回下一组。我有一个java application查询表并获取与之关联的所有记录,这会导致我的EC2实例上出现堆空间错误。有没有办法像Kinesis checkpointer那样并行化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选项,但是当我指定要返回的项目限制时,它会从表中返回相同的元素集。我希望返回的项目是那些之前没有返回的项目。

1 个答案:

答案 0 :(得分:1)

Query API从您在KeyConditions中提供的分区键开始,对DynamoDB分区执行顺序读取。如果您使用sharding with prefixes on the partition key作为模式的一部分,则可以在分区键的每个分片上并行运行查询API。如果要避免返回相同的结果,则需要使用上一次调用的LastEvaluatedKey在后续的Query调用中设置ExclusiveStartKey。