moin,
das....
Für eine Studienarbeit möchte ich mich mit dem Thema "Aktualisieren von Datenbankstrukturen" beschäftigen.
ist was anderes als das...
Das Programm wird regelmäßigen Updates unterzogen. Dabei kann sich auch die Datenbankstruktur ändern.
ist eine alte diskussion, aber man sollte schon unterscheiden, dass datenstrukturen nicht nur dazu da sind, um ein bestimmtes programm mit daten zu füttern. letzlich können verschiedene programme auf die datenbank zugreifen.
Problem dabei: Der Anwender kann mehrere Updates übersprungen haben. Trotzdem soll das Programm korrekt aktualisiert werden.
was das kleinste problem ist. es wurde ja schon genannt, die datenstrukturen beinhalten ja daten, die ebenfalls sinnvoll migriert werden müssen. veränderungen heißt ja nicht immer nur, das kommt eine neue spalte hinzu, ganze tabellen können wegfallen, andere neu hinzukoemmen, etc. hinzu kommt noch, dass es objekte in der datenbank gibt, die ebenfalls von änderungen in der datenbank betroffen sein können, zum beispiel procedure und funktionen der datenbank.selbst wenn diese nicht direkt betroffen sind, ist es erforderlich sie neu zu kompilieren.
Vorgehensweise bei einem Update:
- Untersuchen und Versionsbestimmung der aktuellen Datenbankstruktur.
- Datenbankstruktur inkrementell aktualisieren, d.h. bei übersprungenen
Updates müssen alle dazwischen liegenden vorher und in chronologischer
Reihenfolge ausgeführt werdenNun, das Ganze klingt vom Prinzip her ja recht einfach.
erstens ist dieses vorgehen völlig unzureichend und trivial ist so was recht selten. klar wenn mal hier oder da eine spalte hinzu kommt, mag der aufwand gering sein. aber wenn es ein wenig komplexer wird, dann ist vorbei mit lustig. was machst du den zum beispiel, wenn eine spalte hinzu kommt, die einen NOT NULL constraint hat und die tabelle aber schon daten beinhaltet ?
Gibt es einen Haken bei der Geschichte?
ich würde sagen die gefahren sind manigfaltig, oftmals ist da gute alte handarbeit erforderlich....
Ilja