Ich entwickle eine mobile Webanwendung (für iPhone und Android) mit einer lokalen Datenbank (unter Verwendung von HTML5-Webstorage), sodass meine App weiterhin verwendet werden kann, wenn der Benutzer offline ist.
Dies funktioniert einwandfrei, aber ich möchte die lokalen Daten auf einem Server speichern. Ich muss also die lokale Datenbank mit einer Datenbank auf einem Server synchronisieren. Die Synchronisation kann nur in eine Richtung erfolgen, aber in Zukunft möchte ich sie in beide Richtungen synchronisieren (Server <-> lokale Datenbank).
Diese Anforderung sieht sehr häufig aus (oder wird in Zukunft für mobile Web-Apps üblich sein), aber ich kann keine Bibliothek finden, die dies tut.
Ich weiß, dass Google dies in seiner mobilen Web-App (z. B. Google Mail) tut, und ich fand, dass das WSPL-Projekt ein Google-Projekt ist, jedoch ohne Quelle zum Herunterladen.
Wenn ich keine Lösung finde, werde ich eine Bibliothek erstellen, um dies zu tun, da die Einweg-Synchronisierung nicht schwierig aussieht, aber ich frage mich, ob es andere Lösungen gibt.
Antworten:
https://github.com/orbitaloop/WebSqlSync
http://quickconnect.pbworks.com/Using-Enterprise-Synchronization
Um diese Bibliothek zu verwenden, müssen Sie das DataAccessObject des Frameworks verwenden, um auf Ihre Datenbank zuzugreifen. Es speichert alle auf die Datenbank angewendeten SQL-Anforderungen (außer natürlich select) und sendet sie an den Server. Es ist großartig, das Löschen zu verwalten, aber es ist ein wenig schwierig, wenn Sie viele Updates haben und der Server dieselbe SQL-Sprache verwenden muss ...
http://www.quickconnectfamily.org/qcdbsync/ (Ich denke, es speichert auch den Verlauf aller SQL-Anforderungen)
https://github.com/zefhemel/persistencejs
"persistence.js ist eine asynchrone objektrelationale Javascript-Mapper-Bibliothek. Sie können sie sowohl im Browser als auch auf dem Server verwenden (und Datenmodelle zwischen ihnen austauschen)."
Sie haben ein DB-Synchronisationsmodul: DOC von persistence.synch.js
(funktioniert mit HTML5 DB SQLite oder Google Gears auf dem Client und MySQL auf dem Server)
http://impel.simulacre.org/api/Impel.inTouch
http://www.sencha.com/products/io/
quelle
Ich habe eine generische Synchronisierungslösung namens WebSqlSync entwickelt .
Es ist nicht abhängig von einem Framework. Es ist hier verfügbar: https://github.com/orbitaloop/WebSqlSync
Auszug aus der README-Datei:
WebSqlSync
Synchronisieren Sie automatisch eine lokale WebSQL-Datenbank (SQLite im Navigator) mit einem Server. (2-Wege-Synchronisierung: Client <-> Server)
Sehr einfach in Ihre bestehende App zu integrieren und sehr einfach zu bedienen (2 Funktionen zum Aufrufen: initSync und syncNow)
Verwendung
Initialisieren
Sie müssen die Bibliothek initialisieren (zum Beispiel bei jedem Start).
Es werden automatisch 2 Tabellen erstellt (sofern diese noch nicht vorhanden sind, eine zum Speichern aller neuen oder geänderten Elemente (Tabelle new_elem) und eine zum Speichern des Datums der letzten Synchronisierung (Tabelle sync_info). Außerdem werden SQLite-Trigger in erstellt Um INSERT oder UPDATE für die zu synchronisierenden Tabellen zu beobachten (um die geänderten Elemente automatisch in die Tabelle new_elem einzufügen):
Wobei TABLES_TO_SYNC die Liste der Tabellen ist, die Sie mit dem Server synchronisieren möchten, z.
Synchronisieren
Um die Synchronisation zu starten, müssen Sie die Funktion syncNow aufrufen. Sie können es alle X Sekunden oder nach einigen Änderungen aufrufen, zum Beispiel:
Und das ist alles, was Sie auf dem Client tun müssen. Auf der Serverseite müssen Sie Ihre eigene Lösung codieren (dies ist jedoch nicht kompliziert). Und es gibt einige Beispiele in PHP & Java. Auch hier sind Beiträge willkommen.
quelle