# Datenbanken synchronisieren



## me82 (22. Aug 2008)

Hallo zusammen

Ich habe eine Anwendung bei der der Benutzer, wenn er im Büro sitzt sich mit einer MySQL Datenbank verbindet und aus dieser Daten liest bzw. auch neue einträgt. Diese Datenbank läuft auf einem Server im internen Netzwerk.
Wenn der Benutzer nun aber ausserhalb des Büros unterwegs ist, dann arbeitet er auf einer Kopie dieser Datenbank auf seinem lokalen Rechner. (z.B keine Internet oder vpn-Verbindung vorhanden).

Meine Frage ist nun wie ich am besten die Synchronisation der Lokalen bzw, wenn auf dem Server neuere Daten liegen, Remotedatenbank realisieren kann. Mein Ansatz wäre in jeder Tabelle Timestamps zu hinterlegen und diese bei einer Änderung zu aktualisieren. (entweder Remote oder Lokal)

Allerdings weiß ich nicht wie performant das ganze ist, da ich ja in beiden Datenbanken die Tabellen durchlaufen muss und die Timestamps vergleichen muss.

Vllt. gibt es ja schon ein Framework das man zur Synchronisierung von Datenbanken verwenden kann?
Ansonsten wäre ich über Ansätze/Überlegungen wie man dies sinnvoll und performant realisieren kann dankbar.

MFG
me82


----------



## r.w. (2. Sep 2008)

me82 hat gesagt.:
			
		

> Hallo zusammen
> 
> Ich habe eine Anwendung bei der der Benutzer, wenn er im Büro sitzt sich mit einer MySQL Datenbank verbindet und aus dieser Daten liest bzw. auch neue einträgt. Diese Datenbank läuft auf einem Server im internen Netzwerk.
> Wenn der Benutzer nun aber ausserhalb des Büros unterwegs ist, dann arbeitet er auf einer Kopie dieser Datenbank auf seinem lokalen Rechner. (z.B keine Internet oder vpn-Verbindung vorhanden).
> ...



Nur mit Timestamps wird das kaum möglich sein. 
Die Synchronisation muss ja auch berücksichtigen, dass eventuell Datensätze im internen Netzwerk UND dem 
kopierten Datenstand geändert worden sind, nachdem die Kopie gezogen wurde. 

In einem meiner Projekte konnte ich das Problem umgehen, indem Teile der Datenbank in der Kopie mit NurLesen-Rechten versehen wurden. Die Datensätze, die der externe Mitarbeiter editieren sollte, wurden in der internen Datenbank bis zur Synchronisation für Schreibvorgänge gesperrt. Ist aber natürlich nicht auf jeden Workflow übertragbar.

VG ROlf


----------



## me82 (2. Sep 2008)

Erst einmal danke für Deine Antwort,

auf viele Teile der Datenbank hat der Benutzer eh nur Leserechte, d.h. die werden eh nur am Server im Netz
geändert. Sind also immer neuer, da funktioniert das mit den Timestamps.

Allerdings wie Du sagst da wo er Schreibrechte hat wirds haarig  :wink: . Die Idee mit dem Sperren könnte
klappen, werde das aber mit dem Kunden noch mal besprechen ob er damit leben kann.

Vielen Dank auf jeden Fall für die Anregung.

Mfg


----------

