Im SO-Community-Wiki wurde diskutiert, ob Datenbankobjekte versioniert werden sollten. Allerdings habe ich nicht für die Erstellung eines Build-Automatisierungsprozess für Datenbankobjekte viel Diskussion über die besten Praktiken gesehen.
Dies war ein umstrittener Diskussionspunkt für mein Team - insbesondere, da Entwickler und Datenbankadministratoren bei der Bewertung der Vorteile und Risiken eines Automatisierungsansatzes für die Datenbankbereitstellung häufig unterschiedliche Ziele, Ansätze und Bedenken verfolgen.
Ich würde gerne einige Ideen von der SO-Community hören, welche Praktiken in der realen Welt effektiv waren.
Mir ist klar, dass es etwas subjektiv ist, welche Praktiken wirklich am besten sind, aber ich denke, ein guter Dialog darüber, welche Arbeit für viele Leute hilfreich sein könnte.
Hier sind einige meiner Teaser-Fragen zu Problembereichen in diesem Thema. Diese sind nicht als endgültige Liste gedacht, sondern als Ausgangspunkt, damit die Leute verstehen, wonach ich suche.
- Sollten sowohl Test- als auch Produktionsumgebungen aus der Quellcodeverwaltung erstellt werden?
- Sollten beide mithilfe von Automatisierung erstellt werden - oder sollte die Produktion durch Kopieren von Objekten aus einer stabilen, endgültigen Testumgebung erstellt werden?
- Wie gehen Sie mit potenziellen Unterschieden zwischen Test- und Produktionsumgebungen in Bereitstellungsskripten um?
- Wie testen Sie, ob die Bereitstellungsskripte genauso effektiv gegen die Produktion funktionieren wie im Test?
- Welche Arten von Objekten sollten versioniert werden?
- Nur Code (Prozeduren, Pakete, Trigger, Java usw.)?
- Indizes?
- Einschränkungen?
- Tabellendefinitionen?
- Tabellenänderungsskripte? (zB ALTER-Skripte)
- Alles?
- Welche Objekttypen sollten nicht versioniert werden?
- Sequenzen?
- Zuschüsse?
- Benutzerkonten?
- Wie sollten Datenbankobjekte in Ihrem SCM-Repository organisiert sein?
- Wie gehen Sie mit einmaligen Dingen wie Konvertierungsskripten oder ALTER-Skripten um?
- Wie gehen Sie mit dem Löschen von Objekten aus der Datenbank um?
- Wer sollte für die Förderung von Objekten von der Entwicklung bis zum Test verantwortlich sein?
- Wie koordinieren Sie Änderungen von mehreren Entwicklern?
- Wie gehen Sie mit der Verzweigung von Datenbankobjekten um, die von mehreren Systemen verwendet werden?
- Welche Ausnahmen, wenn überhaupt, können für diesen Prozess angemessen sein?
- Sicherheitsprobleme?
- Daten mit Bedenken hinsichtlich der Identifizierung?
- Skripte, die nicht vollständig automatisiert werden können?
- Wie können Sie den Prozess belastbar und durchsetzbar machen?
- Zum Entwicklerfehler?
- Zu unerwarteten Umweltproblemen?
- Für die Notfallwiederherstellung?
- Wie können Sie Entscheidungsträger davon überzeugen, dass die Vorteile von DB-SCM die Kosten wirklich rechtfertigen?
- Anekdoten?
- Industrieforschung?
- Best-Practice-Empfehlungen der Branche?
- Appelle an anerkannte Behörden?
- Kosten-Nutzen-Analyse?
- Wem sollten Datenbankobjekte in diesem Modell "gehören"?
- Entwickler?
- Datenbankadministratoren?
- Datenanalysten?
- Mehr als eine?