Amazon dynamodb DynamoDB';什么是真正的成本?

Amazon dynamodb DynamoDB';什么是真正的成本?,amazon-dynamodb,Amazon Dynamodb,我使用Dynamodb存储用户,如下所示: 用户:uuid(主键)以(排序键)全名加入 我想对成千上万的用户进行分页,这些用户按joined\u at进行排序,一批20个用户 我想使用scan操作来实现这一点,但我听说它可以读取所有的表(这对于读取单元来说是非常昂贵的) 这是真的吗?我如何一次只阅读20次 另一方面,使用query需要我按单个用户的ID进行筛选,这不是我想要的。使用dynamoDB中的query可以进行分页。您必须按照所解释的那样实现。分页的问题是DynamoDB,因为您无法获取

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

用户:uuid(主键)以(排序键)全名加入

我想对成千上万的用户进行分页,这些用户按
joined\u at
进行排序,一批20个用户

我想使用
scan
操作来实现这一点,但我听说它可以读取所有的表(这对于读取单元来说是非常昂贵的)

这是真的吗?我如何一次只阅读20次


另一方面,使用
query
需要我按单个用户的ID进行筛选,这不是我想要的。

使用dynamoDB中的query可以进行分页。您必须按照所解释的那样实现。分页的问题是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
}
{
“表名”:“用户”,
“ScanIndexForward”:true,//false意味着在排序键之前获取数据
“KeyConditionExpression”:“#hkey=:hvalue和#rkey>:rvalue”,
“ExpressionAttributeNames”:{
#hkey:“uuid”,“#rkey:“加入”
},
“ExpressionAttributeValues”:{
“:hvalue”:1094,”:rvalue:0
},
“排他性EstartKey”:{
“uuid”:“加入地点”:
},
“限额”:10
}
基于调配的容量。您可以选择为读取和写入设置的吞吐量,并将为此容量收取费用


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

感谢您的输入-尽管我的问题更多的是关于扫描如何计算读取单位。如果您有一个包含10000条记录的表,并且您的扫描限制为10条,那么您是否会收取10万次读取的费用?这需要您支付10次读取的费用。根据