Narzędzia: Flyway, Liquibase, Sqitch
Porównywać popularne narzędzia do migracji schematu, ich modele wersjonowania i integrację z CI
Narzędzia: Flyway, Liquibase, Sqitch to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.
Po co narzędzia do migracji?
Zmiany schematu muszą być:
- wersjonowane w systemie kontroli wersji
- stosowane w deterministycznej kolejności
- uruchamiane automatycznie w CI/CD
- możliwe do wycofania (czasami)
Flyway
Oparte na Javie migracje zapisywane w plikach. Nazwa każdego pliku zawiera prefiks wersji:
-- 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
Zastosuj migracje:
flyway -url=jdbc:postgresql://localhost/mydb -user=app migrate
flyway info # show what would run
flyway repair # fix the history table after a failureLiquibase
Oparte na XML/YAML/JSON (lub SQL) „changesets”. Bardziej rozwlekłe niż w Flyway, ale obsługują abstrakcje między bazami danych:
<!-- 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>Obsługa wycofywania zmian w Liquibase
Każdy changeset może deklarować czynność wycofania. Liquibase może wycofać ostatnie N zmian:
liquibase rollbackCount 1Sqitch
Natywny SQL, bez kolejności opartej na numerach wersji — wykorzystuje jawny graf zależności DAG. Każda zmiana ma skrypty deploy / verify / revert:
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/mydbPorównanie trzech narzędzi
| Flyway | Liquibase | Sqitch | |
|---|---|---|---|
| Format | SQL | XML/YAML/JSON | SQL |
| Wersjonowanie | Sekwencyjne | Sekwencyjne | DAG |
| Wycofywanie zmian | Ograniczone | Natywne | Natywne |
| Etap weryfikacji | Nie | Opcjonalny | Wbudowany |
Narzędzia natywne dla frameworków
Wiele frameworków webowych ma własne narzędzia:
- Rails: migracje ActiveRecord
- Django: wbudowane migracje
- Node: knex, sequelize, prisma migrate
- NestJS: migracje TypeORM
Przepływ pracy CI
Standardowy pipeline:
- Pull request zawiera nowy plik migracji
- CI uruchamia pustą bazę PostgreSQL i wykonuje wszystkie migracje
- Uruchamiane są automatyczne testy na zmigrowanym schemacie
- Po scaleniu następuje wdrożenie i uruchomienie migracji na środowisku testowym, a następnie produkcyjnym
Migracje powtarzalne
Flyway ma powtarzalne migracje „R__” — uruchamiane ponownie po każdej zmianie. Sprawdzają się w przypadku widoków i procedur składowanych:
-- 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;Wykrywanie rozbieżności schematu
Należy użyć migra, schemahero lub pgquarrel, aby wykrywać rozbieżności między oczekiwanym a rzeczywistym schematem.
Podsumowanie
Należy wybrać jedno narzędzie i konsekwentnie go używać.
- Flyway — SQL przede wszystkim, prostota
- Liquibase — podejście deklaratywne, warstwy abstrakcji
- Sqitch — zależności DAG, wycofywanie zmian jako priorytet
- Zawsze: wersjonowanie w systemie kontroli wersji i automatyzacja w CI
Szybki test
Które narzędzie natywnie wykorzystuje jawny graf zależności DAG między migracjami zamiast sekwencyjnych numerów wersji?
Często zadawane pytania
Czy lekcja „Narzędzia: Flyway, Liquibase, Sqitch” jest bezpłatna?
Tak — pełny tekst „Narzędzia: Flyway, Liquibase, Sqitch” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Narzędzia: Flyway, Liquibase, Sqitch”?
Porównywać popularne narzędzia do migracji schematu, ich modele wersjonowania i integrację z CI Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć SQL Academy?
Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Narzędzia: Flyway, Liquibase, Sqitch”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?
Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Migracje online: dlaczego ALTER TABLE blokuje
- Indeksy współbieżne (CREATE INDEX CONCURRENTLY)
- Zmiana nazw kolumn bez przestoju
- Narzędzia: Flyway, Liquibase, Sqitch