Beralih dari database transaksional ke dunia analitik: memahami perbedaan OLTP dan OLAP, arsitektur columnar dan MPP warehouse modern seperti Snowflake dan BigQuery, strategi partition dan clustering key, pengelolaan metadata dan data quality, serta administrasi warehouse skala kecil yang cost-aware

Sejauh ini kita mengelola database transaksional (OLTP): aplikasi menulis dan membaca baris per baris. Di episode 25 kita memasuki dunia berbeda — data warehouse: tempat data dari banyak sistem berkumpul untuk dianalisis. Peran DBA di sini berbeda: bukan menjaga transaksi lancar, tapi memastikan query analitik raksasa cepat dan biayanya terkendali.
Warehouse bukan sekadar "database besar". Cara kerjanya, model biayanya, dan alat optimasinya hampir semuanya berbeda. Episode ini membangun fondasi operasi warehouse dengan Snowflake dan BigQuery sebagai contoh utama.
| OLTP (transaksi) | OLAP (analitik) | |
|---|---|---|
| Pola query | Insert/update kecil, baris per baris | Scan dan agregasi besar |
| Ukuran per query | Baris tunggal | Miliaran baris |
| Optimasi | Index, latensi rendah | Kolom, parallel scan |
| Contoh | Aplikasi e-commerce | Dashboard, laporan |
Warehouse mengoptimalkan scan dan agregasi. Karenanya ia memakai penyimpanan columnar: nilai per kolom disimpan berdekatan, sehingga agregasi SUM(harga) hanya membaca kolom itu — bukan seluruh baris.
Kunci arsitektur warehouse modern (Snowflake, BigQuery, Redshift Spectrum) adalah pemisahan storage dan compute. Data disimpan di object storage (S3/GCS) dengan format columnar (Parquet/Avro), dan klaster komputasi "menyala" hanya saat query berjalan. Inilah yang membuat warehouse bisa autoscale dan bayar per pemakaian.
Imbasnya untuk DBA:
Snowflake memperkenalkan konsep Virtual Warehouse — kumpulan node compute yang dihidupkan per query session:
CREATE WAREHOUSE analytics_wh
WITH WAREHOUSE_SIZE = 'X-SMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE;AUTO_SUSPEND = 60: warehouse mati otomatis setelah 60 detik idle — penghematan biaya terbesar.AUTO_RESUME = TRUE: menyala otomatis saat query datang — dengan konsekuensi latensi "cold start".BigQuery memakai slot (unit komputasi) yang dialokasikan per project. Prinsip operasinya:
Optimasi paling berdampak: prune data sebelum query. BigQuery menghitung biaya dari data yang di-scan, jadi partition dan clustering (di bawah) adalah alat penghemat biaya sekaligus kecepatan.
Di warehouse, dua mekanisme memangkas data yang dibaca:
WHERE date = '2026-08-01' hanya membaca partisi itu.CREATE TABLE app.events (
event_time TIMESTAMP,
event_type STRING,
payload JSON
)
PARTITION BY DATE(event_time)
CLUSTER BY event_type;Aturan praktis: partition pada kolom yang di-filter luas (hari/bulan), cluster pada kolom yang di-filter di dalam partisi (tipe event, tenant). Kebalikannya — cluster di kolom tanggal — hampir tidak memberi manfaat.
Warehouse hidup mati dari metadata: deskripsi tabel, kolom, owner, dan lineage (darimana data berasal). Tanpa metadata, warehouse berubah jadi "data swamp" — data ada tapi tidak ada yang percaya. Praktiknya:
version: 2
models:
- name: daily_sales
tests:
- not_null:
column_name: order_date
- unique:
column_name: order_idRancang warehouse mini dengan prinsip yang sama:
Note
Warehouse tercepat sekaligus termurah adalah yang hanya membaca data yang dibutuhkan. Partition, clustering, query cache, dan disiplin SELECT yang hemat kolom adalah satu paket: kecepatan dan biaya menang bersama.
Inti yang harus dibawa pulang:
Di episode 26 selanjutnya kita menutup fase teknis dan melihat peta besar: ekosistem & tren modern 2026 — managed database, serverless, AI/vector, dan bagaimana peran DBA bergeser menjadi cloud database manager. Sampai jumpa di episode 26!