2010-07-20 5 views
3

Est-il possible, et si oui comment puis-je synchroniser efficacement une base de données locale avec une base de données globale de sorte que lorsqu'une action est effectuée sur la version locale, base de données. Le simple fait d'utiliser le contrôle de version pour subvertir le global est inacceptable car il pourrait y avoir plusieurs copies locales de la base de données en fonction du nombre de personnes effectuant des changements dans la base de données. En d'autres termes, est-il possible de simplement avoir un miroir de la base de données afin de pouvoir y accéder localement même si c'est ailleurs sur un réseau.Synchronisation d'une base de données SQLite locale avec un serveur SQLite DB

Répondre

4

Synchronisation de bases de données si un sujet très complexe. L'approche la plus simple consiste à conserver un enregistrement au niveau de l'application (ou bien un encapsuleur sqlite personnalisé) de toutes les requêtes exécutées sur chaque système, puis à les réexécuter lors de la synchronisation.

Cela devient problématique lorsque vous avez plusieurs sources ou une synchronisation bidirectionnelle. Les requêtes qui s'exécutent correctement sur une base de données peuvent échouer sur une autre en raison d'un ordre différent des opérations (en supposant que l'intégrité référentielle est activée).

Une autre approche plus complexe mais robuste consiste à suivre l'historique complet des transactions pour chaque table. Vous aurez également besoin de savoir quels enregistrements ont été affectés dans chaque transaction, et l'ordre dans chaque transaction. Une fois cela fait, vous aurez probablement besoin d'un moyen de détecter les problèmes et de les contourner automatiquement.

Questions connexes