Es gibt wohl kaum einen Java (oder C# oder was auch immer) Entwickler der was auf sich hält, und der nicht weiß was 'refactorn' bedeutet. Es sei denn 'was auch immer' steht für SQL, PL/SQL oder dergleichen. Denn Datenbanken und darin enthaltene Artefakte der Softwareentwicklung werden, aus welchen Gründen auch immer, anders behandelt, als 'normaler' Code. Selbst die Verwendung eines Versionskontrollsystems ist für viele Neuland. Und die Idee Code quasi im Vorbeigehen zu verbessern, zu verfeinern und aufzuräumen erscheint vielen DBAs und Datenbankentwicklern völlig abwegig.

Man muss den DBAs und Datenbankentwicklern zu Gute halten, das selbst Martin Fowler refaktorn von Datenbanken für besonders schwierig hält und es daher dieses Thema in seinem Buch "Refactoring" mehr oder weniger vollständig ausgeschlossen hat. Dieses Thema haben mittlerweile andere bearbeitet und seit einigen Jahren ist eine gesondertes Buch zum Thema Refactoring von Datenbanken verfügbar. Ich halte dieses Buch für sehr wichtig und lesenswert und es sei allen, die mit Datenbanken zu tun haben dringenst an Herz gelegt.

Allerdings muss ich den potentiellen Leser warnen. Die Autoren Scott Ambler und Pramodkumar Sadalage haben keinen Trick auf Lager, wie sie Änderungen von Datenbanken zwischen den verschiedenen Instanzen synchronisieren. Bei Änderungen an Datenbanken müssen sehr oft auch Daten aktualisiert werden und dies geht nur mit dem Wissen um diese Daten, dies kann nicht automatisiert werden. Es wird hier also korrekter Weise auf die manuelle Pflege von Skripten verwiesen. Leider hat sich die Hoffnung der Autoren bisher nicht erfüllt, dass leistungsfähige Tools für die Unterstützung dieser Aufgaben entstehen. Es gibt zwar mittlerweile einige, die Skripte verwalten, feststellen welche noch eingespielt werden und diese einspielen oder zu einen SQL Script zusammenführen. Aber diese Tools fühlen sich an wie ein Faustkeil, wenn man Werkzeuge wie IDEA oder Eclipse gewohnt ist.

Talks

Wan't to meet me in person to tell me how stupid I am? You can find me at the following events: