Das ist so allgemein schwer zu sagen, da ich deinen genauen Anwendungszweck nicht kenne.
Es ist eine Client-Server Anwendung, wo für mehrere Anwender im Netz eine gemeinsame Termindatenbank verwaltet wird. Der Server verwaltet dabei die Datenbank (Clients fragen also an, ob sie einen Datensatz bearbeiten oder einfügen können, Server gibt OK, Client liefert dann die neuen oder geänderten Daten. Server verteilt neue oder geänderte Daten an andere Clients, die gerade im Netz mit dieser Datenbank verbunden sind).
Ich kann dir mal ein Beispiel geben, wie
MySQL das macht.
MySQL unterstützt einen Master-Slave-Modus, bei denen die Slaves ihren Datenbestand synchron zum Master halten.
Ja, so mache ich das im Prinzip auch.
MySQL führt dabei eine Nummer mit, die mit jeder Änderung am Datenbestand erhöht wird. Die Slaves sind mit dem Master verbunden und führen Änderungen sequentiell ein. Startest du einen Slave neu, so beginnt er, dieses s.g. "Backlog" von seinem letzten Datenstand aufzuholen.
Auch ein interessanter Ansatz. Das würde sogar "Offline"-Arbeiten mit dem Datenbestand ermöglichen.
Im Prinzip also eine Mischung aus beiden deiner Vorschläge. Das komplette Neuladen der Datenbestände muss man in
MySQL leider manuell machen, das ließe sich aber bestimmt automatisieren in deinem Programm.
Hilft dir das eventuell weiter als Ansatz?
Ja danke, das sind gute Ideen, um hier noch Erweiterungen / Verbesserungen einführen zu können.
Da die Datenbank i.d.R. maximal nur einige MB einnimmt, wäre auch ein stiller Reload machbar, wenn der Client merkt, er hat das eine oder andere verpasst.