Incremental Load

Menengah

Strategi loading data di mana cuma data yang baru muncul atau berubah sejak proses load terakhir yang diproses, bukan seluruh dataset dari awal setiap kali.

Apa Itu Incremental Load?

Bayangkan kamu punya toko dengan 10 juta baris data transaksi di sistem kasir. Setiap hari ada sekitar 5.000 transaksi baru. Kalau kamu kopi semua 10 juta baris ke data warehouse setiap malam, itu buang-buang waktu, bandwidth, dan biaya komputasi.

Incremental Load adalah solusinya: tiap malam, kamu cukup ambil 5.000 transaksi baru saja. Yang kemarin sudah masuk, nggak perlu diambil lagi. Semakin besar datamu, semakin besar penghematan yang kamu dapat.

Full Load vs Incremental Load

AspekFull LoadIncremental Load
Data yang diprosesSemua data setiap kali runCuma data baru atau yang berubah
Durasi prosesMakin lama seiring data bertambahRelatif konstan dan stabil
Kompleksitas setupSimpel, mudah dipahamiLebih kompleks, perlu tracking
Risiko data terlewatRendahAda risiko kalau penanda tidak tepat
Cocok untukDataset kecil, data yang sering berubah totalDataset besar, data yang terus bertambah
Biaya komputasiTinggi dan makin mahalEfisien dan bisa diprediksi

Cara Mengidentifikasi Data Baru

Ada beberapa strategi untuk menentukan "mana data yang baru atau berubah":

Timestamp-based: Ambil semua baris di mana kolom updated_at atau created_at lebih baru dari waktu load terakhir. Paling umum dan mudah dipahami oleh semua orang.

ID-based: Kalau ID-nya sequential (auto-increment), ambil semua baris dengan ID lebih besar dari ID terakhir yang sudah diload. Simpel tapi cuma works untuk data append-only.

Checksum atau hash: Hitung hash dari setiap baris, bandingkan dengan yang sudah ada. Cocok untuk data yang bisa berubah tapi tidak punya timestamp update yang reliable.

Change Data Capture (CDC): Baca log perubahan langsung dari database sumber, misalnya binlog di MySQL atau WAL di PostgreSQL. Paling akurat tapi paling kompleks untuk di-setup.

Kapan Pakai Full Load, Kapan Pakai Incremental?

Pakai Full Load untuk tabel referensi kecil yang jarang berubah seperti tabel provinsi atau kode produk, atau ketika lebih mudah reload semuanya daripada track perubahannya, atau saat pertama kali setup pipeline.

Pakai Incremental Load untuk tabel transaksi besar yang terus bertambah, ketika full load sudah terlalu lama atau mahal untuk dijalankan rutin, atau saat SLA data freshness-nya ketat misalnya data harus update tiap jam.

Tantangan yang Sering Muncul

Incremental load lebih hemat tapi lebih tricky untuk di-maintain. Kalau "penanda" data baru-nya tidak reliable, misalnya kolom updated_at tidak selalu di-update saat ada perubahan dari background job, ada data yang bisa terlewat. Atau kalau ada record yang dihapus di sumber (hard delete), incremental load tidak akan otomatis menghapusnya di destination.

Lanjut Latihan

Udah paham Incremental Load? Lanjut latihan SQL dan Excel yuk!

Latihan interaktif, langsung di browser.

Mulai Latihan →