Emp*_*ack 0 php amazon-web-services ios amazon-dynamodb
我需要帮助查询DynamoDB表以获取行数.
考虑一下,我有一个表"Users"有三个字段,"UserName","Password"和"UserType".UserType可以是"Admin","Employee"或@"Guest".现在我想在表格中获得"Admin"的数量.在SQL中我们编写这样的查询,
SELECT COUNT(*) FROM Users WHERE UserType='Admin'
Run Code Online (Sandbox Code Playgroud)
现在我需要使用DynamoDB iOS SDK来做同样的事情.现在,我这样做.
- (int)adminUsersCount {
DynamoDBScanRequest *request = [[[DynamoDBScanRequest alloc] initWithTableName:@"Users"] autorelease];
DynamoDBCondition *condition = [[[DynamoDBCondition alloc] init] autorelease];
NSMutableArray *attrList = [NSMutableArray arrayWithObject:[[[DynamoDBAttributeValue alloc] initWithS:@"Admin"]] autorelease]];
condition.attributeValueList = attrList;
condition.comparisonOperator = @"EQ";
[request setScanFilterValue:condition forKey:@"UserType"];
DynamoDBScanResponse *response = [[AmazonClientManager ddb] scan:request];
return response.items.count;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我将获取所有行以了解该计数.我知道这不是正确的方法,而且确实是一个坏主意.我不知道如何在不获取所有行的情况下单独获取计数.
谢谢.
yad*_*taf 11
我不能回答PHP或IOS SDK,因为我没有使用它们(我使用Python).但是,从DynamoDB的低级别来看:
ItemCount从DescribeTable.它每6小时更新一次,但它是免费的UserType是range_key(优秀),您可以设置Countparam Queryto True然后读取Count答案的字段.Query过滤条件".这就是说,Query和Scan将始终返回的项目数.该Count参数仅指示他们不要退回真实物品.请注意,它只会节省带宽.在提供的吞吐量方面,它不会更快,也不会更便宜.
如果您处于第三种情况,我建议您重新设计您的架构,因为它会非常缓慢且昂贵.在所有请求中,您将需要浏览整个表格.
| 归档时间: |
|
| 查看次数: |
5324 次 |
| 最近记录: |