Laden...

Datenbank + Versionierung (speziell bei Entwickeln im Team)

Erstellt von M@TUK vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.553 Views
M
M@TUK Themenstarter:in
402 Beiträge seit 2005
vor 16 Jahren
Datenbank + Versionierung (speziell bei Entwickeln im Team)

Hi!

Ich hoffe das Forum passt, es geht ja nicht um ein spezielles DB-Problem.

Mich würde interessieren, wie ihr eure Datenbanken "versioniert".
Da die meisten hier mit Datenbanken arbeiten, stellt sich diese
Frage vermutlich jedem irgendwann mal...

Beim Sourcecode verwende ich zb. CVS bzw. SVN. Das funktioniert
prima und es gibt auch kein Probleme.

Aber wie kann man das optimal mit der Datenbank, bzw. den Änderungen in der DB-Struktur "tracken"?

Beispiel:
Für eine Adaptierung (bei SVN eigener Branch) ist eine zusätzliche Spalte
in einer Tabelle notewendig. Diese Änderung in der DB soll nun irgendwie
versioniert werden.

Wie macht man das am Besten? Gibts spezielle Tools oder Methoden wie man
die DB-Änderungen behandelt, ohne daß man nach einem halben Jahr Entwicklung
nur noch eine Müll-DB mit allen möglichen Änderungen vorfindet.

lg

F
10.010 Beiträge seit 2004
vor 16 Jahren

Das ist, wie bei allen grösseren Sachen, reine Disziplin.

Du musst halt für jede DB-Änderung die Scripte mitführen.
Bei grossen Projekten wird deshalb meist eine "kleine" Versionierung zwischen den einzelnen Releases gemacht,
Und bei den Releases werden die "grossen" Scripte dann angepasst.

Hat den Vorteil, das auch Updatescripte erstellt werden können für den einen oder
anderen Kunden, der ja doch eine Vorabversion bekommen hat.

Ich persönlich führe die DB-Updates durch den ORMapper durch, also im Source
der Anwendung.

Das stellt sicher, das die gerade laufende Version auch alles hat, was sie braucht.

3.511 Beiträge seit 2005
vor 16 Jahren

Ich löse das auch über SVN.

Die Datenbank selber existiert gar nicht im SVN, sondern nur die Scripte, die diese ertstellen, bzw. die Scripte, die die Datenbank erweitern.

Z.B. gibts ein CreateDB.sql, dann eine PatchDB_001.sql, PatchDB_002.sql usw. Jedes Script setzt in einer Tabelle die Versionsnummer um eins hoch. So kann man in der Anwendung prüfen, ob die DB aktuell ist.
Weiterhin schreibt jedes Script in einer Tabelle, ob es schon ausgeführt wurde, damit bestimmte Scripte (die z.B. DROPs machen) nicht irgendetwas zerschießen.

Also, so mach ich es =)

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

3.825 Beiträge seit 2006
vor 16 Jahren

Hallo Leute,

ich bin zu faul für die ganzen Update-Scripts und auch nicht diszipliniert genug.

😉

Meine Datenbankstruktur ist im Sourcecode hinterlegt. Beim Start prüfe ich alle Tabellen und Tabellenspalten. Dann lege ich an was fehlt, lösche was zuviel ist udn ändere was anders ist.
Rufe ich die Datenbank mit einer älteren Exe auf geht das nicht mehr.

Klappt wunderbar und ist pflegeleicht.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

F
10.010 Beiträge seit 2004
vor 16 Jahren

So ähnlich mache ich es auch, nur das ich den Installer mit der Release DB
los lasse, und alle zwischen releases über den ORMapper mache.