J'utilise DynamoDB. Je numérise les opérations depuis l'application. Tout fonctionne parfaitement. Après un certain temps, la réponse arrive à zéro. Mais je ne reçois aucune exception. J'ai activé la journalisation détaillée à l'aide,Amazon DynamoDB ProvisionedThroughputExceededException (iOS SDK)
[AmazonLogger verboseLogging];
Si la journalisation détaillée est activée, je peux voir des journaux comme,
"__type": "com.amazonaws.dynamodb.v20111205 # ProvisionedThroughputExceededException", » message « : » le niveau de débit provisionné configuré pour la table a été dépassé Envisagez d'augmenter votre niveau d'approvisionnement avec l'API UpdateTable »
Mon code ressemble à ceci,
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;
}
Est-ce que je le fais correctement? Quelqu'un peut-il m'aider, s'il vous plaît?
Merci.
Edit: Quelqu'un pourrait-il me donner une idée approximative de la quantité de débit (à la fois en lecture/écriture) la capacité à définir pour une table de QuestionAnswer, avec près de 10 domaines tels que TopicID, QuestionID, question, réponse, AskedAt, RepliedAt, QuestionType etc.,? Merci.
DynamoDB est facturé en fonction de la quantité de débit configurée que vous avez configurée, vous y accédez plus souvent que votre configuration ne l'indique et vous êtes limité. Vous devez considérer si vous avez réellement besoin de scanner la table, une analyse inspectera toute la table ce qui résulte en haut débit, si c'est la première base de données NoSQL que vous avez utilisée, vous devriez faire des recherches sur la meilleure façon de les utiliser, vous ne peuvent pas simplement effectuer des requêtes ad hoc comme RDB, ils sont coûteux en termes de temps et de ressources. Envisagez de gérer les index qui permettraient des identifications explicites en tant que tables distinctes. – codeghost
Merci. Vous voulez dire qu'il n'y a aucun moyen d'obtenir l'exception jetée au bloc @catch si j'utilise Scan? – EmptyStack
Voyez-vous les messages Response ALog antérieurs, pour être sûr que votre journalisation est correctement configurée? Si vous mettez une pause dans la capture, cela se déclenche-t-il avant que vous n'obteniez rien ou est-il définitivement renvoyé du bloc try? Je n'ai pas utilisé AWS iOS SDK pour Dynamo, mais j'ai constaté que certaines de ses autres API ne fonctionnaient pas toujours comme prévu, donc si vous n'entriez jamais dans votre bloc catch, il se peut que sdk avale l'exception plus tôt. Cela peut valoir la peine d'essayer d'ajouter un gestionnaire d'exception global pour voir si quelque chose survient là-bas. – codeghost