2010-02-28 5 views
2

J'ai commencé à travailler sur une application iPhone où j'ai besoin de synchroniser des données avec une base de données externe MySQL. Le schéma de base de données actuel utilise les champs GUID/UUID comme clés primaires pour maintenir les relations entre les tables. J'ai déjà ce travail entre une application de base de données et la base de données MySQL, donc ce n'est pas une question concernant la synchronisation par exemple.Synchronisation des données de base avec la base de données externe

J'ai commencé à utiliser des données de base, mais je me rends compte qu'il maintient des relations entre les entités en utilisant son propre schéma dans la base de données SQLite. Est-ce que je vais dans le mauvais sens en utilisant les données de base? Sinon, comment peut-on synchroniser les données entre un magasin de données principales et une base de données externe tout en conservant les relations de données?

Répondre

3

Tout ce que vous devez faire est d'écrire la logique pour traduire les entités d'un schéma db à un autre. Vous pouvez récupérer des objets du serveur et les convertir en objets de données de base, récupérer l'objet à partir des données de base et les convertir en entités mysql lors de l'enregistrement sur le serveur. Rien de trop difficile impliqué vraiment

0

Je suis d'accord avec Griffo; traduisez simplement les lignes ou entités que vous récupérez de la base de données mysql en objets gérés (et vice versa).

Si je comprends ce que vous cherchez correctement, je recommanderais certainement d'utiliser des données de base. La traduction des données entre MySQL et Core Data n'est pas si difficile, et si vous utilisez un NSFetchedResultsController pour afficher vos données dans un UITableView, vous n'avez pratiquement pas besoin d'écrire de code.

+0

Que diriez-vous si vous faites des appels Web (NSURLConnection) sur un fil de fond, j'ai pensé que cela pourrait compliquer les choses. N'êtes-vous pas censé utiliser un contexte séparé ou quelque chose? Si vous faites comment actualiser les autres contextes pour avoir une vue cohérente des données? – marchinram

+0

Oui, vous auriez besoin d'un contexte différent. Je ne l'ai pas essayé, mais je m'attends à ce que si vous aviez votre thread d'arrière-plan notifier votre thread principal quand cela a été fait, le thread principal chargerait les nouvelles données très bien. – JoBu1324

0

et vous pouvez toujours conserver les GUID d'origine comme, par exemple, des ID externes facultatifs pour les entités importées. De cette façon, vous pourrez plus facilement dépanner vos importations de données et corréler les données entre les types de magasins de données.

Questions connexes