Wie erstellen Sie java-desktop-Anwendung mit offline-und online-Datenbank, die Synchronisierung in regelmäßigen Abständen?
Möchte ich zum erstellen von java-desktop-Anwendung, die speichert die Daten offline in einer Datenbank (nicht nur ein paar config-Dateien). Die Anwendung sollte funktionieren, wenn der Benutzer offline ist. Wenn der Nutzer zum online -, den offline-Datenbank sollte in der Lage sein, um die Synchronisierung mit dem master-online.
Ideen, die Technologien können verwendet werden, um dies zu erreichen?
- Ist es einer Anwendung + eine online-server? Oder mehrere Anwendungen + one-online-server? Oder mehrere Anwendungen + mehrere online-Server, wo jede Anwendung hat Ihren eigenen online-server?
- Es werden viele Instanzen der Anwendung und einer online-Datenbank. Wie Dropbox, aber für die Datenbank, nicht nur Dateien.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese diskutiert wurde auf stackoverflow eine Menge, und in der Regel reduziert sich auf: don ' T roll-out Ihre eigene Lösung - Dies ist ein sehr spezielles Feld - nachschlagen SymmetricDS. Es tut, was Sie wollen.
Einer meiner fav Diskussionen ist Strategie für die Offline - /Online-Daten-Synchronisierung
Verwenden Sie eine der verfügbaren Reine java-DB-Implementierungen eine lokale DB. Verwenden Sie eine andere DB als die entfernte.
Logik implementieren, die versucht, eine Verbindung zu remote-DB und fallen mit dem Rücken zur lokalen auf Fehler. Wenn eine Verbindung erfolgreich zu remote-DB-Implementierung der Daten-Synchronisation.
Wenn die lokale Anwendung betreibt, es sollte nicht nur die Datenbank ändern, aber auch das protokollieren der änderungen. Die änderungen an den server gesendet, wenn die Verbindung verfügbar ist. Außerdem erhält die Anwendung protokolliert änderungen auf dem server gespeichert (aus anderen Anwendungs-instances).
Das Hauptproblem ist, wie zum Zusammenführen von änderungen von unterschiedlichen Instanzen. Es kann 3 Varianten:
1) Jede Instanz der Anwendung ändern können, nur seinen privaten Teil der gesamten Datenbank. Ihr glücklichen, keine Verschmelzung erforderlich, und auf dem server speichern können nur protokolliert und nicht die gesamte Datenbank.
2) änderungen immer automatisch zusammengeführt werden (zum Beispiel, Anwendung hinzufügen können Sie einen Wert einer gemeinsamen Variablen, aber nicht direkt). Der server läuft die ganze Datenbank, akzeptiert teilweise die Protokolle von Kunden, generiert seine eigenen log und sendet es an die clients.
3) Kunden dürfen tun eigenmächtige Veränderungen. Dies führt zu möglichen Konflikten. Im Falle von Konflikten, von widerstreitenden änderungen abgelehnt werden sollte. Das bedeutet, dass, wenn ein client die lokalen änderungen, die änderungen können verworfen werden später durch den server. Die Benutzeroberfläche muss reflektieren dieses Problem. In der Ruhe ist, ist ähnlich der Variante 2.