In eine Anwendung, die Sie einbettet, SQLite3 und verwendet eine in-memory-Datenbank, ist es möglich, um die Datenbank zu replizieren zwischen zwei Laufenden Instanzen der Anwendung? Ich könnte dies per hand mit einem homebrew-Protokoll duplizieren alle meine DB-Zugriffe, aber es scheint wie etwas, das getan werden sollte, innerhalb der DB-Schicht.
InformationsquelleAutor der Frage kdt | 2009-12-11
Brute-force-Ansatz: Senden Sie ".dump" - Befehl erstellen Sie eine text-Darstellung der Daten. Gelesen, dass Daten in die zweite Datenbank. Nicht sicher, können Sie diese verwenden.
Wenn Sie eine feinkörnige update (Zusendung einer Kopie des jeweils bis zu der anderen kopieren), haben Sie einen Blick auf
sqlite3_update_hook
Aber wie wollen Sie, um Fehler zu behandeln? Zum Beispiel, was passiert, wenn die Kopie der DB in app2 kann nicht machen, ein update für einige Grund?
Um dieses Problem zu lösen, verschieben Sie die Datenbank auf einem server-Prozess und haben die zwei apps sprechen.
InformationsquelleAutor der Antwort Aaron Digulla
Lsyncd - Live Syncing (Mirror) Daemon von nutzen sein können hier. Es verwendet rsync zu tun, die fortlaufende Replikation auf Dateisystem-Ebene.
InformationsquelleAutor der Antwort cyrus.y
Wenn Sie möchten, dass die Replikation in eine in-memory-Datenbank, die Sie benötigen, zu betrachten,berkeley-DB - (BDB -). Jedoch sind die Daten-Modell für BDB-string-string-Wörterbuch, so verliert man die Flexibilität von SQL. plus es hat eine drei-Klausel-Lizenz, also wenn dein Projekt ist kommerziell, die Sie brauchen, um Lizenzen.
InformationsquelleAutor der Antwort Hassan Syed
Out of the box, keine.
Es gibt eine kleine Anzahl von Drittanbieter-Optionen:
SQLite-sync: https://ampliapps.com/sqlite-sync/ Dies scheint attraktiv, weil es repliziert werden können, zu anderen Datenbanken wie SQLite, und nicht ändern Sie die SQLite-engine. Ich habe nicht versucht es noch nicht.
Litereplica: http://litereplica.io/ nur in Eine Richtung. Scheint ein bisschen herum.
LiteSync: http://litesync.io/ Zwei-Wege-Replikation. Ziemlich neu, aber eine evolution von Litereplica so wohl reifer, als es scheint. Ich habe versucht, dies ein wenig und es scheint zu funktionieren reibungslos, mit ein paar bugs, die der Entwickler ansieht. Sie müssen verwenden Sie die developer ' s modified SQLite-engine, die scheint wie eine Bezug auf Abhängigkeit. Sie bekommen auch nicht viel Kontrolle, z.B. kann man nicht sagen, jetzt replizieren, ohne öffnen der Datenbank.
InformationsquelleAutor der Antwort O'Rooney
Nein ist es nicht, da der Projektumfang wird ein einfaches in-Prozess-Datenbank. Aber da die Datenbank nur eine einzelne Datei, könnten Sie schreiben Ihre eigene Replikation Skript basiert auf Klartext-Datei kopieren, rsync oder etwas ähnliches.
Wenn Sie wirklich wollen, eine SQLite-basierten client - /server-Typ RDBMS, können Sie einen Blick auf SQLiteDBMS.
InformationsquelleAutor der Antwort Taneli Waltari
Unison? Am besten Sie tun konnte, war zwar mit hot-spare, weil SQLite-db in eine monolithische Datei. Sie konnte nicht round-robin zwischen den beiden "Instanzen". Hot-spare ist nicht schlecht, Sie nehmen Sie einfach die andere app+db ohne viel Getue, zu vergleichen, MySQL-master-slave-oder aktiv-passiv, wo es einige manuelle Eingriffe, was nicht einfach ist. MySQL Replikation geht um SQL, nicht nur die diffs wie unison/rsync. Aber mit unison haben Sie die master-master.
InformationsquelleAutor der Antwort Rich K.