617 Stimmen

Verwenden Sie die Versionskontrolle für Ihre Datenbankelemente?

Ich habe das Gefühl, dass mein Geschäft eine Lücke hat, weil wir keinen soliden Prozess für die Versionierung unserer Datenbankschemaänderungen haben. Wir machen viele Backups, so dass wir mehr oder weniger abgesichert sind, aber es ist eine schlechte Praxis, sich auf diese Weise auf die letzte Verteidigungslinie zu verlassen.

Überraschenderweise scheint dies ein roter Faden zu sein. Viele Geschäfte, mit denen ich gesprochen habe, ignorieren dieses Problem, weil sich ihre Datenbanken nicht oft ändern und sie im Grunde nur versuchen, peinlich genau zu sein.

Aber ich weiß, wie die Geschichte ausgeht. Es ist nur eine Frage der Zeit, bis sich die Dinge einfach falsch anordnen und etwas verloren geht.

Gibt es hierfür bewährte Verfahren? Welche Strategien haben sich für Sie bewährt?

4voto

AndrewB Punkte 313

Ja, immer. Sie sollten in der Lage sein, Ihre Produktionsdatenbankstruktur mit einem nützlichen Satz von Beispieldaten jederzeit neu zu erstellen. Wenn Sie das nicht tun, werden im Laufe der Zeit kleinere Änderungen, die den Betrieb aufrechterhalten sollen, vergessen, und eines Tages wird es Sie im großen Stil treffen. Es ist eine Versicherung, von der Sie vielleicht nicht denken, dass Sie sie brauchen, aber an dem Tag, an dem Sie sie brauchen, ist sie den Preis 10 Mal wert!

4voto

WW. Punkte 22847

Es wurde viel über das Datenbankmodell selbst diskutiert, aber wir halten die benötigten Daten auch in .SQL-Dateien vor.

Um nützlich zu sein, könnte Ihre Anwendung zum Beispiel dies bei der Installation benötigen:

INSERT INTO Currency (CurrencyCode, CurrencyName) 
VALUES ('AUD', 'Australian Dollars');

INSERT INTO Currency (CurrencyCode, CurrencyName) 
VALUES ('USD', 'US Dollars');

Wir würden eine Datei namens currency.sql unter Subversion. Als manuellen Schritt im Build-Prozess vergleichen wir die vorherige currency.sql mit der neuesten und schreiben ein Upgrade-Skript.

4voto

levhita Punkte 2161

Ich verwende SQL-CREATE-Skripte, die von MySQL Workbech exportiert werden, und dann mithilfe ihrer "Export SQL ALTER"-Funktionalität eine Reihe von (natürlich nummerierten) Erstellungsskripten und Alter-Skripten, die die Änderungen zwischen ihnen übernehmen können.

3.- SQL ALTER-Skript exportieren Normalerweise müssten Sie jetzt die ALTER TABLE-Anweisungen von Hand schreiben, die Ihre Änderungen am Modell widerspiegeln. Aber Sie können auch clever sein und Workbench die harte Arbeit für Sie erledigen lassen. Wählen Sie einfach Datei -> Export -> Forward Engineer SQL ALTER Script aus dem Hauptmenü.

Daraufhin werden Sie aufgefordert, die SQL-CREATE-Datei anzugeben, mit der das aktuelle Modell verglichen werden soll.

Wählen Sie das SQL-Skript CREATE aus Schritt 1. Das Tool generiert dann das ALTER TABLE-Skript für Sie und Sie können dieses Skript gegen Ihre Datenbank ausführen, um sie auf den neuesten Stand zu bringen.

Sie können dies mit dem MySQL Query Browser oder dem mysql-Client tun - Voilà! Ihr Modell und Ihre Datenbank sind nun synchronisiert!

Quelle: MySQL Workbench Gemeinschaftsausgabe: Anleitung zur Schema-Synchronisation

Alle diese Skripte befinden sich natürlich unter Versionskontrolle.

4voto

Ich bin der Meinung, dass jede DB unter Quellcodekontrolle stehen sollte, und dass Entwickler eine einfache Möglichkeit haben sollten, ihre lokale Datenbank von Grund auf neu zu erstellen. Inspiriert von Visual Studio for Database Professionals habe ich ein Open-Source-Tool entwickelt, das MS-SQL-Datenbanken skriptet und eine einfache Möglichkeit bietet, sie auf Ihrer lokalen DB-Engine bereitzustellen. Probieren Sie http://dbsourcetools.codeplex.com/ . Viel Spaß! - Nathan.

4voto

Karen Lopez Punkte 483

Wir führen Versions- und Quellcodekontrollen für alle unsere Datenbanken durch:

  • DDL (Erstellen und Ändern)
  • DML (Referenzdaten, Codes, usw.)
  • Datenmodelländerungen (mit ERwin oder ER/Studio)
  • Änderungen der Datenbankkonfiguration (Berechtigungen, Sicherheitsobjekte, allgemeine Konfigurationsänderungen)

All dies wird mit automatisierten Aufträgen unter Verwendung von Change Manager und einigen benutzerdefinierten Skripten durchgeführt. Der Change Manager überwacht diese Änderungen und benachrichtigt, wenn sie abgeschlossen sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X