Apa itu Data Engineering? — Data Engineering

Pernah liat dashboard analitik perusahaan yang nampilin data sales real-time, prediksi pengeluaran bulanan, atau insight dari ribuan transaksi? Behind the…

Data engineering adalah pekerjaan memindahkan, membersihkan, dan menyusun data supaya orang lain bisa menjawab pertanyaan dengan data itu. Bayangin toko buku di jam ramai. Kasir sibuk melayani pembeli satu per satu. Pemilik toko mau tahu buku apa yang paling laku di tiap kota minggu ini. Kalau dia menyuruh kasir membongkar semua struk sekarang juga, antrean macet. Jadi tiap malam ada orang yang memfotokopi struk hari itu, membawanya ke ruang belakang, membuang struk dobel, membetulkan yang salah tulis, lalu menyusunnya per minggu dan per kota. Besok paginya pemilik tinggal membaca. Orang itu data engineer.

🧪 Tebakan cepat: Toko Buku baru punya 14 pesanan. Pemiliknya menjalankan query "buku paling laku per kota per minggu" langsung di database aplikasi, dan hasilnya keluar dalam sekejap: di Jakarta, minggu yang mulai 28 September, juaranya Bumi Manusia dengan 4 buku. Jawaban itu benar atau salah? Tebak dulu, jawabannya ada di bagian "Cepat belum tentu benar".

Toko Buku dan pertanyaan pemiliknya

Toko Buku dari track API sekarang punya aplikasi web sendiri: Laravel dengan database MySQL. Tiap checkout menulis satu baris ke orders dan satu baris per judul ke order_items. Data inilah yang dipakai di seluruh track Data Engineering.

Tabel Isinya Baris
authors penulis: Andrea Hirata, Pramoedya Ananta Toer, Eka Kurniawan, Ahmad Tohari 4
books Laskar Pelangi (89000), Bumi Manusia (125000), Cantik Itu Luka (110000), Ronggeng Dukuh Paruk (95000) 4
customers pelanggan dan kotanya: Jakarta, Bandung, Surabaya 7
orders pesanan, created_at dari 28 September sampai 9 Oktober 2026 14
order_items satu baris per judul di tiap pesanan: qty dan price 19

Pemiliknya bertanya: "buku apa paling laku per kota per minggu?" Pertanyaan ini yang mendorong seluruh track: dari query di database aplikasi, ke warehouse, star schema, pengecekan kualitas data, sampai dbt.

Database aplikasi itu OLTP

Database aplikasi disebut OLTP (Online Transaction Processing): kerjanya ribuan query kecil, dan tiap query cuma menyentuh sedikit baris. Checkout menulis 1 pesanan dan 2 item. Halaman "Pesanan saya" membaca 1 pesanan lewat primary key-nya. Database ini juga disebut database produksi: yang dipakai pembeli sungguhan.

Pertanyaan pemilik beda jenis. Namanya OLAP (Online Analytical Processing): sedikit query besar yang membaca semua baris lalu menjumlahkannya per kelompok. Langsung di database produksi, query-nya begini (SQLite, jalan juga di Lab):

SELECT date(o.created_at, 'weekday 0', '-6 days') AS minggu,
       c.city AS kota,
       b.title AS judul,
       SUM(oi.qty) AS terjual
FROM order_items oi
JOIN orders o ON o.id = oi.order_id
JOIN customers c ON c.id = o.customer_id
JOIN books b ON b.id = oi.book_id
GROUP BY minggu, kota, judul
ORDER BY minggu, kota, terjual DESC, judul;

Bedanya kelihatan di rencana query SQLite (EXPLAIN QUERY PLAN). Kolom kanan diukur dengan SQLite di laptop, dengan 1 juta baris order_items:

Query Rencana SQLite Di 1 juta baris
Aplikasi: buka pesanan #6 SEARCH o USING INTEGER PRIMARY KEY, item lewat index sekitar 0,01 milidetik
Pemilik: paling laku per kota per minggu SCAN oi: semua baris dibaca sekitar 2,2 detik

SEARCH artinya langsung lompat ke baris yang dicari. SCAN artinya membaca tabel dari awal sampai akhir. Laporan pemilik sekitar 200 ribu kali lebih lama, dan jalannya di server yang sama dengan checkout. Selama dia jalan, CPU dan disk dipakai bareng pembeli yang sedang bayar. Belum lagi risikonya: orang yang mengetik query analitik di produksi bisa saja salah ketik UPDATE tanpa WHERE.

Cepat belum tentu benar

Ini hasil query tadi untuk minggu 28 September:

minggu kota judul terjual
2026-09-28 NULL Laskar Pelangi 1
2026-09-28 Bandung Bumi Manusia 2
2026-09-28 Jakarta Bumi Manusia 4
2026-09-28 Jakarta Laskar Pelangi 3
2026-09-28 Surabaya Cantik Itu Luka 2

(baris peringkat dua Bandung dan Surabaya, serta Ronggeng Dukuh Paruk di Jakarta, gak ditampilkan). Jakarta bilang Bumi Manusia 4 buku, dan itu salah. Itu jawaban tebakannya: query-nya cepat dan gak ada error, tapi jawabannya salah diam-diam. Penyebabnya tiga baris kotor:

Setelah dibersihkan, Jakarta minggu itu jadi Laskar Pelangi 3, Bumi Manusia 2. Totalnya juga berubah: data mentah bilang 23 buku senilai Rp 3.319.000, yang benar 21 buku senilai Rp 2.214.000.

Pipeline: dari sumber sampai jawaban

Jalur yang membawa data dari tempat lahirnya sampai jadi jawaban disebut pipeline. Bentuknya hampir selalu lima tahap:

Tahap Artinya Di Toko Buku
Sumber (source) tempat data lahir MySQL aplikasi; nanti juga file dari marketplace
Ingestion menyalin data dari sumber, tanpa mengganggunya tiap malam jam 01.00, salin pesanan kemarin
Storage tempat simpan khusus analitik data warehouse: database terpisah yang dirancang untuk query besar
Transformation membersihkan dan menyusun buang baris dobel, kota kosong jadi Tidak diketahui, harga diambil dari katalog
Serving menyajikan ke yang bertanya tabel ringkasan atau dashboard untuk pemilik

Hasil transformation-nya satu tabel penjualan di warehouse, dibuat dari salinan mentah raw_order_lines (19 baris pesanan yang sudah disambung dengan pelanggan dan bukunya):

CREATE TABLE penjualan AS
SELECT DISTINCT r.order_id, r.book_id,
       date(r.created_at) AS tanggal,
       date(r.created_at, 'weekday 0', '-6 days') AS minggu,
       COALESCE(r.city, 'Tidak diketahui') AS kota,
       r.title AS judul,
       r.qty,
       b.price AS harga
FROM raw_order_lines r
JOIN books b ON b.id = r.book_id;

Laporan pemilik sekarang membaca penjualan di warehouse. Database produksi cuma melayani pembeli.

Data engineer di antara peran lain

Peran Kerjanya di Toko Buku Hasilnya
Backend developer membangun checkout dan tabel MySQL-nya aplikasi yang jalan
Data engineer membangun dan merawat pipeline: menyalin, membersihkan, menyusun data tabel penjualan yang bersih dan terisi tiap pagi
Data analyst menganalisis data untuk insight bisnis: menjawab pertanyaan, bikin dashboard "Laskar Pelangi terlaris di Jakarta minggu 28 September"
Data scientist membuat model statistik atau machine learning perkiraan berapa Bumi Manusia laku minggu depan

Data engineer gak menganalisis data untuk mencari insight; dia memastikan datanya tersedia, bersih, dan bisa dipakai. Di tim kecil, satu orang sering memegang dua peran sekaligus.

Stack modern, tanpa hype

Tool yang sering kamu dengar, per tahap:

Untuk toko sebesar ini, cron, satu script Python, dan DuckDB atau Postgres sudah cukup. Tool besar baru masuk akal kalau datanya besar atau pipeline-nya sudah puluhan.

⚠️ Jebakan yang sering ketemu

TL;DR: Data engineering adalah memindahkan, membersihkan, dan menyusun data supaya orang lain bisa menjawab pertanyaan. Database aplikasi itu OLTP: banyak query kecil lewat primary key (SEARCH). Pertanyaan pemilik itu OLAP: membaca semua baris (SCAN), jadi lambat dan berisiko kalau dijalankan di produksi, dan tanpa dibersihkan jawabannya bisa salah: baris dobel bikin Bumi Manusia 4, padahal yang benar Laskar Pelangi 3. Pipeline punya lima tahap: sumber, ingestion, storage (warehouse), transformation, serving. Data engineer membangun dan merawat pipeline itu; data analyst memakai datanya untuk insight bisnis; data scientist membuat model.

Yang akan kamu pelajari