Backend, APIs & Daten · Fortgeschritten

Schema-Migrationen ohne Ausfallzeit

In einem Satz: Ändern Sie das Schema in rückwärtskompatiblen Schritten: hinzufügen, füllen, umschalten, und erst am Ende — entfernen.

Das Problem

Während einer Veröffentlichung laufen zwei Codeversionen zusammen. Eine Migration, die eine Spalte auf einmal ändert, bricht eine davon. Also wird jede strukturelle Änderung in eine Folge von Schritten zerlegt, von denen jeder für sich sicher ist.

Die sichere Folge

Hinzufügen. Eine neue Spalte, leer erlaubt, ohne die bestehende zu berühren.

Doppelt schreiben. Der Code schreibt in beide Spalten und liest bevorzugt aus der alten.

Nachfüllen. In kleinen Chargen, außerhalb der Spitzenzeiten, mit Stoppmöglichkeit.

Lesen umschalten. Nach Prüfung, dass die Daten identisch sind.

Entfernen. In einer separaten Veröffentlichung, nachdem Sie bestätigt haben, dass niemand liest.

Vorsichtsregeln

Eine Migration auf einer großen Tabelle kann sperren. Prüfen Sie das Sperrverhalten in Ihrer Engine und führen Sie sie auf einer Kopie in Produktionsgröße aus. Eine Sicherung davor und ein im Voraus geschriebenes Rücknahmeskript — nicht unter Druck improvisiert.

Im Detail

Verwalten Sie Migrationen als Code in der Versionskontrolle, mit automatischer Ausführung und Reihenfolgesteuerung. Und vermischen Sie eine Schemaänderung nicht mit einer Logikänderung in derselben Veröffentlichung: Wenn etwas bricht, wollen Sie wissen, welches der beiden schuld ist.