Versionierung (Eigenentwicklung)

IFS-Logo Diese Seite ist ein Teil der IsyFact-Standards. Alle Inhalte der Seite, insbesondere Texte und Grafiken, sind urheberrechtlich geschützt. Alle urheberrechtlichen Nutzungs- und Verwertungsrechte liegen beim Bundesverwaltungsamt.

Creative Commons Namensnennung Die Nutzung ist unter den Lizenzbedingungen der Creative Commons Namensnennung 4.0 International gestattet.

Diese Seite dokumentiert die Versionierung von Datenbankschemas mittels einer Eigenentwicklung. Das empfohlene Vorgehen ist die Versionierung mit Liquibase.

Die Verwaltung von Versionsinformationen für ein Datenbankschema innerhalb der Datenbank soll sicherstellen, dass die Anwendung und Datenmigrationsskripte erkennen können, ob ein Datenbankschema die erwartete Version hat. Zusätzlich sollen die Datenbankadministratoren nachvollziehen können, welche Änderungen am Datenbankschema bereits erfolgt sind.

Die Versionsnummer eines Datenbankschemas ist gleich der Versionsnummer der Anwendung, mit der das Schema angelegt bzw. zuletzt geändert wurde. Damit ist auf einen Blick zu erkennen, welche Versionsnummer eine Anwendung mindestens haben muss, um mit dem Schema zusammenarbeiten zu können.

Wird nur eine Anwendung geändert, das Datenbankschema aber nicht, so bleibt die Versionsnummer des Datenbankschemas sowohl in der Anwendung als auch in den Datenbank-Skripten unverändert. Nur die Versionsnummer der Anwendung selbst wird erhöht.

Zusätzlich wird ein Update-Zähler mitgeführt, der jedes Mal hochgezählt wird, wenn sich das Datenbankschema ändert, aber die Anwendung unverändert bleibt. Das ist z.B. dann der Fall, wenn zusätzliche Indexe angelegt werden oder Views, die die Anwendung selbst nicht benötigt.

Im Folgenden wird ein Verfahren festgelegt, das diese Anforderungen umsetzt. Die Umsetzung der Versionierung ist in den Nutzungsvorgaben dokumentiert.

1. Installationsablauf bei der Neuanlage

Die Neuinstallation eines Datenbankschemas erfolgt in mehreren Schritten, die jeweils aufeinander aufbauen. Für die automatisierte Installation werden diese Schritte von einem Datenbankskript nacheinander durchgeführt.

Schritt 1: Umgebungsvariablen laden

Für Testzwecke ist es erforderlich, Datenbankschemas in unterschiedlichen Umgebungen zu installieren. Umgebungsspezifische Konfigurationsparameter, wie z. B. der Schema-Name oder die Angaben zur Datenbankverbindung werden in einem eigenen Datenbankskript abgelegt, das Umgebungsvariablen mit den entsprechenden Werten setzt. Die übrigen Installationsschritte verwenden dann diese Variablen.

Schritt 2: Tablespace erstellen

Erstellen aller Tablespaces, die für die Installation der Datenbankobjekte benötigt werden.

Schritt 3: Benutzer anlegen

Anlegen aller Datenbankbenutzer, einschließlich ihrer Rollen und Berechtigungen. Mit diesen Benutzern werden die anwendungsspezifischen Datenbankobjekte angelegt. Es müssen daher alle hierfür benötigten Rechte für die Dauer der Installation gesetzt werden.

Schritt 4: Erzeugen der anwendungsspezifischen Datenbankobjekte

Es werden alle Tabellen, Indexe, Views, Prozeduren und Funktionen für die Anwendung angelegt. Weiterhin werden benötigte spezielle Datenbankobjekte, z.B. für das Oracle Advanced Queuing angelegt. Die anwendungsspezifischen Datenbankobjekte werden mit den in Schritt 3 angelegten Benutzern erstellt.

Schritt 5: Abschlussbearbeitung

In diesem Schritt können alle Operationen ausgeführt werden, die sich auf die bisher angelegten Datenbankobjekte beziehen.

Schritt 6: Rechte entziehen

Falls den Benutzern im Schritt 3 Rechte zugewiesen wurden, die nur für die Installation benötigt wurden, werden sie in diesem Schritt wieder entzogen.

Die nachfolgende Abbildung zeigt noch einmal die einzelnen Schritte der Installation.

instbeineuan
Abbildung 1. Installationsablauf bei der Neuanlage

1.1. Struktur der Installationsskripte für die Neuanlage

Für die automatisierte Installation wird eine Strukturierung der Installationsskripte festgelegt. Es existieren folgende Aufrufbeziehungen:

Shell-Skripte

Über die Shell-Skripte install-db-schema.bat (Windows) bzw. install-db-schema.sh (Linux) wird das SQL-Skript 00_install-main.sql aufgerufen. Als Parameter werden das Skript für das Anlegen der Umgebungsvariablen und die Log-Datei mitgegeben.

00_install-main.sql

Das SQL-Skript ruft die eigentlichen Installationsskripte in der richtigen Reihenfolge über das Hilfsskript 99_starte-skript-mit-logging.sql nacheinander auf. Dabei werden auch die Tabellen zur Versionierung angelegt und korrekt gefüllt.

99_starte-skript-mit-logging.sql

Das Hilfsskript führt ein SQL-Skript aus und befüllt die Versionstabelle korrekt. Als Parameter werden der Pfad des Skripts, die Schnittnummer inklusiv der Unterschrittnummer und die Beschreibung mit übergeben.

<Installationsskript>.sql

Die eigentlichen Installationsskripte haben das feste Namensschema: <Schrittnummer>-<Unterschrittnummer>_<Name>.sql. Die Schrittnummer ist 2-stellig und entspricht der Schrittnummer aus dem Installationsablauf bei der Neuanlage. Falls zu einem Schritt mehrere Skripte gehören, gibt die Unterschrittnummer die Reihenfolge an, in der diese ausgeführt werden. Der Name kann frei vergeben werden, sollte aber sprechend sein.

Die nachfolgende Abbildung zeigt noch einmal die Beziehung zwischen den einzelnen Skripten.

instbeineuan
Abbildung 2. Beziehungen zwischen den Installationsskripten

Templates für die Skripte sind als Ressourcen in der Bibliothek isy-persistence abgelegt.

2. Installationsablauf bei der Schemaänderung

Die Änderung eines Datenbankschemas erfolgt analog zur Neuanlage ebenfalls in mehreren Schritten, die jeweils aufeinander aufbauen. Für die automatisierte Änderung werden diese Schritte von einem Datenbankskript nacheinander durchgeführt.

Schritt 1: Umgebungsvariablen laden

Dieser Schritt unterscheidet sich nicht von der Neuanlage. Je nach Art der durchzuführenden Änderung kann es aber erforderlich sein, hier weitere Variablen zu setzen.

Schritt 2: Rechte setzen

Falls erforderlich, werden für den Benutzer, mit dem die Änderungen durchgeführt werden sollen, alle für die Änderung des Datenbankschemas benötigten Berechtigungen gesetzt.

Schritt 3: Durchführen der Schemaänderungen

Es werden alle Änderungen am Datenbankschema vorgenommen. Das umfasst sowohl das Anlegen neuer Datenbankobjekte, wie z.B. Tabellen, Views und Indexe, als auch die Änderung bereits vorhandener Datenbankobjekte, wie z.B. das Löschen und Hinzufügen von Spalten in Tabellen. Die Änderungen werden mit dem Benutzer durchgeführt, für den in Schritt 2 die Berechtigungen entsprechend gesetzt wurden.

Schritt 4: Abschlussbearbeitung

In diesem Schritt können alle Operationen ausgeführt werden, die sich auf die bisher angelegten Datenbankobjekte beziehen.

Schritt 5: Rechte entziehen

Falls in Schritt 2 für Benutzer Rechte gesetzt wurden, die nur für die Durchführung der Änderungen benötigt wurden, werden sie in diesem Schritt wieder entzogen.

Die nachfolgende Abbildung zeigt noch einmal die einzelnen Schritte der Installation.

instbeineuan
Abbildung 3. Ablauf bei der Schemaänderung

2.1. Struktur der Änderungsskripte

Für die automatisierte Änderung wird eine Strukturierung der Änderungsskripte festgelegt. Diese ist analog zur Struktur der Installationsskripte aus Abschnitt Struktur der Installationsskripte für die Neuanlage. Es existieren folgende Aufrufbeziehungen:

Shell-Skripte

Über die Shell-Skripte update-db-schema.bat (Windows) bzw. update-db-schema.sh (Linux) wird das SQL-Skript 00_update-main.sql aufgerufen. Als Parameter werden das Skript für das Anlegen der Umgebungsvariablen und die Log-Datei mitgegeben.

00_update-main.sql

Das SQL-Skript ruft die eigentlichen Installationsskripte in der richtigen Reihenfolge über das Hilfsskript 99_starte-skript-mit-logging.sql nacheinander auf. Dabei werden auch die Tabellen zur Versionierung angelegt und korrekt gefüllt.

99_starte-skript-mit-logging.sql

Das Hilfsskript führt ein SQL-Skript aus und befüllt die Versionstabelle korrekt. Als Parameter werden der Pfad des Skripts, die Schnittnummer inklusiv der Unterschrittnummer und die Beschreibung mit übergeben.

<Update-Skript>.sql

Die eigentlichen Änderungsskripte haben das feste Namensschema <Schrittnummer>-<Unterschrittnummer>_<Name>.sql. Die Schrittnummer ist 2-stellig und entspricht der Schrittnummer aus Kapitel Installationsablauf bei der Schemaänderung. Falls zu einem Schritt mehrere Skripte gehören, gibt die Unterschrittnummer die Reihenfolge an, in der diese ausgeführt werden. Der Name kann frei vergeben werden, sollte aber sprechend sein.

Die nachfolgende Abbildung zeigt noch einmal die Beziehung zwischen den einzelnen Skripten.

bezzwischenAend
Abbildung 4. Beziehungen zwischen den Änderungsskripten

Templates für die Skripte sind als Ressourcen in der Bibliothek isy-persistence abgelegt.