EN: Read in English
Dunia C3: Lancar & Deploy
Ubah pangkalan data tanpa henti
Anda akan belajar: cara ubah pangkalan data langkah demi langkah semasa kod lama dan baharu berjalan bersama.
Teks BM belum disemak oleh penutur asli.
Disemak dengan GitHub Actions 2026-10 pada 31 Okt 2026
Masalahnya
Anda tukar nama lajur phone kepada mobile. Versi 2 okey. Tapi salinan versi 1 masih berjalan semasa rollout. Maksudnya: kod lama minta lajur yang dah tiada.
Tengok
Semasa deploy rolling atau canary, siapa yang baca dan tulis pangkalan data?
Pilih satu jawapan.
Tengok
Penyelesaiannya ialah expand dan contract (expand and contract): Ubah pangkalan data langkah demi langkah: tambah rak baharu, pindah stok, kemudian buang rak lama. Kod lama dan baharu terus berfungsi.. Ubah stor langkah demi langkah. Tambah rak baharu, pindah stok, kemudian buang rak lama. Susun langkahnya.
Langkah pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.
- Expand: tambah lajur baharu, mobile
- Deploy kod yang guna mobile sahaja
- Contract: buang lajur phone yang lama
- Deploy kod yang tulis ke kedua-dua lajur
- Migrate: salin nombor lama ke mobile
Cuba
Perubahan mana yang selamat dalam satu deploy? Susun.
Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.
Teka
Anda di langkah 2: kedua-dua lajur wujud. Versi 2 ada bug. Boleh anda rollback ke versi 1?
Pilih satu jawapan.
Semak
Langkah 1 betul-betul, pada PostgreSQL 18. ADD COLUMN tambah rak kosong. Kod lama masih baca phone. Kod baharu boleh mula tulis mobile.
Anda berjaya!
Kini anda boleh ubah pangkalan data tanpa tutup kedai.
Nak tahu lebih (pilihan)
Jalankan setiap migration sebagai langkah sendiri, sebelum kod yang memerlukannya. Sesetengah perubahan mengunci jadual besar semasa berjalan. Baca dokumentasi pangkalan data anda dulu. Ingat: rollback tukar kod, bukan data. Rollback Cloudflare biarkan pangkalan data dan binding lain seperti asal.
Latihan sebenar (pilihan): cuba langkah ini pada pangkalan data pakai buang: docker run --rm -e POSTGRES_PASSWORD=test postgres:18-alpine.
English
You renamed the column phone to mobile. Version 2 is happy. But version 1 copies still run during the rollout. Plain words: old code asks for a column that is gone.
During a rolling or canary deploy, who reads and writes the database?
The fix is expand and contract. Change the pantry in safe steps. Add the new shelf, move the stock, then remove the old one. Put the steps in order.
Which changes are safe in one deploy? Sort them.
You are at step 2: both columns exist. Version 2 has a bug. Can you roll back to version 1?
Step 1 for real, on PostgreSQL 18. ADD COLUMN adds an empty shelf. Old code still reads phone. New code can start writing mobile.
You can now change a database without closing the shop.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: PostgreSQL 18: ALTER TABLE · Parallel change (expand and contract) · Cloudflare: rollbacks leave data as it is
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?