我使用DynamoDB。我从应用程序扫描操作。一切都很完美。过了一段时间后,答案即将成为零。但我没有收到任何例外。我启用了详细日志记录使用,亚马逊DynamoDB ProvisionedThroughputExceededException(iOS版SDK)
[AmazonLogger verboseLogging];
如果启用详细记录的,我可以看到一些日志一样,
“__type”: “com.amazonaws.dynamodb.v20111205#ProvisionedThroughputExceededException”,”消息“:”配置置备吞吐量表的水平超出考虑与UpdateTable API”
我的代码看起来像这样,
0增加你的配置水平。@try {
DynamoDBScanRequest *request = /* Create request */;
DynamoDBScanResponse *response = [[AmazonClientManager ddb] scan:request];
/*
* response is nil if the provisioning throughput is exceeded
* and the all retries are over
*/
ALog(@"Response: %@", response);
NSMutableArray *array = response.items;
return array;
} @catch (NSException *exception) {
/*
* I am expecting the ProvisionedThroughputExceededException
* to be thrown here. But its not throwing here. Instead I get the response
* as nil above.
*/
ALog(@"Exception: %@", exception);
return nil;
}
我这样做是正确的吗?请有人帮助我吗?
谢谢。
编辑:任何人都可以给我一个粗略的想法多少吞吐量(包括读/写)能力的问题答案表中设置,与像TopicID,QuestionID,提问,回答,AskedAt,RepliedAt近10场, QuestionType等,?谢谢。
DynamoDB是基于你已经配置置备吞吐量量定价的,你更频繁地访问它比你的设置已经表明,你正在被扼杀。你需要考虑如果你真的需要扫描表,扫描将检查整个表,这将导致高吞吐量,如果这是你使用的第一个NoSQL DB,你应该对如何最好地使用它们进行调查,你不能像RDB那样执行即席查询,它们在时间和资源方面都很昂贵。考虑管理允许显式获取为独立表的索引。 – codeghost
谢谢。你的意思是,如果我使用Scan,我将无法获得抛出到@catch块的异常? – EmptyStack
您是否看到早期的Response ALog消息,确保您的日志记录配置正确?如果你在catch中放入一个中断,它会在你得到零之前触发,或者在try块中返回零。我没有使用AWS的iOS SDK迪纳摩,但有他们的一些其他的API并不总是按预期执行的经验,所以如果你从来没有进入你的catch块也可能是他们的SDK是吞咽异常早。可能值得尝试添加全局异常处理程序来查看是否有任何东西出现在那里。 – codeghost