Produkt / für PostgreSQL

Postgres Migration Safety Auditor.

Erkenne die Datenbankmigration, die deine Produktivtabelle sperrt oder neu schreibt, bevor sie in Produktion geht. Ein statischer Auditor für Flyway und Liquibase, der jedes Produktionsrisiko mit dem genauen Grund und der sicheren Umschreibung ausweist, als CLI, als CI-Gate oder als Claude-Code-Skill. Er verbindet sich nie mit deiner Datenbank.

Was es erkennt

Die meisten Migrationsreviews sind ein Generalist, der ein Diff liest. Dabei entgehen genau die Wege, auf denen eine PostgreSQL-Migration deine Seite lahmlegt. Der Auditor prüft 36 Regeln, parst deine tatsächliche Migration mit dem echten PostgreSQL-Parser (kein Regex) und weist jedes Risiko mit offizieller Quelle aus:

Das kostenlose Cheatsheet

Die zehn Schemaänderungen, die eine laufende PostgreSQL-Datenbank am ehesten lahmlegen, mit der sicheren Umschreibung für jede. Eine Migration ist gefährlich, sobald sie eine starke Sperre hält (ACCESS EXCLUSIVE blockiert Lesen und Schreiben, SHARE blockiert Schreiben), während sie eine große Tabelle scannt oder neu schreibt. Auf einer kleinen Tabelle merkst du nie etwas, auf einer stark genutzten Produktivtabelle ist es ein Ausfall. Flyway und Liquibase verpacken jede Migration standardmäßig in eine Transaktion, und das ist für einige davon entscheidend.

  1. CREATE INDEX (ohne CONCURRENTLY) nimmt eine SHARE-Sperre, die während des gesamten Aufbaus jeden Schreibvorgang blockiert. Sicher: CREATE INDEX CONCURRENTLY ... außerhalb einer Transaktion.
  2. SET NOT NULL (direkt) scannt die ganze Tabelle unter ACCESS EXCLUSIVE. Sicher: ADD CONSTRAINT c CHECK (col IS NOT NULL) NOT VALID, dann VALIDATE CONSTRAINT c, dann SET NOT NULL (Scan entfällt ab PG12).
  3. ADD CHECK (ohne NOT VALID) scannt die ganze Tabelle unter ACCESS EXCLUSIVE. Sicher: als NOT VALID hinzufügen, dann VALIDATE.
  4. ADD FOREIGN KEY (ohne NOT VALID) validiert jede Zeile und hält dabei auf beiden Tabellen eine Sperre, die Schreibvorgänge blockiert. Sicher: als NOT VALID hinzufügen, dann VALIDATE.
  5. ADD COLUMN mit volatilem DEFAULT oder SERIAL schreibt die ganze Tabelle neu (gen_random_uuid(), random(), SERIAL). now() und CURRENT_TIMESTAMP sind sicher. Sicher: nullable hinzufügen, in Batches backfillen, danach SET DEFAULT.
  6. ALTER COLUMN ... TYPE schreibt die Tabelle neu, außer bei binär kompatiblen Änderungen wie varchar zu text. Sicher: neue Spalte, backfillen, tauschen, alte entfernen.
  7. ADD PRIMARY KEY / UNIQUE (direkt) baut den Index unter ACCESS EXCLUSIVE auf. Sicher: CREATE UNIQUE INDEX CONCURRENTLY, danach ADD CONSTRAINT ... USING INDEX.
  8. Backfills in falscher Reihenfolge oder als ein riesiges Statement schlagen fehl oder erzeugen Bloat. Sicher: nullable hinzufügen, in Batches backfillen, validieren und erst danach verschärfen, verteilt über getrennte Deployments.
  9. Sperrende DDL ohne lock_timeout kann den gesamten dahinter wartenden Verkehr zum Stillstand bringen. Sicher: SET lock_timeout = '2s'; vor riskanter DDL, und bei Timeout erneut versuchen.
  10. Destruktive Operationen (DROP / TRUNCATE / DROP COLUMN) sind unumkehrbar und brechen rollende Deployments. Sicher: expand/contract, zuerst aufhören das Objekt zu referenzieren, und es in einem späteren Deployment entfernen.

Fallstrick: CREATE INDEX CONCURRENTLY kann nicht innerhalb einer Transaktion laufen, und genau so verpacken Flyway und Liquibase Migrationen standardmäßig, weshalb eine bloße nebenläufige Index-Migration fehlschlägt. Schalte die umschließende Transaktion für diese eine Migration ab. Der Auditor fängt auch das ab, plus 25 Regeln über diese zehn hinaus.

Was du bekommst

Das Werkzeug

Der Claude-Code-Skill und die CLI, gebaut auf libpg_query (dem Parser, den PostgreSQL selbst nutzt), mit allen 5 Plattform-Binaries gebündelt. Nur Python 3, sonst nichts per pip zu installieren. Linux, macOS und Windows.

Für CI gebaut

Maschinenlesbares JSON nach einem dokumentierten Schema, Exit-Codes nach Schweregrad, sodass es direkt in eine Pipeline passt, und eine Konfigurationsdatei für deine Postgres-Version und deinen Schwellenwert für große Tabellen.

Belegt und getestet

Jede Regel verweist auf eine offizielle Quelle von Postgres, Flyway oder Liquibase. Enthält eine Regressionssuite mit 224 ausgearbeiteten Beispielen, die du selbst ausführen kannst.

Bewusst rein statische Analyse: Es liest den Text der Migration und verbindet sich nie mit deiner Datenbank, braucht also keine Zugangsdaten und läuft in der CI genauso wie auf deinem Laptop, ohne dass etwas deinen Rechner verlässt. Es schließt aus der Postgres-Version und den Zeilenzahlen, die du angibst (oder die über die optionale lokale Nur-Lese-Introspektion automatisch gefüllt werden), und fängt die häufigen Risiken mit großer Wirkung ab, die ein Diff-Review übersieht.

Hol es dir

Migrationen deployen ohne den Ausfall um drei Uhr nachts.

Einmaliger Kauf, 14,99 €. Verkauft über Polar oder Lemon Squeezy, beide Merchant of Record mit geregelter Umsatzsteuer. Sofortiger Download, alle Plattformen.

Erst die Engine selbst ausprobieren? Postgres Migration Guard ist die kostenlose Open-Source-Teilmenge: 12 derselben Regeln, als CLI und als GitHub Action.

Alle Produkte von Technical Turtle