Est-ce que la réplication de soutien de SQLite?
-
19-09-2019 - |
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.
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.
Si vous voulez la réplication dans une base de données en mémoire, vous devez regarder
Non, ce ne pas parce que la portée est d'être une simple base de données en cours du projet. Mais parce que la base de données est un seul fichier, vous pouvez écrire votre propre script de réplication sur les opérations de copie de fichiers simples, rsync ou quelque chose de similaire. Si vous voulez vraiment un type client basé SQLite / serveur de SGBDR, vous pouvez jeter un oeil à SQLiteDBMS .
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.