0Pricing
SQL Academy · Lekcja

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 failure

Liquibase

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 1

Sqitch

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/mydb

Porównanie trzech narzędzi

FlywayLiquibaseSqitch
FormatSQLXML/YAML/JSONSQL
WersjonowanieSekwencyjneSekwencyjneDAG
Wycofywanie zmianOgraniczoneNatywneNatywne
Etap weryfikacjiNieOpcjonalnyWbudowany

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:

  1. Pull request zawiera nowy plik migracji
  2. CI uruchamia pustą bazę PostgreSQL i wykonuje wszystkie migracje
  3. Uruchamiane są automatyczne testy na zmigrowanym schemacie
  4. 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

  1. Migracje online: dlaczego ALTER TABLE blokuje
  2. Indeksy współbieżne (CREATE INDEX CONCURRENTLY)
  3. Zmiana nazw kolumn bez przestoju
  4. Narzędzia: Flyway, Liquibase, Sqitch
← Powrót do SQL Academy