Unser IT-Shop beginnt zunächst mit dem Aufbau einer Gruppe von Datenbankadministratoren. Wir alle (ich selbst eingeschlossen) sind aus der Welt der Anwendungsentwicklung / Architektur gekommen, daher ist die DBA-Welt für uns noch ziemlich neu.
Neben dem Aufbau einer DBA-Gruppe möchten wir Änderungsverwaltungsverfahren und -prozesse (hoffentlich basierend auf Best Practices) für den Fall erstellen, dass Änderungen verschoben werden müssen.
Ich habe den folgenden Beitrag gefunden, der hauptsächlich für Trigger-, gespeicherte Prozedur- und / oder DDL-Änderungen hilfreich ist. Es werden jedoch nicht unbedingt Indizes oder Lieferantendatenbanken angesprochen.
Wir haben eine Mischung aus eigenen und Anbieterdatenbanken. In unserem Fall arbeiten einige (wenn auch nicht alle) Anbieter mit unserem Unternehmen zusammen, um die Datenbank (en) und Anwendungen zu erstellen. Wir sind gerade dabei, unsere Anwendungen auf Leistung zu testen, bevor sie "live" gehen. Daher analysieren wir Indizes (oder deren Fehlen) ziemlich intensiv.
Wie gehen wir am besten mit dem Änderungsmanagement um, wenn wir auf Indizes stoßen, die unserer Meinung nach erstellt werden sollten, sowohl für unsere eigenen Datenbanken als auch für Anbieter?
Was machst du in deinem Shop? Ich mache mir weniger Sorgen um Werkzeuge als um den Prozess.
EDIT: Bisher freue ich mich über das Feedback, die Kommentare und die Antworten auf diese Frage. Mir ist aufgefallen, dass einige der Antworten etwas werkzeugspezifisch sind. Ich suche nach "agnostischeren" Praktiken, wenn das möglich ist.
Wenn jedoch keine Agnostik möglich ist, verwenden wir für Tool-Sets hauptsächlich IBM DB2 LUW (und das tatsächlich unter AIX). Wir haben einige DB2 unter Windows und DB2 für i (IBMs i5 / OS), aber wir sind meistens AIX DB2. Wir verwenden die Quellcodeverwaltung, insbesondere Subversion.
Auch hier suchen wir nach allgemeinen Best Practices, aber oben ist das, was wir verwenden, herstellerspezifisch.
EDIT: Aktuelle Entscheidung: Wir beabsichtigen, unsere Argumentation sowie unsere Änderungen zu verfolgen. Daher werden wir ein Problem in unserer Issue-Tracking-Software (in unserem Fall JIRA) eröffnen. Jetzt können wir in der Dokumentation hinzufügen, welche Priorität die Änderung hat, Daten, die die Änderung bestätigen, die Änderung und die Ergebnisse der Änderung aus einer anderen Umgebung, in der die Änderung getestet wurde.
Wir beabsichtigen dann auch, unsere Änderungen an Skripten in SVN zu verfolgen (ähnlich wie unten vorgeschlagen). Auf diese Weise können wir verfolgen, welche Version von was wo existiert. Dies kann in unserer JIRA-Ausgabe (und in jeder anderen von uns verwendeten Überwachungssoftware, dh eingefügten Links) aufgezeichnet werden. Wir können mit größerer Sicherheit wissen, welche Veränderungen in welcher Umgebung stattgefunden haben und warum. Wir können dann auch verfolgen, ob der Index etwas war, das wir über die Implementierung des Anbieters hinaus oder vor dessen Implementierung usw. hinzugefügt haben.)
quelle
Antworten:
Ich würde Ihnen dringend empfehlen, Ihre Datenbank grundsätzlich genauso zu behandeln wie Ihren Anwendungscode. Sie können Ihre Datenbank in ihre Bestandteile skripten und diese in die Quellcodeverwaltung einchecken und dort dieselben Labels und Versionen verwenden, die Sie für Ihre Apps verwenden.
Um die Objekte in die Quellcodeverwaltung zu bringen, können Sie eine Reihe von Tools verwenden. Microsoft hat ein Tool mit dem Spitznamen Data Dude. Es funktioniert mit Visual Studio. Sie bereiten auch die Veröffentlichung eines neuen Tools namens SQL Server Database Tools (SSDT) vor, das wieder mit Visual Studio zusammenarbeitet. Meine Firma, Red Gate Software, stellt ein Tool her, das mit SSMS funktioniert und SQL Source Control heißt.
In Bezug auf den Prozess habe ich mehrere Kapitel für das Buch Red Gate Guide to Team Development geschrieben . Es ist als kostenloser Download erhältlich (oder wenn Sie einen Baum töten möchten, können Sie einen von Amazon kaufen). Ich gehe dort auf viel mehr Details zur Arbeit mit Datenbanken in Entwicklungsteams ein.
quelle
Wir verwalten Datenbankskripte als Teil unserer Anwendungscodebasis, die unter Versionskontrolle verwaltet wird. Wir verwenden jedoch unterschiedliche "Prozesse" für Entwicklungs- und Produktionscode
Entwicklung Wir pflegen die folgenden Skripte:
Instandhaltung
Im Wartungsmodus müssen wir also nur das Skript changerequest.sql während der Bereitstellung auf die Produktion anwenden
quelle
Ich bin seit 5 Jahren im Bereich der Datenbankversionskontrolle (als Director of Product Management bei DBmaestro ) tätig und habe über zwei Jahrzehnte als DBA gearbeitet. Ich kann Ihnen die einfache Tatsache sagen, dass Sie die Datenbankobjekte nicht so behandeln können, wie Sie Ihr Java behandeln. C # oder andere Dateien.
Es gibt viele Gründe und ich werde einige nennen:
wirken sich nicht auf andere Entwickler aus. Ebenso ist die Entwicklerin von Änderungen ihrer Kollegin nicht betroffen. In der Datenbank ist dies
(normalerweise) nicht der Fall, und Entwickler verwenden dieselbe Datenbankumgebung
, sodass sich alle Änderungen, die an der Datenbank vorgenommen wurden, auf andere auswirken.
in das Quellcodeverwaltungs-Repository eingefügt . Entwickler, die den
neuesten Code erhalten möchten, müssen ihn vom Quellcodeverwaltungstool anfordern. In der
Datenbank ist die Änderung bereits vorhanden und wirkt sich auf andere Daten aus, auch wenn sie nicht in das Repository eingecheckt wurden.
Es gibt noch viele mehr, aber ich denke, Sie haben das Bild.
Was ich gefunden habe, dass das funktioniert, ist das Folgende:
Ein Artikel, den ich dazu geschrieben habe, wurde hier veröffentlicht. Sie können ihn gerne lesen.
quelle