Tools: Flyway, Liquibase, Sqitch
Vergleichen Sie beliebte Tools für Schema-Migrationen, ihre Versionierungsmodelle und ihre CI-Integration.
Tools: Flyway, Liquibase, Sqitch ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Migrationstools?
Schemaänderungen müssen:
- in der Versionsverwaltung versioniert werden
- in einer deterministischen Reihenfolge angewendet werden
- automatisch in CI/CD ausgeführt werden
- (manchmal) zurücksetzbar sein
Flyway
Dateibasierte Migrationen auf Java-Basis. Jede Datei wird mit einem Versionspräfix benannt:
-- V1__create_users.sql
CREATE TABLE users (id BIGSERIAL PRIMARY KEY, email TEXT NOT NULL);
-- V2__add_full_name.sql
ALTER TABLE users ADD COLUMN full_name TEXT;
-- Flyway tracks applied migrations in a flyway_schema_history table.Flyway-CLI
Migrationen anwenden:
flyway -url=jdbc:postgresql://localhost/mydb -user=app migrate
flyway info # show what would run
flyway repair # fix the history table after a failureLiquibase
Auf XML/YAML/JSON oder SQL basierende „Changesets“. Ausführlicher als Flyway, unterstützt aber Abstraktionen für verschiedene Datenbanken:
<!-- changeset alice:001 -->
<createTable tableName="users">
<column name="id" type="bigserial" autoIncrement="true">
<constraints primaryKey="true"/>
</column>
<column name="email" type="text"><constraints nullable="false"/></column>
</createTable>Rollback-Unterstützung in Liquibase
Jedes Changeset kann eine Rollback-Aktion deklarieren. Liquibase kann die letzten N Änderungen zurücksetzen:
liquibase rollbackCount 1Sqitch
Native SQL ohne Reihenfolge anhand von Versionsnummern — stattdessen wird ein expliziter DAG von Abhängigkeiten verwendet. Jede Änderung hat Deploy-, Verify- und Revert-Skripte:
sqitch add add_users -n 'Add users table'
# edits deploy/add_users.sql, verify/add_users.sql, revert/add_users.sql
sqitch deploy db:pg://localhost/mydbDie drei Tools im Vergleich
| Flyway | Liquibase | Sqitch | |
|---|---|---|---|
| Format | SQL | XML/YAML/JSON | SQL |
| Versionierung | Sequenziell | Sequenziell | DAG |
| Rollback | Eingeschränkt | Native Unterstützung | Native Unterstützung |
| Verifizierungsschritt | Nein | Optional | Integriert |
Frameworkeigene Tools
Viele Webframeworks verfügen über eigene Tools:
- Rails: ActiveRecord migrations
- Django: integrierte Migrationen
- Node: knex, sequelize, prisma migrate
- NestJS: TypeORM migrations
CI-Workflow
Standardpipeline:
- Der Pull Request enthält eine neue Migrationsdatei
- CI startet eine leere PostgreSQL-Datenbank und führt alle Migrationen aus
- Automatisierte Tests gegen das migrierte Schema ausführen
- Nach dem Merge: Deployment und Ausführung der Migrationen zuerst in der Staging-Umgebung, anschließend in der Produktion
Wiederholbare Migrationen
Flyway bietet wiederholbare Migrationen mit „R__“ — sie werden bei jeder Änderung erneut ausgeführt. Das eignet sich gut für Views und gespeicherte Prozeduren:
-- R__users_view.sql (re-applied whenever its checksum changes)
CREATE OR REPLACE VIEW active_users AS
SELECT id, email FROM users WHERE deleted_at IS NULL;Erkennung von Schemaabweichungen
Verwenden Sie migra, schemahero oder pgquarrel, um Abweichungen zwischen dem erwarteten und dem tatsächlichen Schema zu erkennen.
Zusammenfassung
Wählen Sie ein Tool und bleiben Sie dabei.
- Flyway — SQL-first, einfach
- Liquibase — deklarativ, mit Abstraktionsebenen
- Sqitch — DAG-Abhängigkeiten, Rollback zuerst
- Immer: in der Versionsverwaltung versionieren und in CI automatisieren
Schnelltest
Welches Tool verwendet nativ einen expliziten DAG von Abhängigkeiten zwischen Migrationen anstelle sequenzieller Versionsnummern?
Häufig gestellte Fragen
Ist die Lektion „Tools: Flyway, Liquibase, Sqitch“ kostenlos?
Ja — der vollständige Text von „Tools: Flyway, Liquibase, Sqitch“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Tools: Flyway, Liquibase, Sqitch“?
Vergleichen Sie beliebte Tools für Schema-Migrationen, ihre Versionierungsmodelle und ihre CI-Integration. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Tools: Flyway, Liquibase, Sqitch“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Online-Migrationen: Warum ALTER TABLE Sperren verursacht
- Konkurrierende Indizes (CREATE INDEX CONCURRENTLY)
- Spalten ohne Ausfallzeit umbenennen
- Tools: Flyway, Liquibase, Sqitch