Frage

Basierend auf Lesen rund um das Web, Stack-Überlauf, und meist

War es hilfreich?

Lösung

auf Ihren Vorschlägen der Suche, es nicht wie etwas, scheint das machbar noch sinnvoll ist. Ich war in einem Unternehmen zu arbeiten, wo wir mehr als 1k Tabellen pro Datenbank verwendet (sehr komplexes System), und alles hat gut funktioniert wie folgt:

  • Haben Sie eine Person, die für die DB (lässt ihn DBPerson nennen) - jedes Skript / db Änderung hat durch ihn zu überholen. Dadurch werden alle unnötigen Änderungen vermeiden, und einige ‚übersieht‘ der Probleme (zum Beispiel, wenn jemand einen Index bewegt sich besser für seine Abfrage auszuführen, hallo könnten andere Personen Arbeit zerstören, vielleicht wird jemand eine Tabelle erstellen, die völlig überflüssig und unnötig ist , etc...). Dies hält db sauber und effizient. Auch wenn es so scheint, für einen Kerl zu viel Arbeit ist (oder sein Stellvertreter), in der Tat ist es nicht -. Der db in der Regel selten ändert
  • Jedes Skript hat die Validierung durch DBPerson passieren
  • Wenn das Skript genehmigt wird, ordnet die DBPerson eine Nummer und legt es in ‚update‘ folder / SVN (...), mit entsprechender Nummerierung (wie Sie vorgeschlagen, inkrementelle Zahlen zum Beispiel).
  • Als nächstes, wenn Sie einige kontinuierliche Integration an der richtigen Stelle, wird das Skript aufgenommen und aktualisiert die db (wenn Sie nicht über die kontinuierliche Integration, tun Sie es manuell).
  • Speichern Sie keinen gesamten Datenbank-Skript, mit allen Daten im Skript. Speichern Sie die aktuelle Datenbank statt. Wenn Sie Zweige der Lösung haben - jeder Zweig mit ihm haben eigene Datenbank ist, oder Sie können immer Update-Skripte für jeden der Zweige aufgeteilt, so dass Sie ein Rollback konnte / vorwärts zu einem anderen Zweig. Aber ich wirklich empfehlen eine separate db für jeden Zweig zu haben.
  • Haben Sie eine Datenbank immer mit den Standarddaten (intakt) - für den Bedarf von Unit-Tests, Regressionstests usw. Jedes Mal, wenn Sie die Tests tun, tun sie auf der Kopie dieser Datenbank. Man könnte sogar eine nächtliche Bereinigung der Testdatenbanken mit dem Haupt eines (gegebenenfalls natürlich) setzen.

In einer Umgebung wie dieser werden Sie mehrere Versionen von Datenbank haben:

  • Entwickler-Datenbank (lokal) - derjenige, dass der Entwickler Kerl, der seine Arbeit zu testen, verwendet. Er kann kopiert immer von Master oder Master-Test.
  • Master-Datenbank -. Die mit all den Standardwerten, vielleicht halb-leer, wenn Sie redeploys, neue Kunden zu tun
  • Master-Test-Datenbank - Master-Datenbank mit Testdaten gefüllt. Alle Skripte Sie haben ran auf Meister Sie lief auch hier.
  • Test läuft Datenbank - von der Master-Test kopiert und verwendet für die Prüfung -. Überschrieben vor wird in jedem neuen Test
  • Wenn Sie Zweige (ähnlich Datenbank mit geringfügigem Unterschied für jeden des Clients) als Sie das gleiche wie oben für jeden Zweig haben werden ...

Sie werden sicherlich Modifikationen daraus machen müssen, um Ihre Situation passen, aber trotzdem denke ich, dass die Textversion des Skripts für gesamte Datenbank erstellen zu halten in Bezug auf Wartbarkeit falsch ist, Verschmelzung, Aktualisierung, etc ...

scroll top