327 Stimmen

Wie kann ich eine Datenbank unter Git (Versionskontrolle) stellen?

Ich tue eine Webanwendung, und ich muss einen Zweig für einige wichtige Änderungen zu machen, die Sache ist, diese Änderungen erfordern Änderungen an der Datenbank-Schema, so möchte ich die gesamte Datenbank unter Git als auch setzen.

Wie mache ich das? Gibt es einen bestimmten Ordner, den ich unter einem Git-Repository behalten kann? Woher weiß ich, welcher es ist? Wie kann ich sicher sein, dass ich den richtigen Ordner verwende?

Ich muss sicher sein, denn diese Änderungen sind nicht abwärtskompatibel; ich kann es mir nicht leisten, einen Fehler zu machen.

Die Datenbank ist in meinem Fall PostgreSQL

Bearbeiten:

Jemand schlug vor, Sicherungskopien zu erstellen und die Sicherungsdatei statt der Datenbank unter Versionskontrolle zu stellen. Um ehrlich zu sein, finde ich das wirklich schwer zu schlucken.

Es muss doch einen besseren Weg geben.

Aktualisierung:

OK, es gibt also keinen besseren Weg, aber ich bin immer noch nicht ganz überzeugt, also werde ich die Frage etwas abändern:

Ich möchte die gesamte Datenbank unter Versionskontrolle stellen. Welche Datenbank-Engine kann ich verwenden, damit ich die eigentliche Datenbank unter Versionskontrolle stellen kann, anstatt ihren Dump?

Wäre Sqlite git-freundlich?

Da dies nur die Entwicklungsumgebung ist, kann ich jede beliebige Datenbank wählen.

Bearbeiten2:

Was ich wirklich möchte, ist nicht meine Entwicklungsgeschichte zu verfolgen, sondern in der Lage sein, von meinem "neuen radikalen Änderungen" Zweig auf den "aktuellen stabilen Zweig" zu wechseln und in der Lage sein, zum Beispiel einige Bugs/Probleme, etc, mit dem aktuellen stabilen Zweig zu beheben. Wenn ich also den Zweig wechsle, wird die Datenbank automatisch mit dem Zweig kompatibel, in dem ich mich gerade befinde. Die eigentlichen Daten sind mir eigentlich ziemlich egal.

1voto

unode Punkte 8741

Diese Frage ist so gut wie beantwortet, aber ich möchte die Antwort von X-Istence und Dana the Sane durch einen kleinen Vorschlag ergänzen.

Wenn Sie eine Revisionskontrolle mit einem gewissen Grad an Granularität benötigen, z.B. täglich, könnten Sie den Textdump der Tabellen und des Schemas mit einem Tool wie rdiff-backup die inkrementelle Sicherungen durchführt. Der Vorteil ist, dass Sie statt der Schnappschüsse der täglichen Backups nur die Unterschiede zum Vortag speichern.

Damit haben Sie den Vorteil der Revisionskontrolle und verschwenden nicht zu viel Platz.

In jedem Fall ist die direkte Verwendung von Git für große flache Dateien, die sich sehr häufig ändern, keine gute Lösung. Wenn Ihre Datenbank zu groß wird, wird Git Probleme mit der Verwaltung der Dateien bekommen.

0voto

inf3rno Punkte 22107

Ich würde gerne die gesamte Datenbank unter Versionskontrolle stellen, was Datenbank-Engine kann ich verwenden, so dass ich die eigentliche Datenbank unter Versionskontrolle stellen kann, anstatt ihren Dump?

Dies ist nicht von der Datenbank-Engine abhängig. Bei Microsoft SQL Server gibt es eine Vielzahl von Versionskontrollprogrammen. Ich glaube nicht, dass dieses Problem mit Git gelöst werden kann, man muss ein pgsql-spezifisches Schema-Versionskontrollsystem verwenden. Ich weiß nicht, ob es so etwas gibt oder nicht...

0voto

matt b Punkte 135206

Verwenden Sie ein Werkzeug wie iBatis Migrations ( Handbuch , Kurzes Video-Tutorial ), das Ihnen die Versionskontrolle ermöglicht die Änderungen die Sie während des Lebenszyklus eines Projekts an einer Datenbank vornehmen, und nicht die Datenbank selbst.

So können Sie einzelne Änderungen selektiv auf verschiedene Umgebungen anwenden, ein Änderungsprotokoll darüber führen, welche Änderungen sich in welchen Umgebungen befinden, Skripte zur Anwendung der Änderungen A bis N erstellen, Änderungen zurücknehmen usw.

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