Question

Dans une application qui intègre SQLite3 et utilise un est-il possible, la base de données en mémoire pour répliquer la base de données entre deux instances de fonctionnement de l'application? Je pouvais le faire à la main avec un protocole homebrew dupliquer tous mes DB accès, mais il semble que quelque chose qui devrait être fait à l'intérieur de la couche DB.

Était-ce utile?

La solution

approche de la force Brute: Envoyez la commande « .dump » pour créer une représentation textuelle des données. Lisez ces données dans la base de données dans la seconde. Vous ne savez pas que vous pouvez utiliser.

Si vous avez besoin d'une mise à jour à grain fin (envoyer une copie de chaque copie jusqu'à l'autre), jetez un oeil à sqlite3_update_hook

Mais comment comptez-vous gérer les erreurs? Par exemple, ce qui se passe lorsque la copie de la DB dans App2 ne peut pas faire une mise à jour pour une raison?

Pour résoudre ce problème, déplacer la base de données à un processus de serveur et les deux ont des applications lui parler.

Autres conseils

Hors de la boîte, non. Il y a un petit nombre d'options de tiers:

SQLite synchronisation: https://ampliapps.com/sqlite-sync/ Celui-ci semble attrayant, car il peut se répliquer à d'autres bases de données ainsi que SQLite, et ne modifie pas le moteur SQLite. Je ne l'ai pas encore essayé.

Litereplica: http://litereplica.io/ une seule façon. Il semble avoir été un peu.

LiteSync: http://litesync.io/ réplication bidirectionnelle. Jolie nouvelle, mais une évolution de Litereplica donc probablement plus mature qu'il n'y paraît. Je l'ai essayé un peu et il semble fonctionner en douceur, avec quelques bugs que le développeur est en train de regarder. Vous devez utiliser le moteur SQLite modifié par le développeur, ce qui semble être une dépendance au sujet. Vous obtenez également ne pas beaucoup de contrôle, par exemple vous ne pouvez pas dire répliquent désormais sans rouvrir la base de données.

Lsyncd - Live Syncing (Miroir) Daemon peut être utile ici. Il utilise rsync pour faire la réplication continue au niveau du fichier.

Unison? Le meilleur que vous pourriez faire bien était de rechange, parce que SQLite db dans un fichier monolithique. Vous ne pourriez pas ronde entre les deux « instances ». de secours est pas mal, il vous suffit de choisir l'autre application + db sans beaucoup de bruit, à comparer maître-esclave MySQL ou actif-passif où il y a une intervention manuelle qui est pas facile. La réplication MySQL passe autour SQL, pas seulement diffs comme l'unisson / rsync. Mais avec l'unité, vous avez maître-maître.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top