Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird erstellreihenfolge (https://www.delphipraxis.net/142787-firebird-erstellreihenfolge.html)

Morphie 3. Nov 2009 20:13

Datenbank: Firebird • Version: 2.x • Zugriff über: IBDAC

Firebird erstellreihenfolge
 
Nabend,

ich programmiere eine Software, die mit einer Firebird-Datenbank als Backend arbeitet...
Wenn ich jetzt Updates dieser Software herausgebe, können auch Änderungen an der Datenbank erfolgen. Diese müssen beim Anwender mitaktualisiert werden.

Jetzt dachte ich mir, dass ich auf dem Entwicklungsrechner zuerst die META-Daten in eine XML-Datei exportiere, die XML-Datei mit ins Update packe und bei der Update-Installation diese XML-Datei mit der Anwender-Datenbank vergleichen lasse.

so in etwa sollte das aussehen:
SQL-Code:
<referenz>
  <generators/>
  <procedures/>
  <triggers/>
  <domains/>
  <tables>
    <table name="kunden">
     <field name="kundennr"/>
   </table>
  </tables>
</referenz>
ist nur eine grobe Übersicht...

Jetzt meine Frage:
Gibt es in Firebird eine bestimmte Reihenfolge, in der ich die Vergleichsprüfung durchlaufen lassen muss?
Also erst die Domains, bevor ich entsprechende Felder anlegen kann, das leuchtet ja schon sein... Aber gibt es da eine entsprechende Übersicht?

mkinzler 3. Nov 2009 20:23

Re: Firebird erstellreihenfolge
 
Du musst die Abhängigkeiten der tabellen betrachten.

Ich würde die Version des Datenschemas in der DB ablegen und dann Updateskripte von Version zu Version mitliefern.

Morphie 3. Nov 2009 20:24

Re: Firebird erstellreihenfolge
 
Hmm in wieweit könnte ich das denn automatisieren?

mkinzler 3. Nov 2009 20:28

Re: Firebird erstellreihenfolge
 
Du hättest einen definierten Zustand. mit deiner Lösung müsstest du ja alle Änderungen vom Ist-Zustand zum Soll-Zustand ermittlen ( je nach update stand verschieden). Bei festen Versionen würden dann das Update Schritt für Schritt definiert funktionieren:

Istversion 3 -> Sollversion 6
3 -> 4 -> 5 -> 6

Morphie 3. Nov 2009 20:34

Re: Firebird erstellreihenfolge
 
Ja, das ist richtig, hab ich auch verstandan, hört sich gut an :)

nur bevor ich das Update herausgebe, muss ich ja eventuell ein neues updatescript erstellen. muss ich das dann immer manuell selbst schreiben, oder gibt es eine einfache Möglichkeit, wie ich dieses nur für die aktuelle Änderung automatisch erzeugen lassen kann?

Möchte das möglichst automatisiert und komfortabel machen...

mkinzler 3. Nov 2009 20:35

Re: Firebird erstellreihenfolge
 
Es gibt Tools, die dir 2 Datenbanken vergleichen
Es ist aber auch eine Frage, wie sehr sich das Schema verändert. Werden nur Felder hinzugefügt, kann man das gut mit einem einfachen Skript an der vorhandenen DB durchführen ( vorher natürlich Sicherung anlegen). Ändert sich die Struktur ist es u.U. besser eine neue Datenbank zu erzeugen und dann per Skript die Daten von der alten in die neue Datenbank zu transferieren.

mjustin 3. Nov 2009 21:08

Re: Firebird erstellreihenfolge
 
Zitat:

Zitat von mkinzler
Es gibt Tools, die dir 2 Datenbanken vergleichen

IBExpert ist auch hier sehr empfehlenswert: es erzeugt auf der Basis der Unterschiede ein Skript, in dem alle Statements für die notwendigen Metadatenänderungen in der richtigen Reihenfolge angeordnet (und sogar kommentiert) sind. Eines der am meisten genutzten Features bei mir, und funktioniert sehr gut. Um die Skripte auch ohne IBExpert auszuführen gibt es m.W. ein Kommandozeilentool.

Viele Grüße,


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz