Lewati ke konten utama

C14 · Modul 02

Model data dan migrasi

42 langkah singkat, dari mudah sampai tantangan.

  1. Level 1

    Kenal

  2. Level 2

    Paham

  3. Level 3

    Terapkan

  4. Level 4

    Tantangan

  5. Level 5

    Pendalaman

Intinya

  • Aturan yang harus selalu benar (total = subtotal + ongkir, alamat tepat saat antar, satu kunci idempotensi per pengguna) dijaga basis data dengan kendala, bukan hanya oleh kode API.
  • Uang adalah bilangan bulat rupiah; harga dan nama produk disalin ke pesanan_item saat memesan karena katalog berubah dan pesanan lama tidak boleh ikut berubah.
  • Skema berubah lewat migrasi bernomor yang maju saja; pelari mencatat nama dan checksum di schema_migrations, menerapkan setiap migrasi dalam satu transaksi, dan menolak migrasi lama yang diubah.
  • Perubahan skema di produksi memakai expand/contract: tambah yang baru, pindahkan kode dan data bertahap, hapus yang lama paling akhir.

Sebelum mulai

±6 jam.

Modul ini memakai materi di bawah. Belum yakin? Ulas dulu bagian yang disebut.

Hasil belajar: menerjemahkan aturan bisnis Pesan Makmur menjadi kendala basis data (CHECK lintas kolom, UNIQUE gabungan, indeks unik parsial) dan membuktikannya dengan IntegrityError; memilih kapan menyalin data (snapshot harga) dan kapan menormalkan; menulis migrasi SQL bernomor dan pelari migrasi yang mencatat checksum, menerapkan setiap migrasi dalam satu transaksi, dan aman dijalankan ulang; merencanakan perubahan skema tanpa henti dengan pola expand/contract dan urutan rilis yang benar; membandingkan pelari buatan sendiri dengan Alembic.

Hasil lab: api/migrasi/0001_awal.sql dan 0002_riwayat_status.sql, pelari python -m app.migrasi yang membuat skema dari nol di PostgreSQL dan aman dijalankan dua kali, data contoh lokal, dan satu perubahan expand/contract yang dicoba sambil API tetap menyala.

Istilah di modul ini (12)

Ketuk istilah untuk melihat penjelasannya. Di materi, istilah bergaris titik membuka kartu yang sama. Semua istilah course

Bahan modul

Semua kode, latihan, dan data modul ini dalam satu zip, untuk dijalankan di laptop atau Google Colab.

  • 19 contoh kode
  • 7 berkas latihan + tes
  • 1 berkas data
  • requirements.txt
Lihat isi zip
  • BACA-DULU.txt
  • contoh_c14_02_42.py
  • contoh_c14_02_74.py
  • contoh_c14_02_104.py
  • contoh_c14_02_131.py
  • contoh_c14_02_154.py
  • contoh_c14_02_324.py
  • contoh_c14_02_395.sql
  • contoh_c14_02_435.sql
  • contoh_c14_02_511.py
  • contoh_c14_02_563.py
  • contoh_c14_02_587.py
  • contoh_c14_02_753.py
  • contoh_c14_02_778.py
  • contoh_c14_02_1029.py
  • contoh_c14_02_1087.py
  • contoh_c14_02_1366.py
  • contoh_c14_02_1392.py
  • contoh_c14_02_1505.py
  • contoh_c14_02_1570.py
  • test_c14_02_1.py
  • latihan_c14_02_2.sql
  • latihan_c14_02_3.sql
  • test_c14_02_4.py
  • test_c14_02_5.py
  • latihan_c14_02_6.sql
  • test_c14_02_7.py
  • pesan.sql
  • requirements.txt