2010-12-15 7 views
1

Donc, je prévois une application qui impliquera d'avoir une base de données principale sur un serveur, disons 3000 CD, avec les colonnes Titre, Artiste et Date de sortie.Comment gérer la synchronisation de la base de données d'un utilisateur avec une base de données principale sur un serveur?

1) Lorsqu'un utilisateur ajoute un CD à sa collection, il l'ajoute à la base de données locale SQLite des applications. Mais disons que j'ai mal orthographié un titre de CD, alors je fais une mise à jour. Lorsque l'utilisateur se synchronise, comment dois-je procéder pour gérer une ligne mise à jour? Devrais-je avoir une colonne 'IsUpdated' qui est juste une valeur numérique qui augmente de un chaque fois que je mets à jour cette ligne? De cette façon, lorsque l'application voit IsUpdated sur le serveur est plus grande que l'élément IsUpdated local pour cet élément particulier, il va maintenant remplacer le contenu. Cela a-t-il du sens? Est-ce même pratique? Quelle autre option y aurait-il?

2) Comment faire pour gérer l'ajout de nouvelles colonnes? Vous aimez ajouter un code à barres ou un prix? Est-ce que je pousse juste une mise à jour pour l'application qui ajoute les nouvelles colonnes localement, puis fais la même chose sur le serveur, et laisse le reste prendre sa course? Ce qui serait également au numéro 1 avec le problème de synchronisation.

Répondre

1

Vous devez d'abord donner plus de détails que cela. L'ensemble de la liste principale 3000 est-elle également répliquée sur la base de données distante?

Cela ressemble à ça.

Ok, donc si tel est le cas, ce n'est pas un problème de conception de base de données tant que c'est la réplication.

C'est une mauvaise idée de mettre à jour chaque ligne d'une table, en particulier celle qui prolonge la ligne. Vous feriez mieux de laisser tomber la table et de la recréer. < --- c'est ainsi que cela fonctionne dans les SGBDR sur les serveurs, aucune idée si ce concept change sur un client DB. Et maintenant nous abordons plus de questions de réplication iPhone que la simple réplication db. Serait-il préférable de simplement republier l'application? Les données de l'utilisateur sont-elles séparées des données du serveur. Le DDL peut-il être fait sur les tables locales/distantes après publication? Au lieu de rechercher toute la liste pour les changements comme vous l'avez souligné dans # 1. Je voudrais garder une table delta datée. L'application locale stockerait un last_updated_Datetime, tous les enregistrements de la table delta après cette date devraient être supprimés. Une fois téléchargé, le système local peut déterminer comment les appliquer. Encore une fois, cela est inapproprié pour les changements de masse.

Questions connexes