Worksheet 4: Rencana gelombang migrasi
Urutkan sepuluh objek NYC Taxi ke dalam gelombang migrasi dan beri nilai kompleksitas masing-masing, dengan umpan balik langsung pada setiap jawaban.
Perkiraan waktu: 15–20 menit Referensi: Modul 03 — Provisioning dan migrasi → Modul 04 — Bangun ulang pipeline dbt → Modul 05 — Benchmark dan cutover untuk urutan eksekusi
Konsep
Objek database punya dependensi. Sebuah view yang meng-query fact_trips tidak bisa dibuat
sebelum fact_trips ada. Sebuah materialized view yang membaca dari trips_raw tidak bisa
diisi sebelum trips_raw punya data. Bermigrasi dalam urutan yang salah menyebabkan kegagalan
create table, hasil kosong, atau data tidak lengkap yang sulit didiagnosis.
Solusinya: perencanaan gelombang. Susun setiap objek ke dalam gelombang bernomor di mana setiap gelombang hanya memuat objek yang dependensinya sudah dipenuhi gelombang sebelumnya.
Penilaian kompleksitas membantu memprioritaskan upaya migrasi. Batas antara B dan C adalah apakah sebuah statement harus direstrukturisasi atau hanya perlu diganti tipenya:
- Grade A — trivial: tabel standar atau view passthrough, tanpa logika khusus, pemetaan tipe yang lugas
- Grade B — sedang: satu konstruksi khas ClickHouse yang perlu dipelajari dan diuji, tetapi
terjemahannya sendiri hanya substitusi — sebuah engine ClickHouse plus konfigurasi inkremental, sebuah
CREATE DICTIONARY,REFRESH EVERYpada MV yang refreshable, atau sebuah jalurJSONExtract*yang menggantikan pembacaanVARIANT - Grade C — kompleks: sebuah statement harus dibangun ulang, bukan sekadar diganti tipenya (
QUALIFYdibungkus dalam subquery,MERGE INTOdiganti dengan strategi inkremental), dan penulisan ulang itu harus tetap konsisten dengan pilihan engine dan dengan penempatanFINALdi semua hal di hilir; uji dengan hati-hati - Grade D — butuh desain ulang: fitur khas Snowflake tanpa padanan langsung (Streams → cutover producer ke ClickHouse, Tasks → MV yang refreshable atau eksekusi dbt terjadwal)
Latihan 3 di bawah meminta Anda memberi nilai pada skala tiga tingkat yang dipadatkan, bukan keempat huruf di atas — Low (Grade A), Medium (Grade B), High (Grade C atau D) — karena perbedaan yang paling penting untuk mengurutkan upaya adalah trivial / perlu pengujian / perlu desain ulang, bukan pembagian empat arah itu. Penjelasan setiap jawaban menyebutkan mana dari A–D yang berlaku, sehingga Anda tetap bisa memetakannya kembali ke nilai hurufnya.
Latihan 1: DAG dependensi
Untuk setiap objek di bawah, pilih apa yang menjadi dependensinya. Tiga dari sepuluh adalah data referensi statis tanpa dependensi apa pun — itu jawaban yang sah, bukan celah untuk diisi nanti.
Latihan 2: Penetapan gelombang migrasi
Gelombang 0 dan 1 sudah diisi sebagai konteks. Untuk gelombang 2 sampai 4, pilih objek mana yang termasuk dalam gelombang itu, lalu jawab apa yang sesungguhnya terjadi di dalamnya.
Latihan 3: Penilaian kompleksitas
Beri nilai setiap objek, lalu jawab pertanyaan tantangan utamanya di bawah tabel.
Pertanyaan refleksi
Dua pertanyaan terakhir mencakup tiga entri dalam risk register di kunci jawaban —
memverifikasi fact_trips (Grade C) dan agg_hourly_zone_trips setelah keduanya mendarat, dan
memverifikasi cutover producer yang menggantikan TRIPS_CDC_STREAM dan CDC_CONSUME_TASK
(Grade D). Register itu bukan semata himpunan Grade C/D: agg_hourly_zone_trips bernilai
Medium, tetapi jendela perhitungan ulang bergulirnya adalah hal yang paling mudah membuat pipeline ini
salah secara halus.
Loading worksheet...
Pindahkan ke migration-plan.md
Salin rencana gelombang dan nilai kompleksitas Anda ke Bagian 6 dari migration-plan.md dan
centang:
- [ ] Migration wave plan: completedWorksheet 3: Terjemahan skema
Petakan setiap kolom TRIPS_RAW dan FACT_TRIPS ke tipe ClickHouse-nya dan terjemahkan tujuh ekspresi Snowflake, dengan umpan balik langsung pada setiap jawaban.
Worksheet 5: Desain model dbt
Konfigurasikan materialisasi, engine, dan strategi inkremental untuk setiap model dbt, dengan umpan balik langsung pada setiap jawaban.