SQL Academy · Pelajaran

Alat: Flyway, Liquibase, Sqitch

Bandingkan alat migrasi skema populer, model versinya, dan integrasi CI-nya

Pelajaran 4 dari 413 langkah

Alat: Flyway, Liquibase, Sqitch adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Mengapa Menggunakan Alat Migrasi?

Perubahan skema harus:

  • Memiliki versi di pengendalian sumber
  • Diterapkan dalam urutan yang deterministik
  • Dijalankan secara otomatis di CI/CD
  • Dapat dibatalkan, dalam situasi tertentu

Flyway

Migrasi berbasis Java dan berkas. Setiap berkas diberi nama dengan awalan versi:

-- 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.

Antarmuka Baris Perintah Flyway

Terapkan migrasi:

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

"Kumpulan perubahan" berbasis XML/YAML/JSON atau SQL. Lebih panjang daripada Flyway, tetapi mendukung abstraksi lintas basis data:

<!-- 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>

Dukungan Pembatalan Liquibase

Setiap kumpulan perubahan dapat menyatakan tindakan pembatalan. Liquibase dapat membatalkan N perubahan terakhir:

liquibase rollbackCount 1

Sqitch

SQL asli, tanpa pengurutan berdasarkan nomor versi — menggunakan DAG dependensi yang eksplisit. Setiap perubahan memiliki skrip penerapan, verifikasi, dan pembatalan:

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

Perbandingan Ketiganya

FlywayLiquibaseSqitch
FormatSQLXML/YAML/JSONSQL
Pembuatan versiBerurutanBerurutanDAG
PembatalanTerbatasBawaanBawaan
Langkah verifikasiTidakOpsionalBawaan

Alat Bawaan Kerangka Kerja

Banyak kerangka kerja web memiliki alatnya sendiri:

  • Rails: migrasi ActiveRecord
  • Django: migrasi bawaan
  • Node: knex, sequelize, prisma migrate
  • NestJS: migrasi TypeORM

Alur Kerja CI

Pipeline standar:

  1. PR menyertakan berkas migrasi baru
  2. CI menjalankan Postgres kosong, lalu menjalankan semua migrasi
  3. Jalankan tests otomatis terhadap skema yang telah dimigrasikan
  4. Setelah penggabungan, terapkan perubahan dan jalankan migrasi pada lingkungan penahapan, lalu produksi

Migrasi yang Dapat Diulang

Flyway memiliki migrasi yang dapat diulang dengan awalan "R__" — dijalankan ulang setiap kali terjadi perubahan. Cocok untuk VIEW dan prosedur tersimpan:

-- 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;

Deteksi Perubahan Skema

Gunakan migra, schemahero, atau pgquarrel untuk mendeteksi perbedaan antara skema yang diharapkan dan skema sebenarnya.

Rangkuman

Pilih satu alat dan gunakan secara konsisten.

  • Flyway — berfokus pada SQL, sederhana
  • Liquibase — deklaratif, memiliki lapisan abstraksi
  • Sqitch — dependensi DAG, mengutamakan pembatalan
  • Selalu: simpan versi dalam pengendalian sumber dan otomatisasikan di CI

Pemeriksaan Singkat

Alat mana yang secara bawaan menggunakan DAG dependensi eksplisit antar-migrasi, bukan nomor versi berurutan?

Gratis untuk memulai

Belajar SQL dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
46
Pelajaran
183

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Alat: Flyway, Liquibase, Sqitch” gratis?

Ya — teks lengkap “Alat: Flyway, Liquibase, Sqitch” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Alat: Flyway, Liquibase, Sqitch”?

Bandingkan alat migrasi skema populer, model versinya, dan integrasi CI-nya Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Alat: Flyway, Liquibase, Sqitch” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Migrasi Daring: Mengapa ALTER TABLE Mengunci
  2. Indeks Konkuren (CREATE INDEX CONCURRENTLY)
  3. Mengganti Nama Kolom Tanpa Henti
  4. Alat: Flyway, Liquibase, Sqitch
← Kembali ke SQL Academy