Hopsel: (KONZEPT) Aktualisieren von Datenbankstrukturen

Hi alle!

Für eine Studienarbeit möchte ich mich mit dem Thema "Aktualisieren von Datenbankstrukturen" beschäftigen.

Es geht konkret um ein Programm, welches Daten über einen MSSQL-Express-Server (2005 und neuer) verwaltet.

Das Programm wird regelmäßigen Updates unterzogen. Dabei kann sich auch die Datenbankstruktur ändern.

Problem dabei: Der Anwender kann mehrere Updates übersprungen haben. Trotzdem soll das Programm korrekt aktualisiert werden.

Ich habe nun versucht mich mal ein bisschen zu informieren und die eigenen grauen Zellen anzustrengen. Richtig viel findet man allerdings nicht und das, was man findet [1], erscheint trivial.

Vorgehensweise bei einem Update:
1. Untersuchen und Versionsbestimmung der aktuellen Datenbankstruktur.
2. Datenbankstruktur inkrementell aktualisieren, d.h. bei übersprungenen
   Updates müssen alle dazwischen liegenden vorher und in chronologischer
   Reihenfolge ausgeführt werden

Nun, das Ganze klingt vom Prinzip her ja recht einfach.

Gibt es einen Haken bei der Geschichte?
Kennt ihr Literatur/Seiten, wo dieses Problem behandelt wird?

Über Hinweise und Anmerkungen freue ich mich sehr.

[1] http://www.eggheadcafe.com/software/aspnet/34142843/sql-strukturupdate-zur-la.aspx

MfG H¤psel

--
"Gleicht euch nicht dieser Welt an, sondern wandelt euch und erneuert euer Denken."
(Röm 12,2)
Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  1. Hallo!

    Ein wesentliches Problem bei der Änderung von Datenbankstrukturen besteht letztlich darin, dass die Daten ja auch nachgezogen werden müßten, damit die Änderung sinnvoll wird. Im manchen Fällen wird schlimmstenfalls eine komplette Migration auf ein neues Format notwendig.

    Grundsätzlich sollte eine Datenbankstruktur von Anfang an alle Eventualitäten berücksichtigen, so dass im Idealfall nie eine Änderung notwendig wird.

    Wenn man hingegen von vorneherein einplant, dass es Änderungen in der Datenbank geben kann und soll, ist es hingegen praktischer, zusammen mit der Datenbank die Abstraktion derselben zu versionieren, damit der Zugriff sauber gekapselt bleibt.

    Gruß, LX

    --
    RFC 1925, Satz 6a: Es ist immer möglich, einen weiteren Umweg einzufügen.
    RFC 1925, Satz 11a: Siehe Regel 6a
  2. 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:

    1. Untersuchen und Versionsbestimmung der aktuellen Datenbankstruktur.
    2. Datenbankstruktur inkrementell aktualisieren, d.h. bei übersprungenen
         Updates müssen alle dazwischen liegenden vorher und in chronologischer
         Reihenfolge ausgeführt werden

    Nun, 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