1. Einleitung
2. Tests am Master
3. Tests am Target
4. Differenzmodell
5. Skript
6. Skript Ausführung
7. Partizipation
Tools zum Vergleichen gibt es einige:
Zudem wollten wir unser Datenbankmodell gleich ein paar Standardtests unterziehen, da die Entwicklung zwar gegen die Theorie aber mit der Praxis häufig nicht mittels eines Case Tools geschieht. Es ist so leichter noch einige Unstimmigkeiten in der Struktur frühzeitig zu erkennen.
Auch prüft keines der vorhanden Tools unseres Wissens nach, ob die Daten des Targetmodells nach dem Update noch in die neue Struktur passen, also neue Not-Null-Felder tatsächlich überall Not-Null sind, oder neue eindeutige Indizes nicht verletzt werden. Also Dinge, die man vor einem Update wissen sollte. Doch dazu später mehr.
Jaimer öffnet sich wie folgt.
Als Masterdatenbank trägt man die ein, die das Vorbild für die Targetdatenbank ist, die man eine Zeile tiefer einträgt. JAIMER arbeitet mit den Standardfunktionen der gds32.dll und sollte daher auch Firebird kompatibel sein.
Mit dem Drücken des Startbuttons beginnt die Analyse. Nach der Ausführung kann man die einzelnen Zwischenergebnisse in den einzelnen Fenstern einsehen.
Auf dem Master werden die folgenden Überprüfungen vorgenommen und bei Verstößen gegen diese Bedingungen Warnungen ausgegeben. Die vorgenommen Überprüfungen genügen für unsere internen Zwecke. Spannend für uns, wenn aus dem Tool ein Produkt werden soll, ist die Frage, was würden Sie noch überprüfen.
Auf einer konkreten Datenbank kann das dann folgendermaßen aussehen:
Auf dem Target sollte man prüfen, ob die darin vorhandenen Daten, in die neue Struktur passen. Daher werden auch hier Tests vorgenommen. Hier ist es wieder interessant zu wissen, welche Tests Sie noch für notwendig halten. Es wird geprüft:
Auf einer konkreten Datenbank kann das dann folgendermaßen aussehen:
Das Differenzmodell enthält in einer Baumansicht nun alle Differenzen zwischen den beiden Datenbanken. Es werden alle Metadatenobjekte aufgeführt, die entweder neu, verändert oder nicht mehr vorhanden sind. Bei der Überprüfung von Sourcecode in Proceduren und Triggern wird dieser zuvor so normiert, dass Whitespaces (Blanks, Tabulatoren ,etc) sowie Groß- und Kleinschreibung keine Rolle mehr spielen. Kommentare bleiben bei dieser Überprüfung unberührt.
Im folgende Beispiel wurden "nur" drei Proceduren geändert.
Die erste Aufgabe eines Metadatenreplikationswerkzeuges hätte JAIMER damit erfüllt, die Erkennung aller Differenzen, ohne dabei sensibel zu sein. Diese erste Hürde wird nicht von allen oben genannten Werkzeugen genommen und dies war auch der Hauptgrund, die Entwicklung von JAIMER zu beginnen.
Die zweite Aufgabe besteht nun darin, aus der nun vorliegenden Differenzanalyse ein SQL Skript zu erzeugen, welches die Änderungen von der Master- in die Targetdatenbank überträgt. Diese Aufgabe wird durch InterBase arg verkompliziert, insbesondere wenn Abhängigkeiten zwischen den Objekten bestehen, also Procedure oder Trigger, andere Views oder Proceduren aufrufen. Auch lassen sich Foreign Keys meist nur mit allerhand Trickserei und zwischenzeitlichen Reconnect bei exklusiven Zugriff auf die Datenbank verändern.
Bei dieser zweiten Aufgabe sehen wir noch die größte Notwendigkeit an JAIMER etwas zu tun, derzeit ist das erzeugte Skript eine ausreichende Vorlage für einen manuellen Update. Ausreichende Resonanz Ihrerseits würde aber ebendieses, also Verbesserung der Skripterzeugung auslösen.
In unserem Beispiel ist es allerdings mit einigen ALTER PROCEDURE Befehlen getan.
Unterhalb der Skriptausgabe befindet sich ein Button das Skript auch auszuführen, die Ergebnisse der Ausführung bzw. deren Fehler finden sich dann im Skript Error Fenster.
So wie das Tool derzeit ist, kann man es als Freeware mit allen Einschränkungen anbieten, was wir hiermit auch tun. Zum Download gelangen Sie [hier].
Über Feedback zum JAIMER würden wir uns freuen, so hätten wir doch dann eine realistische Einsetzung ob Bedarf für (das erste) wirklich funktionierende Abgleich Tools besteht. Gerne diskutieren wir auch über die Fehler und Probleme der anderen Tools, ggf. sind ja mittlerweile in einem der Tools auch alle Schwächen behoben, man testet einmal abgelehnte Tools ja nicht zwingend regelmäßig erneut.