physar / Datenbankadministration für Sysadmins / Schemaänderungen im laufenden Betrieb

Schemaänderungen im laufenden Betrieb

Strukturänderungen ohne Stillstand: abwärtskompatible Schritte, Sperrverhalten großer Änderungen und die Entkopplung von Datenbank- und Anwendungsauslieferung.

Die Struktur ändern, während gearbeitet wird

Einführung · 5 Abschnitte · ~15 Min Lesezeit · Stand

Betriebsfrage

Anwendungscode lässt sich zurückrollen. Eine gelöschte Spalte nicht. Schemaänderungen sind der Teil der Auslieferung, bei dem die Umkehrbarkeit endet — und deshalb der Teil, der eine eigene Vorgehensweise braucht.

Mentales Modell

  1. Erweitern
  2. Beides schreiben
  3. Umstellen
  4. Aufräumen

Das Muster trennt eine gefährliche Änderung in mehrere ungefährliche: Zuerst wird die neue Struktur zusätzlich angelegt, dann schreibt die Anwendung in beide, dann liest sie aus der neuen, und erst danach — wenn nichts mehr zurückrollen muss — verschwindet die alte.

Warum das nötig ist

  • Während einer Auslieferung laufen alte und neue Anwendungsversion gleichzeitig; das Schema muss beide bedienen.
  • Ein Rückrollen der Anwendung darf nicht am Schema scheitern.
  • Nur so kann das Aufräumen zu einem eigenen, ruhigen Termin stattfinden.

Sperrverhalten

Metadaten ändernMeist kurz, aber eine kurze exklusive Sperre auf einer stark genutzten Tabelle staut sofort alle folgenden Anfragen auf.
Daten umschreibenLange Laufzeit; die Art der Sperre entscheidet, ob nebenher noch gearbeitet werden kann.
Prüfregel hinzufügenMuss den Bestand prüfen — auf großen Tabellen ist der schrittweise Weg über eine zunächst ungeprüfte Regel oft der einzige gangbare.

Route

Gelesen ist nicht geprüft: Im Modul entscheidest du die Fälle selbst und siehst danach, wo dein Urteil trägt.

3 Checks starten →

Modul-Aufbau

EINFÜHRUNGDie Struktur ändern, während gearbeitet wird~15 Min
ADR-001SCHEMAWANDELsolide
ADR-002SPERRVERHALTENsenior
FLOW-003MISSION · AUSLIEFERUNGSFOLGEsolide

Quellen

  1. 01martinfowler.com/articles/evodb.html
  2. 02postgresql.org/docs/current/transaction-iso.html
  3. 03use-the-index-luke.com

Verfasst von Julian Zentgraf