迭代DynamoDBQueryExpression结果,而不会超出容量限制

时间:2016-03-13 00:55:50

标签: amazon-web-services amazon-dynamodb

我有一个DynamoDB表,可能包含超过100,000个条目。我有一个查询表达式,我想对这个表运行,最多可以返回5,000个条目。获得此响应列表后,我将迭代它并对每个条目执行某些操作。到目前为止,这就是我所拥有的:

DynamoDBQueryExpression<...> query = new DynamoDBQueryExpression<...>();
DynamoDBMapper mapper = new DynamoDBMapper();

PaginatedList<..> results = mapper.query(Item.class, query);

for (Item item : results) {
    item.doStuff();
}

我的读写能力为20,我需要确保不超过这些限制。我怎样才能做到这一点?有没有办法更改查询或PaginatedList,以便它不会以超过20个容量单位的速度返回结果?

1 个答案:

答案 0 :(得分:0)

使用DynamoDBQueryExpression.withLimit限制每个API调用返回的项目数。这将有助于您指导&#34;迭代分页结果时的预配置吞吐量。

withLimit非常棘手,您应该记住并一次又一次地阅读它会限制返回的每个api呼叫项目,而不是Query呼叫返回的项目。