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