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?

6voto

Paco Punkte 8264

Dazu speichere ich Skripte zum Erstellen/Aktualisieren und ein Skript, das Stichprobendaten erzeugt.

6voto

HLGEM Punkte 91543

Alle in der Datenbank erstellten Objekte unterliegen der Versionskontrolle. Und damit die Entwickler ehrlich bleiben (weil man Objekte erstellen kann, ohne dass sie in der Versionskontrolle sind), suchen unsere Datenbanken regelmäßig nach allem, was nicht in der Versionskontrolle ist, und wenn sie etwas finden, lassen sie es fallen, ohne zu fragen, ob es in Ordnung ist.

6voto

Mike Deck Punkte 17515

Das erfolgreichste Schema, das ich je bei einem Projekt verwendet habe, war eine Kombination aus Backups und differentiellen SQL-Dateien. Im Grunde genommen haben wir nach jeder Veröffentlichung ein Backup unserer Datenbank erstellt und einen SQL-Dump gemacht, damit wir bei Bedarf auch ein leeres Schema von Grund auf neu erstellen konnten. Wenn dann eine Änderung an der DB erforderlich war, fügte man dem SQL-Verzeichnis unter Versionskontrolle ein alter scrip hinzu. Wir haben dem Dateinamen immer eine laufende Nummer oder ein Datum vorangestellt, so dass die erste Änderung etwa 01_add_created_on_column.sql und das nächste Skript 02_added_customers_index heißen würde. Unsere CI-Maschine würde nach diesen Skripten suchen und sie nacheinander auf einer frischen Kopie der Datenbank ausführen, die aus dem Backup wiederhergestellt wurde.

Wir hatten auch einige Skripte im Einsatz, mit denen Entwickler ihre lokale Datenbank mit einem einzigen Befehl auf die aktuelle Version umstellen konnten.

6voto

DustinB Punkte 10743

Ja, wir machen das, indem wir unser SQL als Teil unseres Builds aufbewahren - wir bewahren DROP.sql, CREATE.sql, USERS.sql, VALUES.sql auf und kontrollieren diese Versionen, so dass wir zu jeder markierten Version zurückkehren können.

Wir haben auch Ant-Tasks, die die Datenbank bei Bedarf neu erstellen können.

Außerdem wird der SQL-Code zusammen mit dem dazugehörigen Quellcode mit Tags versehen.

5voto

Leigh Pyle Punkte 238

Ich benutze SchemaBank zur Versionskontrolle aller Änderungen an meinem Datenbankschema:

  • Vom ersten Tag an importiere ich meinen Datenbankschema-Dump in das Programm.
  • Ich habe begonnen, mein Schema-Design mit einem Webbrowser zu ändern (weil sie SaaS / Cloud-basiert sind)
  • Wenn ich meinen Datenbankserver aktualisieren möchte, erstelle ich daraus das Änderungsskript (SQL) und wende es auf die Datenbank an. In Schemabank muss ich meine Arbeit als Version festschreiben, bevor ich ein Aktualisierungsskript erstellen kann. Ich mag diese Art von Praxis, damit ich bei Bedarf immer zurückverfolgen kann.

Unsere Teamregel lautet: NIEMALS den Datenbankserver direkt anfassen, ohne vorher die Entwurfsarbeit zu speichern. Aber es kann vorkommen, dass jemand versucht ist, diese Regel zu brechen, weil es bequem ist. Wir würden den Schema-Dump wieder in die Schemabank importieren und sie den Vergleich durchführen lassen und jemanden bashen, wenn eine Diskrepanz gefunden wird. Wir könnten zwar die Alter-Skripte daraus generieren, um unsere Datenbank und unser Schema-Design zu synchronisieren, aber wir hassen das.

Übrigens können wir damit auch Zweige innerhalb des Versionskontrollbaums erstellen, so dass ich einen für das Staging und einen für die Produktion pflegen kann. Und einen für die Coding Sandbox.

Ein recht ordentliches webbasiertes Schema-Design-Tool mit Versionskontrolle und Änderungsmanagement.

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