46.5 Verteilte Datenbanken mit DIAL-ON-DEMAND Leitung
Die Anforderungen bei verteilten Datenbanken mit einer DIAL-ON-DEMAND
Leitung sind völlig andere, als bisher beschrieben. Die Synchronisation der
Daten muß schnell und zügig geschehen. Hierzu muß man wissen, welche Daten
sich geändert haben, also welche Datensätze gelöscht worden sind, welche
hinzugekommen sind, welche verändert wurden. Hierzu muß man ein Journal über
das Datum und die Uhrzeit sämtlicher Schreib-und Änderungsvorgänge der
Datenbank anlegen. MySQL kann dieses Problem aber mit Hilfe eines
Workarounds umgehen. Hierzu fügt man eine weitere Tabelle vom Typ
TIMESTAMP in die Datenbank
ein, die Datum und Uhrzeit jeder Änderung mitführt. Hierzu muß nicht
in die Struktur der Statements eingegriffen werden. Sollen nun alle
Änderungen an eine Master-Datenbank via Internet oder Direktverbindung
übermittelt werden, so muß man mit Hilfe des Batch-Modus folgende Schritte durchführen:
- Schreibzugriffe mit Hilfe von GRANT unterbinden
- Mit Hilfe eines auf die Datenbankstrukturen angepasstes Batch Scriptes
werden alle Datensätze, die sich im FELD mit TIMESTAMP seit dem letzten Abgleich
verändert haben, in eine ASCII-Datei im MySQL Verzeichnis exportiert.
- Die ASCII-Daten werden Hilfe von z.B. ZIP komprimiert
- Danach kann die Übertragung via FTP über das Internet erfolgen.
Soweit zum Client, nun aber zur Master Datenbank:
- Auf dem Zielserver wird wiederum ein Batch-Script ausgeführt, welches
die ASCII Datein mit den Änderungen dekomprimiert.
- Die ASCII-Daten werden wird im Batchmodus in
eine zuvor neu angelegte oder geleerte Tabellen in der Master-Datenbank
importiert.
- Es muß ein Abgleich zwischen den Daten in der Master-Datenbank und den
Importierten Änderungen der Client-Datenbank erfolgen. Wenn die Client
Datenbank Einträge besitzt, die in der Master-Datenbank bereits nicht mehr
vorhanden sind, dann müssen diese Daten aus der Client-Datenbank gelöscht
werden. Dies geschieht mittels eines SQL-Statements.
- Alle zulässigen Einträge können dann in die Master-Datenbank
übertragen werden.
Wer vielleicht den Eindruck hat, daß Datenbank-Synchronisation mit
ausgewachsenen Datenbanken einfacher sei, der irrt gewaltig. Alle die hier
getätigten Überlegungen müssen auch bei teuren, kommerziellen Datenbanken
angestellt werden.