2016-01-31 1 views
0

Dans le cadre de mon application Android, je prévois d'utiliser le service NoSQL simpledb offert par Amazon.Gestion des problèmes de connexion réseau dans amazon simpledb

J'ai été capable d'utiliser les API du simpledb sans problème. Cependant, j'ai des problèmes au cas où il y a un problème de connexion réseau. Par exemple: Si j'ajoute un élément ou un attribut à simpledb lorsqu'il y a une connexion réseau [c'est-à-dire que le mobile est en ligne], la réplication est réussie. Toutefois, si je fais la même chose en l'absence de connexion réseau [c'est-à-dire hors connexion], puis ajouter un élément supplémentaire avec une connexion réseau [c'est-à-dire que le mobile est de nouveau en ligne], seul le nouvel élément est répliqué. Fondamentalement, cela signifie que je devrais faire la comptabilité de faire un magasin local de l'élément (ou attributs) dans le cas où il n'y a pas de connexion réseau et puis tirez-les du magasin local et répliquez lorsque la connexion réseau est de retour .

Y at-il quelque chose qui me manque ici, ou est-ce que c'est comme si le développeur devait s'occuper de la comptabilité pour gérer le problème du réseau. J'ai vu que le cognito est censé aider ici, mais je vois que c'est juste un magasin local de valeur-clé. Dans ce cas, je dois à nouveau tirer la paire clé-valeur du magasin local, puis la convertir en paire clé-attribut et l'envoyer à mon simpledb.

S'il vous plaît laissez-moi savoir comment je peux gérer ce cas. Merci pour la réponse.

Répondre

0

Le SDK a une notion conceptuelle de clients de haut niveau et de bas niveau. Les clients de bas niveau ne font que demander/répondre au serveur. Si le périphérique est hors ligne, la demande échoue et c'est tout ce qui arrive. Le client SimpleDB que vous utilisez est un client de bas niveau car SimpleDB n'a pas de client de haut niveau.

Il existe actuellement 4 clients de haut niveau qui gèrent la sauvegarde des données si le périphérique est hors ligne. Mobile Analytics, Utilitaire de transfert S3, Kinesis Recorder, Cognito Sync Manager. Dans votre cas, il semble que seul l'utilitaire de transfert S3 (stockage de données blob vous pouvez sérialiser quelque chose) ou Cognito Sync (clé/valeur) peut être utile, et cela dépend entièrement de la façon dont les données sont structurées. Je ne recommanderais pas d'utiliser l'un ou l'autre de ces éléments comme un stockage strictement hors ligne pour ensuite le replacer dans SimpleDB. Je serais soit utiliser S3/Cognito pour stocker/récupérer les données entièrement ou coller à SimpleDB (ou Dynamo) et stocker les données localement si vous détectez le périphérique est hors ligne. Il ne serait pas trop difficile d'intercepter les exceptions réseau provenant du client SimpleDB, puis de stocker la requête dans une base de données SQLite locale. Lorsque vous détectez que le réseau est revenu (ou est disponible au démarrage de l'application), vous pouvez envoyer les demandes que vous avez stockées.

Espérons que cela aide

+0

Merci WestonE pour la réponse, vraiment apprécier la même chose. – APD