Frage

Wie Sie eine Anwendung entwickeln, die änderungen an der Datenbank unweigerlich pop-up.Der trick, den ich finden ist, halten Sie Ihre Datenbank erstellen Schritt für Schritt mit Ihrem code.In der Vergangenheit habe ich einen build-Schritt, der die Ausführung der SQL-Skripts für die Zieldatenbank aber das ist gefährlich, so viel wie Sie konnte inadvertanly hinzufügen von falschen Daten oder, schlimmer.

Meine Frage ist, was sind die Tipps und tricks zu halten, die Datenbank in Schritt mit der code?Was ist, wenn man ein Rollback der code?Branching?

War es hilfreich?

Lösung

Versionsnummern eingebettet in die Datenbank hilfreich sind.Sie haben zwei Möglichkeiten, die Einbettung Werte in eine Tabelle (ermöglicht die Versionierung von mehreren Elementen), die abgefragt werden können, oder mit einem ausdrücklich benannten Objekts (z.B. einer Tabelle oder somesuch) Sie können diese testen.

Wenn Sie der Freigabe zur Produktion, Sie haben einen rollback-plan im Falle von unerwarteten Katastrophe?Wenn Sie dies tun, ist es die Anwendung eines Schemas, das rollback-Skript?Verwenden Sie Ihre rollback-Skript zum zurücksetzen der Datenbank auf einen früheren code-version an.

Andere Tipps

Sie sollten in der Lage sein, zu erstellen Sie Ihre Datenbank von Grund auf in einem bekannten Zustand.

Während Sie in der Lage zu tun so hilfreich ist (besonders in den frühen Phasen eines neuen Projekts), viele (die meisten?) Datenbanken werden schnell viel zu groß, dass das möglich sei.Auch, wenn Sie BLOBs, dann wirst du Probleme beim generieren von SQL-Skripts für die gesamte Datenbank.

Ich habe definitiv daran interessiert, irgendeine Art von DB versioning system, aber ich habe nicht gefunden, noch nichts.Also, anstatt eine Lösung, Sie erhalten auf meine Stimme.:-P

Sie werden wirklich wollen, um in der Lage sein, um einen sauberen Maschine, Holen Sie sich die neueste version von source control, build-in einem Schritt, und führen Sie alle tests in einem Schritt.Die Herstellung dieser schnell macht man gute software schneller.

Nur wie externe Bibliotheken, Datenbank-Konfiguration muss auch in der Quellcodeverwaltung.

Beachten Sie, dass ich sage nicht, dass alle Ihre live-Datenbank Inhalt sollte in der gleichen Quelle Kontrolle, gerade genug, um in einem sauberen Zustand.(Tun sichern Sie Ihre Datenbank-Inhalte, obwohl!)

Definieren Sie Ihre schema-Objekte und Ihre Daten im version-controlled text-Dateien.Sie können beispielsweise definieren Sie das schema in Drehmoment das format und die Daten in DBUnit format (beide mit XML).Sie können dann Werkzeuge (wir schrieben unsere eigenen), die zum generieren der DDL-und DML-nehmen, dass Sie von einer version Ihrer app zu einer anderen.Unser tool kann als Eingang entweder (a) die Vorherige version schema & data-XML-Dateien oder (b) eine vorhandene Datenbank, so dass Sie sind immer in der Lage zu bekommen, eine Datenbank jeden Staat, in den korrekten Zustand.

Ich mag die Art und Weise, die Django funktioniert es.Sie bauen Modelle, die beim ausführen einer syncdb es gilt die Modelle, die Sie erstellt haben.Wenn Sie ein Modell hinzufügen, die Sie gerade brauchen, um run-syncdb erneut.Dies wäre leicht zu haben, Ihr build-Skript tun, jedes mal, wenn Sie einen push gemacht.

Das problem kommt, wenn Sie Notwendigkeit zu ändern eine Tabelle, die ist schon gemacht.Ich glaube nicht, dass syncdb Griffe, die.Das würde erfordern, dass Sie manuell fügen Sie die Tabelle und fügen Sie auch eine Eigenschaft des Modells.Sie würden wahrscheinlich auf die version, die alter-Anweisung.Die Modelle würden immer unter Versionskontrolle, obwohl, so dass, wenn Sie benötigt werden, um Sie bekommen konnte, ein db-schema und läuft auf eine neue box ohne ausführen des sql-Skripts.Ein weiteres problem mit diesem ist, halten track von statischen Daten, dass Sie wollen immer in die db.

Rails-migration scripts sind auch Recht nett.

Ein DB-Versionierung wäre toll, aber ich weiß nicht wirklich, so eine Sache.

Während Sie in der Lage zu tun so hilfreich ist (besonders in den frühen Phasen eines neuen Projekts), viele (die meisten?) Datenbanken werden schnell viel zu groß, dass das möglich sei.Auch, wenn Sie BLOBs, dann wirst du Probleme beim generieren von SQL-Skripts für die gesamte Datenbank.

Sicherungen und Kompression kann helfen Sie.Sorry - es gibt keine Entschuldigung, nicht in der Lage, eine gute Menge von Daten zu entwickeln, die gegen.Auch wenn es nur ein sub-set.

Setzen Sie Ihre Datenbank-Entwicklung unter Versionskontrolle.Ich empfehle, einen Blick auf neXtep designer :http://www.nextep-softwares.com/wiki

Es ist eine freie GPL-Produkt bietet eine BRANDNEUE Herangehensweise an die Entwicklung von Datenbanken und die Bereitstellung von Anschluss-version Daten mit einer SQL-generation-engine, die können automatisch berechnen keine upgrade-Skript, das Sie brauchen, um ein upgrade von einer version Ihrer Datenbank in eine andere.Eine vorhandene Datenbank werden könnten version gesteuert durch eine umgekehrte Synchronisierung.

Es unterstützt derzeit Oracle, MySql und PostgreSql.DB2-Unterstützung ist in der Entwicklung.Es ist eine voll funktionsfähige Datenbank-Entwicklung-Umwelt, wo Sie arbeiten immer auf version-controlled Elemente aus dem repository.Sie können veröffentlichen Sie Ihre updates durch einfache Synchronisation, während der Entwicklung und generieren Sie exportierbar Datenbank Lieferungen, die Sie ausführen können auf jedem gezielte Datenbank über eine standalone-installer überprüft die Versionen, führt strukturellen Kontrollen und gilt das upgrade-Skripts.

Die IDE bietet Ihnen auch SQL-Editoren, dependency management, Unterstützung für modulare Datenbank-Modell-Komponenten, Daten-Modell-Diagramme, SQL-clients und vieles mehr.

Alle Unterlagen und Konzepte finden Sie in dem wiki.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top