Materialized View

Menengah

Materialized view adalah hasil query yang disimpan secara fisik di disk, bukan dihitung ulang setiap kali dipanggil. Cocok untuk query berat yang hasilnya sering diakses tapi nggak harus selalu real-time.

Apa itu Materialized View?

Materialized view adalah objek database yang menyimpan hasil query secara fisik di disk. Berbeda dari view biasa yang hanya menyimpan definisi query-nya dan tetap menjalankan ulang query setiap kali dipanggil, materialized view menyimpan datanya juga.

Anggap aja materialized view itu kayak laporan yang sudah dicetak: kamu nggak perlu hitung ulang dari nol setiap kali ada yang minta laporannya. Tapi karena sudah dicetak, kamu perlu update atau cetak ulang secara periodik agar datanya tetap akurat.

View Biasa vs Materialized View

AspekView BiasaMaterialized View
Cara SimpanHanya simpan definisi querySimpan hasil query (data aktual)
Kecepatan QueryLebih lambat (hitung ulang tiap akses)Jauh lebih cepat (baca dari disk)
Kebaruan DataSelalu real-timeBisa stale, perlu refresh
Penggunaan StorageHampir nolSignifikan tergantung volume data
Cocok UntukData yang sering berubah dan butuh real-timeData agregat yang jarang berubah

Analogi yang Lebih Nyata

Kamu punya laporan total penjualan per kategori produk. Query-nya butuh join 5 tabel dan agregasi jutaan baris, butuh 30 detik kalau dihitung dari nol setiap kali.

Dengan materialized view, hasil join dan agregasi itu sudah tersimpan. Setiap kali dashboard BI dibuka, datanya langsung tersedia dalam milidetik. Kompromisnya: data ini baru terupdate kalau kamu jalankan perintah REFRESH MATERIALIZED VIEW.

Kapan Pakai Materialized View?

Materialized view cocok kalau:

  • Query-nya berat dengan banyak join dan agregasi, tapi sering diakses berulang kali
  • Hasil query nggak harus real-time, boleh beberapa jam yang lalu atau data pagi hari
  • Kamu butuh performa baca yang tinggi untuk dashboard atau laporan operasional
  • Ingin pre-compute kalkulasi kompleks yang sama dipanggil berulang kali

Nggak cocok kalau data harus selalu up-to-date karena bahkan selisih detik pun nggak boleh, atau data berubah sangat sering sehingga biaya refresh lebih besar dari manfaatnya.

Strategi Refresh

Ada dua pendekatan refresh yang umum:

Manual Refresh: Kamu jalankan perintah refresh secara eksplisit atau dijadwalkan lewat cron job atau tool orchestration. Ini yang paling fleksibel.

Incremental Refresh: Beberapa database mendukung refresh incremental, di mana hanya baris yang berubah sejak refresh terakhir yang diperbarui. Jauh lebih efisien untuk dataset besar.

Di PostgreSQL, opsi CONCURRENTLY saat refresh memungkinkan user tetap bisa baca data lama selama proses refresh berjalan, sehingga nggak ada downtime.

Penggunaan di Data Engineering Modern

Di pipeline data modern, materialized view sering jadi alternatif ringan untuk membangun aggregation layer tanpa perlu tabel terpisah dan ETL job tambahan. dbt punya materialization type khusus untuk ini yang bikin pengelolaannya lebih mudah.

Lanjut Latihan

Udah paham Materialized View? Lanjut latihan SQL dan Excel yuk!

Latihan interaktif, langsung di browser.

Mulai Latihan →