J'ai une application Web qui repose sur une base de données MySQL, pour laquelle je pense à la création d'une application iPhone. Cette application permettrait aux utilisateurs de parcourir/insérer/mettre à jour/supprimer des données sur leur compte sur l'application web. La manière la plus simple serait de construire l'application iPhone simplement comme une interface pour l'application web, c'est-à-dire que chaque opération nécessite d'être connectée au web. Cependant, je voudrais que l'application iPhone ait sa propre version "hors ligne" de la base de données. Cela permettrait non seulement à l'utilisateur de travailler hors ligne, mais offrirait également une meilleure expérience, car avoir tout localement signifie une application plus rapide et plus réactive. Je gérerais les conflits en utilisant un horodatage et en gardant la dernière version (j'utilise déjà la soft-deletion, c'est-à-dire quand l'utilisateur supprime un enregistrement je mets simplement un drapeau), mais je ne sais pas comment gérer les insertions . En effet, si l'utilisateur insère de nouveaux éléments sur des bases de données offline (application iPhone) et online (application web), il y aura un conflit de clé primaire (toutes mes tables ont un champ INTEGER avec auto-incrémentation comme clé primaire). Comment puis-je gérer ce problème?Synchronisation bidirectionnelle entre l'application iPhone et l'application Web
Je pensais avoir une clé primaire à deux colonnes, l'une étant l'entier auto-incrémenté, et l'autre étant spécifique au "périphérique". De cette façon, les nouveaux enregistrements ajoutés via l'application web auraient ID 1-web, 2-web, etc. et ceux créés via l'application iPhone 1-iphone, 2-iphone, etc ... Cela permettrait de fusionner les deux bases de données sans avoir de conflits. Que penses tu de cette idée ?
Pourriez-vous élaborer sur l'UUID? Cela signifie utiliser une clé unique générée à partir de l'enregistrement lui-même au lieu d'un entier de base auto-incrémenté? L'idée de diviser l'espace clé peut également fonctionner. Merci ! – Wookai
L'UUID est juste un nombre semi-aléatoire de 128 bits pouvant être généré à partir de n'importe quelle source. Les algorithmes utilisés pour générer les UUID sont conçus pour éviter les collisions, même lorsque plusieurs sources les génèrent simultanément et indépendamment l'une de l'autre. Sur MySQL, la fonction UUID() peut être utilisée à cette fin, mais vous pouvez également les générer sur l'iPhone indépendamment en utilisant le [CFUUIDCreate] (http://developer.apple.com/iphone/library/documentation/CoreFoundation/Reference /CFUUIDRef/Reference/reference.html#//apple_ref/c/func/CFUUIDCreate) fonction. –
Super, merci beaucoup pour votre aide, c'est exactement ce que je cherchais! – Wookai