DynamoDB扫描的成本究竟是多少?

时间:2017-07-13 00:54:42

标签: amazon-dynamodb

我使用Dynamodb来存储users,如下所示:

Users: uuid(Primary Key) joined_at(Sort Key) full_name

我希望在20个用户的批量中对按joined_at排序的数千名用户进行分页。

我想对此使用scan操作,但我听说它实际上读取了所有表(在读取单元上会非常昂贵)。

这是真的吗?我如何一次只消耗20个读数?

P.S。在手上使用query要求我按单个用户的ID进行过滤,这不是我想要的。

2 个答案:

答案 0 :(得分:1)

可以使用dynamoDB中的查询进行分页。您必须按照here的说明实施。分页中的问题是DynamoDB是您无法获得表中项目的总数。要解决这个问题,您可以维护一个单独的表并存储表中的项目计数。

下一页和上一页由

评估
{ 
"TableName":"users",
"ScanIndexForward":true, // false implies get data before the sort key
"KeyConditionExpression":"#hkey = :hvalue AND #rkey > :rvalue",
"ExpressionAttributeNames": {
    "#hkey":"uuid","#rkey":"joined_at"
},
"ExpressionAttributeValues" :{ 
":hvalue":1094,":rvalue":0
},
"ExclusiveStartKey":{
     "uuid":"<your-uuid>","joined_at":<your published at data>
},
"Limit":10
}

答案 1 :(得分:0)

Amazon DynamoDB pricing基于预配容量。您可以选择读取和写入的预配置吞吐量,您将需要为此容量付费。

执行大扫描时,您将消耗大量容量。它不会花费您的钱,但它将消耗您已配置的容量,而其他用户可能会受到影响,因为没有足够的容量同时为其请求提供服务。您的扫描可能还需要很长时间,因为它只能以您预配容量定义的速率读取。