Data adalah bahan bakar keputusan modern, tetapi data mentah jarang siap pakai. Course ini membimbing Anda membangun fondasi hingga arsitektur yang mengubah data mentah menjadi data tepercaya: pipeline yang andal, warehouse yang tertata, dan sistem streaming yang berjalan terus-menerus.

Kita mulai dari peta besar peran Data Engineer, melanjutkan ke prasyarat teknis, Python dan SQL sebagai bekal harian, lalu naik bertahap ke ingestion, ETL dan ELT, data warehouse, data lake, orkestrasi, distributed systems, Spark, streaming, hingga topik lanjutan seperti data quality, keamanan, dan arsitektur. Delapan proyek terstruktur di bagian akhir memadatkan seluruh materi menjadi pengalaman membangun sistem data yang nyata.

Bab 1 Pengenalan Data Engineering

# Apa itu Data Engineering?

Pahami definisi data engineering, contoh konkret pengolahan data mentah menjadi data siap analisis, serta ruang lingkup pekerjaannya.

Buka →
# Peran Data Engineer

Telusuri tanggung jawab, keseharian kerja, dan keterampilan yang dibutuhkan seorang Data Engineer dalam tim data modern.

Buka →
# Data Engineering vs Data Science

Bandingkan fokus, pertanyaan, tools, dan output Data Engineering dengan Data Science, serta lihat bagaimana keduanya bekerja sama.

Buka →
# Data Engineering vs Data Analysis

Pahami perbedaan Data Engineering yang membangun jalur data dan Data Analysis yang menjawab pertanyaan bisnis dari data yang ada.

Buka →
# Data Engineering vs Data Architecture

Bedakan Data Architecture yang merancang cetak biru sistem data dari Data Engineering yang membangun dan menjalankannya.

Buka →
# Data Engineering vs Data Analytics

Lihat Data Analytics sebagai istilah payung di atas analysis dan science, serta bagaimana Data Engineering menjadi fondasi tingkat kematangannya.

Buka →
# Data Engineering vs MLOps

Bandingkan Data Engineering yang mengelola aliran data dengan MLOps yang mengoperasikan model machine learning di produksi, serta titik temunya.

Buka →
# Siklus Hidup Data

Telusuri perjalanan data dari generation, ingestion, storage, transformation, serving, hingga archival, disertai simulasi mini pipeline dengan Python.

Buka →
# Arsitektur Sistem Data

Pelajari susunan sistem data dari sumber, ingestion, storage berlapis, transformation, hingga serving, disertai simulasi tiga lapisan storage.

Buka →
# Batch Processing vs Stream Processing

Bandingkan batch processing yang mengolah data per periode dengan stream processing yang mengolah event seketika, lalu pelajari cara memilihnya.

Buka →
# Data Platform dan Data Infrastructure

Kenali data platform sebagai kumpulan komponen pengelola data dan data infrastructure sebagai fondasi komputasinya, plus pertimbangan beli versus bangun.

Buka →
# Studi Kasus Data Engineering

Telusuri dua studi kasus Indonesia: pipeline analitik pesanan e-commerce dan pemantauan transaksi fintech, dari sumber data hingga konsumen.

Buka →

Bab 2 Prasyarat Data Engineering

# Dasar Pemrograman

Peta kemampuan pemrograman dasar yang wajib dikuasai calon data engineer: variabel, tipe data, kontrol alur, dan fungsi, disertai contoh penyaringan data dan cek kesiapan diri.

Buka →
# Dasar Python

Peta pola Python yang dipakai data engineer setiap hari: comprehension, file IO, dan modul json, disertai contoh meringkas data ke berkas JSON dan cek kesiapan diri.

Buka →
# Dasar SQL

Peta kemampuan SQL minimal untuk data engineering — SELECT, WHERE, ORDER BY, agregasi, JOIN — diuji lewat SQLite bawaan Python, disertai cek kesiapan diri.

Buka →
# Dasar Database

Peta konsep database relasional untuk data engineering — tabel, primary key, foreign key, relasi, dan RDBMS — diuji lewat contoh JOIN di SQLite, disertai cek kesiapan diri.

Buka →
# Dasar Linux

Peta kemampuan Linux untuk data engineering — navigasi file, pipe, grep, dan permission — diuji lewat perintah nyata penyaringan log, disertai cek kesiapan diri.

Buka →
# Dasar Jaringan Komputer

Peta konsep jaringan untuk data engineering — IP, port, DNS, dan HTTP/HTTPS — diuji lewat perintah curl nyata, disertai cek kesiapan diri.

Buka →
# Dasar Git

Peta kemampuan Git untuk data engineering — repository, commit, branch, dan log — diuji lewat latihan riwayat perubahan nyata, disertai cek kesiapan diri.

Buka →
# Dasar Format Data

Peta format pertukaran data untuk data engineering — CSV, JSON, dan XML — dibandingkan dalam satu tabelan dan diuji lewat konversi CSV ke JSON nyata, disertai cek kesiapan diri.

Buka →
# Dasar Cloud Computing

Peta konsep cloud computing untuk data engineering — model layanan IaaS, PaaS, dan SaaS serta perannya dalam pipeline data modern — disertai cek kesiapan diri.

Buka →

Bab 3 Persiapan Lingkungan Kerja

# Instalasi Python

Periksa instalasi Python di sistem, pahami perbedaan perintah python dan python3, serta cara PATH menentukan interpreter yang dipakai terminal.

Buka →
# Virtual Environment

Buat lingkungan Python terisolasi per proyek dengan python3 -m venv, aktifkan dan nonaktifkan dari terminal, dan pahami mengapa isolasi dependensi wajib bagi data engineer.

Buka →
# Manajemen Dependensi

Catat dependensi proyek dalam requirements.txt, pahami penentu versi pip seperti == dan ~=, serta kenali alat modern seperti uv dan Poetry sebagai alternatif.

Buka →
# Instalasi Database

Siapkan tiga database utama course ini: SQLite yang sudah menyertai Python, DuckDB untuk analitik, dan PostgreSQL untuk kebutuhan produksi.

Buka →
# Penggunaan Command Line

Kuasai navigasi filesystem, pipe, redirect, grep, dan find melalui sesi terminal nyata untuk memeriksa data dan log pipeline sehari-hari.

Buka →
# Pengenalan Docker

Pahami konsep image, container, dan registry, lalu siapkan PostgreSQL lewat docker run dan docker-compose tanpa memasang apa pun ke sistem operasi.

Buka →
# Konfigurasi Environment

Baca konfigurasi pipeline lewat environment variable dengan os.environ dan os.getenv, kelola nilai per lingkungan lewat berkas .env, dan pisahkan pengaturan development, staging, dan production.

Buka →
# Struktur Proyek Data Engineering

Susun folder proyek pipeline yang rapi dengan pemisahan data, kode sumber, konfigurasi, dan pengujian agar mudah dinavigasi, diuji, dan dikembangkan bersama tim.

Buka →
# Pengelolaan Secrets

Hindari kredensial yang tertanam di kode dengan environment variable, tahan berkas .env dari Git lewat .gitignore, dan kenali konsep secrets manager untuk production.

Buka →

Bab 4 Python untuk Data Engineering

# Struktur Data Python

Pilih struktur data Python yang tepat untuk pipeline data: dict untuk record, list untuk batch, set untuk deduplikasi, dan tuple untuk baris yang bentuknya tetap.

Buka →
# Fungsi dan Modul

Bangun fungsi murni untuk transformasi data, kumpulkan dalam modul transformasi.py dengan fungsi bersih_harga(), lalu pakai lewat import dan kemas sebagai package minimal.

Buka →
# Pemrosesan File

Baca dan tulis berkas dengan benar di Python: mode open(), pathlib, modul csv dan json, newline, serta encoding utf-8, diuji lewat konversi CSV transaksi menjadi JSON.

Buka →
# Exception Handling

Kendalikan kegagalan pipeline dengan try/except/else/finally, exception spesifik seperti ValueError dan FileNotFoundError, serta custom exception DataValidationError untuk baris CSV kotor.

Buka →
# Logging

Catat kejadian pipeline dengan level INFO, WARNING, dan ERROR, basicConfig, serta logger per modul — dan pahami mengapa print() tidak cukup untuk pipeline produksi.

Buka →
# Pemrograman Berorientasi Objek

Rapikan pipeline dengan OOP: dataclass Transaksi untuk record, class PipelineStep untuk langkah, dan komposisi class Pipeline yang menjalankan daftar langkah berurutan.

Buka →
# Type Hints

Tuliskan kontrak tipe pada fungsi pipeline: anotasi dasar, Optional, list[dict[str, Any]], fungsi generik, dan pemeriksaan statis dengan mypy.

Buka →
# Iterators dan Generators

Pelajari iterator, generator, dan lazy evaluation untuk memproses file berjuta baris tanpa memuat seluruh data ke memori.

Buka →
# Context Managers

Pelajari blok with, context manager custom dengan __enter__ dan __exit__, serta contextlib.contextmanager untuk menjaga resource pipeline selalu dibersihkan.

Buka →
# Concurrent Processing

Pelajari GIL, ThreadPoolExecutor untuk beban I/O, dan ProcessPoolExecutor untuk beban CPU, beserta panduan memilih model konkurensi yang tepat.

Buka →
# Asynchronous Programming

Pelajari coroutine async/await, asyncio.gather untuk ingestion dari banyak endpoint, serta perbedaan async dibanding threading.

Buka →
# Pemrosesan Data Skala Besar

Pelajari chunking, streaming transform, dan pola map-reduce sederhana di Python murni, serta kapan waktu yang tepat berpindah ke pandas, DuckDB, atau Spark.

Buka →
# Pengujian Kode Python

Pelajari pytest untuk menguji pipeline data: test function, assert, fixture, parametrize, serta struktur test file untuk proyek data engineering.

Buka →

Bab 5 Dasar SQL

# Pengenalan SQL

Kenali apa itu SQL, kategori perintahnya, dan bangun skema database toko online lengkap dengan data contoh yang dipakai seluruh section ini.

Buka →
# SELECT dan Filtering

Pelajari cara memilih kolom dengan SELECT dan memfilter baris dengan WHERE memakai operator perbandingan, IN, BETWEEN, LIKE, IS NULL, serta kombinasi AND, OR, dan NOT.

Buka →
# Sorting dan Limiting

Urutkan hasil query dengan ORDER BY satu maupun multi kolom, batasi jumlah baris dengan LIMIT dan OFFSET, dan pahami perilaku NULL dalam pengurutan.

Buka →
# Agregasi Data

Ringkas banyak baris menjadi satu angka dengan fungsi agregasi COUNT, SUM, AVG, MIN, dan MAX, serta pahami perbedaan COUNT(*) vs COUNT(kolom) dan perilaku agregasi terhadap NULL.

Buka →
# GROUP BY dan HAVING

Kelompokkan baris dengan GROUP BY tunggal maupun multi kolom, saring hasil agregasi dengan HAVING, dan pahami urutan eksekusi logis sebuah query SQL.

Buka →
# JOIN

Gabungkan data antar tabel dengan INNER, LEFT, RIGHT, dan FULL OUTER JOIN, rapikan query multi-tabel, kuasai self-join, dan hindari jebakan duplikasi baris fan-out.

Buka →
# Subquery

Tulis query di dalam query: subquery skalar, subquery pada WHERE dengan IN dan EXISTS, derived table pada FROM, correlated subquery, dan kapan memakai subquery vs JOIN.

Buka →
# Common Table Expressions

Susun query analitik bertahap dengan klausa WITH — CTE dasar, CTE berantai, perbandingan dengan subquery, hingga recursive CTE untuk hierarki kategori, semuanya diuji nyata di SQLite.

Buka →
# Window Functions

Hitung agregasi tanpa meruntuhkan baris dengan OVER dan PARTITION BY — ROW_NUMBER, RANK, LAG, running total dengan SUM OVER, hingga pola deduplikasi baris terbaru per pelanggan.

Buka →
# Conditional Expressions

Bentuk logika if-else di dalam SQL dengan CASE WHEN, agregasi kondisional SUM(CASE ...), serta COALESCE dan NULLIF untuk menangani nilai NULL — diuji nyata di SQLite.

Buka →
# Manipulasi Data

Tulis perubahan ke tabel dengan INSERT multi nilai, UPDATE dan DELETE yang selalu berpasangan dengan WHERE, UPSERT ON CONFLICT untuk pipeline idempotent, dan klausa RETURNING di PostgreSQL.

Buka →
# Transaksi Database

Pastikan rangkaian perubahan berjalan utuh dengan BEGIN, COMMIT, ROLLBACK, dan SAVEPOINT — diuji lewat skenario transfer stok yang gagal di tengah proses.

Buka →
# Optimasi Query Dasar

Diagnosis query lambat dengan EXPLAIN QUERY PLAN, alasan mengapa SELECT * buruk, pembuatan index dengan perbandingan plan sebelum-sesudah, WHERE yang ramah index, dan LIMIT.

Buka →

Bab 6 Database dan Penyimpanan Data

# Konsep Database Relasional

Pahami tabel, baris, kolom, tipe data, dan perbandingan PostgreSQL, MySQL, dan SQLite sebagai fondasi penyimpanan data terstruktur.

Buka →
# Pemodelan Data

Rancang struktur data sebelum membuat tabel: entitas, atribut, relasi, dan kardinalitas 1-1, 1-N, N-N dengan studi kasus model data toko online.

Buka →
# Normalisasi Database

Rapikan tabel bertahap menuju 1NF, 2NF, dan 3NF dengan contoh nyata tabel pesanan toko online di SQLite, plus panduan kapan normalisasi sebaiknya dihentikan.

Buka →
# Denormalisasi

Mengapa data warehouse sengaja menggabungkan tabel: trade-off join yang mahal versus data redundan, dengan contoh tabel laporan penjualan yang dibangun dari join empat tabel.

Buka →
# Primary Key dan Foreign Key

Pilih kunci natural atau surrogate, lalu uji perilaku ON DELETE CASCADE, RESTRICT, dan SET NULL beserta constraint NOT NULL, UNIQUE, dan CHECK di SQLite.

Buka →
# Indexing

Percepat pencarian data dengan B-tree index: CREATE INDEX, composite index, aturan kolom kiri, dan EXPLAIN QUERY PLAN sebelum-sesudah pada tabel 200 ribu baris.

Buka →
# Query Planning

Baca rencana eksekusi dengan EXPLAIN dan EXPLAIN QUERY PLAN: urutan join, full scan versus index scan, automatic index, dan statistik ANALYZE yang mengubah pilihan planner.

Buka →
# Transaksi dan ACID

Empat jaminan Atomicity, Consistency, Isolation, dan Durability diuji nyata lewat transfer saldo yang gagal di tengah jalan, penolakan constraint, dan percobaan dirty read.

Buka →
# Isolation Levels

Pahami anomali konkurensi seperti dirty read dan phantom read, empat standar isolation level, lalu simulasikan race condition dua penulis di SQLite dengan Python threading.

Buka →
# Concurrency Control

Bandingkan kunci pesimistis, kontrol optimistis, dan MVCC, pahami deadlock serta granularitas lock, lalu uji nyata BEGIN IMMEDIATE pada dua koneksi SQLite.

Buka →
# Connection Pooling

Pahami mengapa membuka koneksi database itu mahal, cara kerja connection pool, implementasi pool mini dengan queue dan threading, hingga panduan menentukan ukuran pool.

Buka →
# Backup dan Recovery

Pelajari strategi backup full, incremental, logical, dan physical, perintah pg_dump dan pg_basebackup, backup online SQLite lewat Python, serta konsep RPO, RTO, dan aturan 3-2-1.

Buka →
# Replikasi Database

Pahami arsitektur master-replica, perbedaan replikasi sinkron dan asinkron, streaming replication PostgreSQL, read replica untuk analytics, serta cara mengelola replication lag.

Buka →
# Pemilihan Sistem Penyimpanan

Petakan kebutuhan ke kategori penyimpanan yang tepat — OLTP, OLAP, key-value, document, search, dan time-series — lengkap dengan decision table dan perbandingan nyata SQLite vs DuckDB.

Buka →

Bab 7 Format dan Serialisasi Data

# CSV

Pelajari struktur CSV menurut RFC 4180, membaca dan menulis data dengan module csv Python, jebakan tipe string dan encoding, hingga deteksi delimiter otomatis.

Buka →
# JSON

Pelajari pemetaan tipe data JSON ke Python, serialisasi dengan json.dumps dan json.loads, struktur nested, serta jebakan key duplikat dan NaN.

Buka →
# JSON Lines

Pelajari format JSON Lines untuk streaming: baca baris demi baris secara lazy, tambahkan data dengan mode append, dan bandingkan JSONL dengan array JSON.

Buka →
# XML

Pelajari struktur tree, element, dan attribute XML, parsing serta penulisan dengan xml.etree.ElementTree, penanganan namespace, dan kapan XML masih dipakai.

Buka →
# Avro

Pelajari format biner Avro: schema berbasis JSON, baca-tulis file .avro dengan fastavro, schema evolution dengan default, dan ukuran file dibanding JSON Lines.

Buka →
# Parquet

Pelajari format kolom Parquet: baca-tulis table dengan pyarrow, row group dan kompresi per kolom, column pruning, serta perbandingan ukuran nyata dengan CSV.

Buka →
# ORC

Pelajari format kolom ORC untuk ekosistem Hadoop: anatomi stripe dan row index, baca-tulis dengan pyorc, statistik min/max untuk predicate pushdown, serta perbandingan dengan Parquet.

Buka →
# Protobuf

Pelajari Protocol Buffers: skema .proto proto3, field number, serialisasi biner lewat python API, format wire, dan perbandingan ukuran nyata dengan JSON.

Buka →
# Schema dan Data Types

Pelajari schema sebagai kontrak data: tipe logis vs fisik, nullable, pemetaan tipe antar SQL, Avro, Parquet, dan Protobuf, serta konversi string ke angka.

Buka →
# Schema Evolution

Pelajari schema evolution: kompatibilitas backward, forward, dan full, aturan evolusi aman, serta uji nyata membaca file Avro v1 dengan schema v2 memakai fastavro.

Buka →
# Kompresi Data

Pelajari kompresi data untuk pipeline: file level vs kolom level, karakteristik gzip, snappy, zstd, dan lz4, plus benchmark nyata ukuran dan kecepatan dengan pyarrow.

Buka →
# Memilih Format Data

Kerangka memilih format data yang tepat: CSV untuk pertukaran, JSON Lines untuk streaming, Parquet untuk analitik, dengan studi kasus nyata.

Buka →

Bab 8 Pengumpulan dan Ingestion Data

# Konsep Data Ingestion

Pahami apa itu data ingestion, posisinya di pipeline data, pola push dan pull, sumber data umum, serta tantangan utamanya.

Buka →
# Batch Ingestion

Pelajari pola batch ingestion berbasis jadwal dan jendela waktu, lengkap dengan implementasi mini penggabungan CSV transaksi harian.

Buka →
# Incremental Ingestion

Pelajari teknik incremental ingestion dengan watermark dan cursor untuk mengambil hanya data baru pada setiap run.

Buka →
# Full Load vs Incremental Load

Bandingkan strategi full load dan incremental load dari sisi kompleksitas, durasi, histori, dan kapan masing-masing masuk akal dipakai.

Buka →
# Ingestion dari File

Bangun ingestion dari file dengan pola folder landing, pengenalan pola nama, validasi dasar, move-to-processed, dan penanganan file setengah jadi.

Buka →
# Ingestion dari Database

Ekstraksi data dari database dengan SELECT kolom eksplisit, keyset pagination, snapshot konsisten, dan pengantar change data capture.

Buka →
# Ingestion dari API

Pelajari ingestion dari REST API dengan library requests: autentikasi header, respons JSON, dan penanganan galat dasar dengan server tiruan lokal.

Buka →
# Ingestion dari Webhook

Bangun penerima webhook dengan verifikasi signature HMAC, idempotency key, dan konsep perlindungan replay, diuji dengan handler mini berbasis http.server.

Buka →
# Ingestion dari Message Queue

Pelajari pola ingestion dari message queue: decoupling producer dan consumer, consumer loop dengan acknowledgment, serta semantik at-least-once lewat queue.Queue.

Buka →
# Change Data Capture

Pelajari Change Data Capture: keluar dari pola polling, memanfaatkan log transaksi PostgreSQL, format event CDC, serta simulasi CDC dengan changelog SQLite dan penerapannya ke target.

Buka →
# Menangani Pagination API

Pelajari dua strategi pagination API, page-based dan cursor-based, cara melakukan loop sampai halaman kosong, serta jebakan yang sering menjebak pipeline ingestion.

Buka →
# Rate Limiting dan Retries

Pelajari cara menangani status 429, menghormati header Retry-After, menerapkan exponential backoff dengan jitter, serta pola circuit breaker agar pipeline tetap sopan terhadap API.

Buka →
# Idempotent Ingestion

Pelajari cara membangun ingestion yang idempotent: pemilihan dedup key, pola upsert, file staging dengan atomic move, serta simulasi ingestion dua kali dengan hasil tetap sama.

Buka →
# Validasi Data saat Ingestion

Pelajari validasi data di gerbang ingestion: fail fast, pemeriksaan schema dan nilai, pola karantina untuk baris bermasalah, serta validator baris dengan SQLite dan berkas karantina.

Buka →
# Menangani Kegagalan Ingestion

Pelajari cara menangani kegagalan ingestion: klasifikasi kegagalan transien dan permanen, retry yang aman, checkpoint untuk resume, dead letter queue, serta observability dasar.

Buka →

Bab 9 Data Transformation: ETL dan ELT

# Pengenalan ETL dan ELT

Pahami definisi ETL dan ELT, kapan masing-masing pola dipilih, evolusi menuju warehouse modern, lalu bangun mini pipeline Python dari CSV ke SQLite.

Buka →
# Ekstraksi Data

Kenali ragam sumber data, seleksi kolom, sampling untuk eksplorasi, dan ekstraksi bertahap dengan generator untuk file besar.

Buka →
# Transformasi Data

Pelajari lima kategori transformasi data — cleaning, konversi tipe, derivasi kolom, agregasi, dan join — dengan contoh nyata membersihkan string, mengonversi tanggal, dan menghitung total.

Buka →
# Pemuatan Data

Bandingkan pola load penuh, append, truncate-and-load, dan upsert, lalu uji nyata performa executemany dibanding INSERT satu per satu di SQLite.

Buka →
# Transformasi dengan Python

Tulis transformasi bergaya functional dengan fungsi murni dan compose, kenali pandas melalui groupby sederhana, dan pahami kapan memilih stdlib atau pandas.

Buka →
# Transformasi dengan SQL

Geser transformasi ke dalam database dengan CREATE TABLE AS SELECT, CASE, window function, dan upsert, melalui contoh nyata staging ke dimensi di SQLite.

Buka →
# Join dan Agregasi Data

Pilih strategi join untuk tabel kecil dan tabel besar, bangun agregasi bertingkat dari penjualan harian ke bulanan per kota, dan hindari jebakan agregat-dari-agregat.

Buka →
# Deduplikasi Data

Telusuri sumber duplikat dari reprocess dan at-least-once delivery, bandingkan dedup kunci dengan dedup konten, dan terapkan keep-latest dengan ROW_NUMBER serta dict Python.

Buka →
# Incremental Transformation

Pelajari cara memproses hanya data baru dengan watermark, lalu menggabungkan hasil delta ke tabel agregat penjualan harian tanpa membangun ulang seluruh riwayat.

Buka →
# Idempotent Transformation

Pahami transformasi yang aman dijalankan ulang, bandingkan pola append yang menduplikasi data dengan full rebuild per partisi, dan buktikan hasil identik setelah dua eksekusi.

Buka →
# Late Arriving Data

Tangani data yang tiba setelah partisi tanggalnya selesai dihitung: pahami event_time vs waktu kedatangan, deteksi baris terlambat, rebuild partisi dalam jendela toleransi, dan lakukan restatement.

Buka →
# Data Reconciliation

Verifikasi data antara sumber dan target dengan pemeriksaan jumlah baris, checksum agregat, dan perbandingan sampel, lalu lacak mismatch hingga ke akar masalahnya.

Buka →
# Penanganan Data yang Gagal

Terapkan pola dead letter untuk mengkarantina baris yang gagal transformasi, pisahkan penyebab data dan kode, lalu jalankan retry per baris hingga bersih.

Buka →
# Pemrosesan Ulang Data

Jalankan ulang transformasi atas data historis secara aman: pahami alasan reprocess, syarat idempotent dan versioned output, lalu perbaiki partisi tertentu dengan kode v2.

Buka →
# Memilih ETL atau ELT

Putuskan arsitektur transformasi dengan kerangka keputusan yang mempertimbangkan skala data, biaya compute, tooling dbt, keahlian tim, dan regulasi — dilengkapi tabel perbandingan, diagram keputusan, dan tiga studi kasus.

Buka →

Bab 10 Data Modeling dan Data Warehouse

# Konsep Data Warehouse

Pahami definisi data warehouse menurut Inmon, perbedaan pola OLAP dan OLTP, alasan pemisahan dari database operasional, serta komponen staging, core warehouse, dan data marts.

Buka →
# Operational vs Analytical Database

Bandingkan pola beban, skema, indexing, dan concurrency database operasional (OLTP) dengan database analitik (OLAP) melalui query kontras yang diuji nyata di SQLite.

Buka →
# Dimensional Modeling

Pelajari filosofi Kimball, empat langkah desain dari proses bisnis hingga fakta, perbandingan star schema dengan 3NF, serta istilah fact, dimension, attribute, dan measure additive, semi-additive, non-additive.

Buka →
# Star Schema

Bangun star schema lengkap untuk toko online dengan fact_pesanan dan empat dimensi, lengkap dengan DDL, query join analitik yang diuji nyata di SQLite, serta kelebihan strukturnya.

Buka →
# Snowflake Schema

Normalisasi dimensi menjadi snowflake schema, bandingkan jumlah join, penyimpanan, dan perawatan dengan star schema melalui DDL dan query kontras yang diuji nyata di SQLite.

Buka →
# Fact Table dan Dimension Table

Kuasai jenis fact table (transaction, periodic snapshot, accumulating snapshot) serta dimensi khusus: degenerate, conformed, junk, dan role-playing dimension dengan contoh yang diuji nyata di SQLite.

Buka →
# Grain dalam Data Model

Pahami grain sebagai definisi satu baris fact table, pelajari mengapa grain wajib dideklarasikan sebelum modeling, dan buktikan agregat yang keliru versus benar dengan uji nyata di SQLite.

Buka →
# Surrogate Key

Pahami perbedaan natural key dan surrogate key, tiga alasan warehouse membutuhkan surrogate key, serta pola lookup saat load untuk membuat dan memakai ulang key integer.

Buka →
# Slowly Changing Dimensions

Kuasai lima tipe slowly changing dimensions, implementasi SCD Type 2 dengan kolom valid_from, valid_to, dan is_current, serta cara fact table bergabung ke versi dimensi yang tepat pada waktu kejadian.

Buka →
# Snapshot Tables

Bedakan periodic snapshot dan accumulating snapshot, pilih strategi full atau incremental snapshot, lalu bangun snapshot stok harian beserta query agregatnya secara nyata.

Buka →
# Data Marts

Bangun data mart per departemen dari warehouse inti, pilih antara dependent dan independent mart, pahami trade-off konsistensinya, lalu ciptakan mart_penjualan dari fact_pesanan melalui CTAS.

Buka →
# Semantic Layer

Definisikan metrik seperti pendapatan dan pelanggan aktif tepat satu kali, lalu pakai definisi yang sama di semua dashboard melalui semantic layer berbasis SQL view dan konsep dbt metrics.

Buka →
# Data Warehouse vs Data Lake

Bandingkan data warehouse dan data lake: struktur terkurasi versus data mentah semua format, schema-on-write versus schema-on-read, perbedaan biaya, dan kapan masing-masing layak dipakai.

Buka →
# Data Warehouse vs Lakehouse

Telusuri evolusi dari warehouse ke lake lalu lakehouse: object storage, table format, dan engine sebagai tiga komponen utama, keunggulan beserta trade-off, dan posisi industri 2026 seputar Iceberg, Delta, dan Hudi.

Buka →

Bab 11 Data Lake dan Lakehouse

# Konsep Data Lake

Pahami definisi data lake, alasan kemunculannya, prinsip schema-on-read, dan risiko data swamp ketika tata kelola diabaikan.

Buka →
# Object Storage

Pelajari konsep object storage, bucket, path convention, presigned URL, dan cara menirunya secara lokal dengan pathlib.

Buka →
# Data Lake Architecture

Susun data lake menjadi zona raw, staging, curated, dan serving dengan alur ingestion yang jelas, metadata tercatat, dan kontrol akses per zona.

Buka →
# Zona Data Raw dan Curated

Terapkan zona raw yang immutable dan zona curated berschema Parquet lewat pipeline nyata: JSONL mentah, validasi, karantina, lalu penulisan per partisi tanggal.

Buka →
# Partitioning Data

Pahami hive-style partitioning, cara memilih kolom partisi, dan bukti partition pruning nyata lewat DuckDB EXPLAIN.

Buka →
# File Layout dan Small Files

Pahami row group, ukuran berkas Parquet ideal, bahaya small files, dan kompaksi 50 berkas kecil menjadi berkas besar dengan pyarrow.

Buka →
# Table Formats

Pahami apa yang diselesaikan table formats: ACID di object storage, schema evolution, time travel, serta anatomi dan perbandingan Iceberg, Delta Lake, dan Hudi.

Buka →
# Apache Iceberg

Bedah arsitektur metadata Apache Iceberg — metadata.json, manifest list, manifest file, hingga data file — lalu praktik nyata membuat tabel, menulis, membaca, dan mengevolusikan schema dengan pyiceberg.

Buka →
# Delta Lake

Praktik Delta Lake dengan delta-rs: transaksi _delta_log berformat JSON, time travel antar versi, schema evolution, dan riwayat commit — semuanya diuji nyata secara lokal.

Buka →
# Apache Hudi

Pahami Apache Hudi secara konseptual: timeline di direktori .hoodie, file group dengan index untuk upsert tingkat record, serta perbedaan tabel Copy on Write dan Merge on Read.

Buka →
# Schema Enforcement

Uji nyata schema enforcement di Delta Lake: penulisan dengan schema salah ditolak dengan galat asli, lalu evolusi kolom yang aman dilakukan lewat schema_mode merge.

Buka →
# Time Travel dan Versioning Data

Query versi lampau tabel Delta: tiga penulisan menghasilkan tiga keadaan yang bisa dibandingkan, dibaca dengan snapshot isolation, dan dipulihkan dengan restore — divalidasi retensi log dan vacuum.

Buka →
# Memilih Arsitektur Lakehouse

Tutup section dengan kerangka keputusan: warehouse-only, lake-only, atau lakehouse — dipertimbangkan dari volume, beban ML, tim, biaya, dan investasi yang sudah ada, lengkap dengan pemilihan table format dan tiga studi kasus.

Buka →

Bab 12 Orkestrasi Workflow

# Konsep Workflow Orchestration

Pahami mengapa cron tidak cukup untuk pipeline modern, apa saja yang dikerjakan workflow orchestrator, dan kenali komponen DAG, task, scheduler, dan executor.

Buka →
# Dependency dan Task

Bangun task graph dengan Python murni: pahami relasi upstream-downstream, tiga tipe dependency, pola serial-parallel-diamond, dan eksekusi manual sederhana.

Buka →
# Scheduling

Kuasai penjadwalan pipeline: interval vs cron expression, data interval dan logical date, catchup, timezone, backfill, lalu hitung next run dengan parser cron mini.

Buka →
# Retries dan Timeouts

Tangani kegagalan task dengan retry, exponential backoff, jitter, dan timeout, serta kenali kapan kegagalan permanen justru tidak boleh dicoba ulang.

Buka →
# Backfill

Jalankan ulang periode lampau dengan aman: pahami alasan backfill, syarat idempotent, strategi bertahap, dan buktikan keamanannya lewat simulasi 7 hari yang dijalankan dua kali.

Buka →
# Parameterisasi Workflow

Buat workflow reusable dengan parameter run, template {{ ds }}, config file, serta default dan override command line lewat argparse.

Buka →
# Monitoring Workflow

Pantau kesehatan pipeline: status run, durasi, SLA miss, dan kegagalan; bedah UI versus alert, metrik success rate dan durasi p95, lalu bangun pelacak status run mini dengan Python.

Buka →
# Apache Airflow

Bedah arsitektur dan konsep Apache Airflow 3: scheduler, executor, metadata DB, penulisan DAG dengan TaskFlow API, hingga konsep deployment Docker Compose.

Buka →
# Dagster

Kenali paradigma asset-oriented Dagster 1.x: software-defined asset, asset graph dengan lineage bawaan, materialization, schedule dan sensor, hingga kekuatan dan kelemahannya.

Buka →
# Prefect

Tulis workflow sebagai Python murni dengan Prefect 3.x: dekorator @flow dan @task, retry bawaan, deployment, konsep work pool dan worker, hingga kekuatan flow yang dinamis.

Buka →
# Event-Driven Workflows

Picu pipeline dari kejadian, bukan jadwal: pola sensor, message queue, dan webhook, latensi rendah, simulasi dispatcher event nyata, serta trade-off yang menyertainya.

Buka →
# Memilih Workflow Orchestrator

Tutup section dengan kerangka memilih orchestrator: faktor ekosistem tim, model mental aset versus task, infrastruktur dan biaya, tabel perbandingan Airflow, Dagster, dan Prefect, tiga studi kasus, serta fakta industri 2026.

Buka →

Bab 13 Data Pipeline Engineering

# Merancang Data Pipeline

Kerangka enam langkah merancang data pipeline dari kebutuhan hingga monitoring, lengkap dengan studi kasus pipeline order analytics untuk toko online.

Buka →
# Pipeline Batch

Pahami karakteristik pipeline batch, jendela eksekusi, dan pola read-process-write per partisi, lalu bangun pipeline batch harian dari CSV ke SQLite lengkap dengan ringkasan penjualan.

Buka →
# Pipeline Incremental

Bangun pipeline incremental dengan watermark pada state file dan merge upsert ke tabel target, lalu buktikan lewat tiga run bahwa data lama tidak diproses ulang.

Buka →
# Dependency Management

Kelola dependency antarpipeline lewat dataset sebagai kontrak, bedakan task-level vs pipeline-level serta dataset vs service dependency, dan bangun runner dengan topological sort yang menolak siklus.

Buka →
# Idempotency dan Retries

Rancang pipeline idempotent dengan path output tetap, dedup, dan upsert, lalu buktikan lewat perbandingan hash bahwa dua eksekusi menghasilkan hasil identik sehingga retry selalu aman.

Buka →
# Checkpointing

Simpan progres pipeline di checkpoint per partisi, resume dari titik kegagalan tanpa mengulang pekerjaan, dan pahami trade-off granularitas checkpoint.

Buka →
# Pipeline Testing

Uji pipeline bertingkat dengan pytest: unit test untuk transform, integration test per stage, data assertion, dan smoke test setelah load.

Buka →
# Pipeline Recovery

Pulihkan pipeline yang gagal di tengah jalan: retry task, resume dari checkpoint, re-run partisi, validasi output parsial, dan komunikasi status ke downstream.

Buka →
# Pipeline Versioning

Catat versi kode pipeline dan versi skema output: git tag, tabel metadata run, serta migrasi skema v1 ke v2 yang berjalan paralel.

Buka →
# Pipeline Reusability

Rancang pipeline reusable: config-driven, fungsi generik, dan rule of three, dengan satu kode yang melayani dua deployment berbeda sumber.

Buka →
# Pipeline Performance

Profil pipeline per stage, temukan bottleneck I/O, CPU, atau serialisasi, lalu perbaiki dengan batching dan paralelisasi yang terukur.

Buka →
# Dokumentasi Pipeline

Tulis dokumentasi pipeline yang lengkap: README, kontrak input-output, data dictionary, dan runbook kegagalan yang bisa diverifikasi otomatis.

Buka →

Bab 14 Distributed Systems untuk Data

# Dasar Distributed Systems

Pahami mengapa platform data modern berjalan di banyak mesin, bagaimana node berkoordinasi lewat pertukaran pesan, dan mengapa kegagalan parsial mengubah cara kita mendesain sistem data.

Buka →
# Horizontal vs Vertical Scaling

Bandingkan dua strategi menambah kapasitas — memperbesar satu mesin atau menambah mesin baru — lengkap dengan benchmark kecil sekuensial versus thread versus process.

Buka →
# Partitioning dan Sharding

Bagi dataset besar ke beberapa shard dengan range atau hash, kenali masalah skew pada kunci panas, dan kurangi biaya rebalancing dengan consistent hashing.

Buka →
# Replication

Jaga data tetap tersedia dengan salinan di beberapa node: pahami model leader-follower, replication lag yang membuat bacaan basi, dan failover yang bisa kehilangan tulisan.

Buka →
# Consistency Models

Pahami kontrak konsistensi pada sistem tereplikasi, lihat anomali eventual consistency seperti pelanggaran monotonic reads, dan perbaikinya dengan session guarantees.

Buka →
# Fault Tolerance

Jaga layanan tetap berjalan saat komponen gagal: retry dengan exponential backoff dan jitter, deteksi node berhenti lewat heartbeat, dan idempotency key untuk tulisan yang aman diulang.

Buka →
# Distributed Coordination

Pelajari masalah koordinasi lintas node, leader election, distributed lock dengan TTL, evolusi ZooKeeper ke KRaft, dan strategi meminimalkan koordinasi.

Buka →
# Data Locality

Pahami prinsip memindahkan komputasi ke data: hierarki bandwidth antara disk lokal dan jaringan, simulasi nyata pengiriman data vs pengiriman tugas, dan cara menjaga lokalitas saat mendesain pipeline.

Buka →
# Parallel Processing

Pelajari pemrosesan paralel untuk data: data parallelism vs task parallelism, pembagian partisi kerja, benchmark nyata multiprocessing, dan batas percepatan menurut Hukum Amdahl.

Buka →
# Distributed Transactions

Pahami transaksi lintas node: atomicity lokal pada SQLite, protokol two-phase commit beserta kasus blocking, dan pola saga dengan aksi kompensasi sebagai alternatifnya.

Buka →
# Trade-off Distributed Systems

Rangkum peta trade-off distributed systems: CAP theorem dan PACELC, anggaran biaya replikasi, matriks keputusan mekanisme, dan kapan sebaiknya tidak mendistribusikan data.

Buka →

Bab 15 Pemrosesan Data Skala Besar

# Konsep Big Data Processing

Pahami kapan data disebut big data melalui tiga V, batas mesin tunggal, prinsip memindahkan komputasi ke data, model cluster computing, dan posisi Apache Spark dalam ekosistem data.

Buka →
# Apache Spark

Bedah arsitektur driver, executor, dan cluster manager Apache Spark, buat SparkSession pertama, lalu pahami lazy evaluation melalui transformation dan action yang dijalankan nyata.

Buka →
# Spark DataFrames

Bangun DataFrame TokoKita dari data mentah, kuasai select, filter, withColumn, dan groupBy, kontraskan schema inferensi dengan schema eksplisit, dan pahami bedanya dengan pandas.

Buka →
# Spark SQL

Daftarkan DataFrame sebagai temp view, jalankan query SQL standar di atasnya, campur SQL dengan DataFrame API, dan kelola managed table lewat katalog Spark.

Buka →
# Spark Joins

Kuasai inner, left, dan full outer join di Spark, waspadai fan-out yang melipatgandakan baris tanpa sengaja, dan kurangi shuffle dengan broadcast join.

Buka →
# Spark Partitioning

Bedah repartition versus coalesce, tulis Parquet terpartisi dengan partitionBy, buktikan partition pruning saat membaca dengan filter, dan pahami masalah berkas kecil.

Buka →
# Spark Performance

Baca execution plan dengan explain(), ukur efek cache() pada agregasi berulang, bandingkan biaya UDF Python versus fungsi built-in, dan pahami peran AQE.

Buka →
# Spark Structured Streaming

Pahami model micro-batch Structured Streaming, agregasi window berbasis event time dengan watermark, output mode, dan jenis sink lewat demo rate source yang dieksekusi nyata.

Buka →
# Distributed Data Processing

Telusuri bagaimana partition menjadi task yang dijadwalkan ke executor, ukur sebaran baris antar task dari eksekusi nyata, dan bandingkan pemrosesan cluster dengan pandas atau DuckDB satu mesin.

Buka →
# Memory Management

Bedah unified memory manager Spark, hitung pool execution dan storage dari heap, lalu paksakan dan ukur spill nyata dengan heap 512 MB pada orderBy empat juta baris.

Buka →
# Shuffle dan Skew

Pahami shuffle sebagai Exchange di execution plan, buktikan data skew lewat kunci tamu 80000 baris versus 4000, lalu pecahnya dengan salting dan agregasi dua tahap.

Buka →
# Kapan Menggunakan Spark

Timbang biaya tetap Spark dengan benchmark jujur pandas versus PySpark, bandingkan Spark dengan pandas dan DuckDB, dan ikuti diagram keputusan sebelum membangun cluster.

Buka →

Bab 16 Streaming Data

# Konsep Stream Processing

Kenali unbounded data, anatomi sistem stream processing dari source hingga sink, dan cara state diperbarui secara increment ketika event pesanan terus mengalir tanpa henti.

Buka →
# Batch vs Stream Processing

Ukur langsung agregasi yang sama dalam dua gaya — batch menunggu data lengkap lalu memproses sekali jalan, stream memperbarui hasil per event — dan baca perbedaan nyatanya pada hasil antara.

Buka →
# Event-Driven Architecture

Bangun arsitektur yang berkomunikasi lewat event: envelope standar dengan id unik, pola publish-subscribe di atas event bus, serta dedup untuk menoleransi redelivery.

Buka →
# Message Queues

Pelajari peran antrean pesan untuk melepas kopling producer dan consumer, dua pola distribusinya, dan bukti nyata backpressure lewat eksperimen bounded queue berbasis thread.

Buka →
# Apache Kafka

Kenalkan platform streaming terdistribusi paling umum: log replikasi di disk sebagai pengganti antrean memori, mode KRaft tanpa ZooKeeper sejak versi 4.x, dan klien Python producer-consumer.

Buka →
# Topics, Partitions, dan Offsets

Bedah tiga fondasi penyimpanan Kafka: topic sebagai kategori event, partition sebagai unit paralelisme sekaligus jaminan urutan, dan offset sebagai alamat pesan — lengkap dengan simulasi rebalance consumer group.

Buka →
# Producers dan Consumers

Bedah mekanika producer dan consumer Kafka: record batch, konfigurasi acks, idempotent producer, poll loop, serta simulasi retry yang memunculkan duplikat.

Buka →
# Consumer Groups

Bagi beban topic ke banyak consumer dengan consumer group, pahami protokol rebalance stop-the-world, lalu bandingkan keanggotaan dinamis dengan static membership lewat simulasi rolling restart.

Buka →
# Delivery Semantics

Uji at-most-once, at-least-once, dan exactly-once lewat simulasi crash di titik yang sama, lalu pahami transaksi Kafka untuk pipeline consume-process-produce yang bebas duplikat.

Buka →
# Event Time vs Processing Time

Bedakan jam kejadian di payload dari jam penerimaan di prosesor, buktikan lewat simulasi bahwa pesanan bisa tiba teracak, dan lihat mengapa windowing berbasis waktu proses merusak laporan.

Buka →
# Windowing

Pecah stream tak berujung menjadi potongan berhingga dengan tumbling, sliding, dan session window, lalu praktikkan ketiganya lewat windower Python murni di atas stream klik produk.

Buka →
# Watermarks dan Late Events

Pelajari cara watermark = event time maksimum - allowed lateness mengklasifikasikan late event, menutup window, dan membuang event terlambat lewat simulasi Python murni serta eksekusi nyata Spark.

Buka →
# Stream Joins

Gabungkan stream dengan tabel statis untuk enrichment dan stream dengan stream lewat interval join berbasis watermark, lengkap dengan dua eksekusi nyata PySpark dan aturan tiap tipe join.

Buka →
# Schema Registry

Kelola evolusi skema event lewat schema registry: skema Avro, mode kompatibilitas BACKWARD sampai FULL, skenario evolusi yang aman versus yang merusak, dan alur registrasi-serialisasi lintas producer dan consumer.

Buka →
# Stream Processing dengan Spark

Bangun pipeline streaming Spark yang tahan gagal: state store dan isi direktori checkpoint dari eksekusi nyata, enrichment hasil agregasi lewat stream-static join, pola foreachBatch, dan tiga syarat exactly-once end-to-end.

Buka →
# Monitoring Streaming Pipeline

Pantau kesehatan pipeline streaming: rumus consumer lag per partisi, metrik lastProgress Spark seperti inputRowsPerSecond dan durationMs, ambang SLO, serta strategi alert - semuanya lewat simulasi dan eksekusi nyata.

Buka →

Bab 17 Database Analitik dan Query Engine

# Konsep Analytical Query Engine

Pahami perbedaan beban kerja OLTP dan OLAP, kenali komponen analytical query engine, dan lihat demo nyata query analitik yang sama di SQLite versus DuckDB.

Buka →
# Columnar Storage

Bedah layout penyimpanan per kolom: kenapa query dua kolom dari dua belas kolom jauh lebih cepat di Parquet dibanding CSV, dengan bukti column pruning dari rencana eksekusi DuckDB.

Buka →
# Vectorized Query Execution

Bedah model eksekusi row-at-a-time versus vectorized, lalu ukur sendiri bedanya lewat benchmark satu juta baris: Python loop, NumPy, dan DuckDB pada data yang identik.

Buka →
# DuckDB

Gunakan DuckDB sebagai engine OLAP di dalam proses Python: read_csv_auto, ASOF JOIN, agregasi LIST/STRUCT, hingga ATTACH lintas database — semuanya dengan output eksekusi nyata.

Buka →
# Trino

Kenali arsitektur coordinator/worker Trino, katalog konektor ke banyak sumber data, dan pola SQL lintas katalog untuk query terfederasi di skala klaster.

Buka →
# ClickHouse

Pelajari ClickHouse untuk analitik real-time: tabel MergeTree dengan sparse primary index, arsitektur shard dan replica, serta konfigurasi server yang divalidasi strukturnya.

Buka →
# Query Optimization

Baca rencana eksekusi EXPLAIN ANALYZE di DuckDB, buktikan predicate pushdown dan row group skipping pada Parquet, dan pahami mengapa penulisan SQL yang berbeda bisa menghasilkan rencana yang sama.

Buka →
# Distributed Query Processing

Bedah pola MPP coordinator/worker lewat simulasi nyata: pecah satu juta pesanan ke delapan shard Parquet, hitung agregasi parsial paralel, lalu buktikan partition pruning membaca satu dari delapan berkas.

Buka →
# Federated Query

Jalankan satu query SQL atas tiga sumber berbeda — SQLite, Parquet, dan CSV — lewat ATTACH dan read_parquet di DuckDB, lengkap dengan bukti pushdown dan batas nyata query federation.

Buka →
# Pemilihan Query Engine

Rangkum seluruh section menjadi keputusan nyata: tabel perbandingan SQLite/PostgreSQL, DuckDB, Trino, ClickHouse, dan Spark, benchmark segar satu juta baris, serta diagram keputusan yang bisa dipakai berulang.

Buka →

Bab 18 Data Quality dan Observability

# Dimensi Kualitas Data

Pelajari enam dimensi kualitas data — completeness, validity, uniqueness, consistency, freshness, accuracy — lalu bangun skor kualitas tabel pesanan TokoKita dengan pandas.

Buka →
# Data Validation

Rancang aturan validasi sebagai kerangka yang bisa ditambah dan diaudit: not-null, rentang, format, referential integrity, tingkat keparahan, serta laporan pelanggaran dengan pandas.

Buka →
# Schema Validation

Tegakkan schema sebagai kontrak validasi: kolom wajib, tipe data, nullability, dan kolom asing ditangkap dengan pandera sebelum aturan nilai dijalankan.

Buka →
# Data Contracts

Ubah kesepakatan kualitas data menjadi kontrak eksplisit berformat YAML: schema, aturan kualitas, SLA freshness, dan kepemilikan — lalu tegakkan dengan pemeriksa kontrak Python.

Buka →
# Data Freshness

Ukur umur data dari timestamp dan waktu berkas partisi, tetapkan SLA freshness per tabel, dan deteksi pelanggaran lengkap dengan pembedaan data terlambat versus pipeline berhenti.

Buka →
# Data Completeness

Rekonsiliasi kelengkapan data antara manifest upstream dan warehouse: hitung rasio per partisi harian, deteksi partisi hilang dan parsial, serta pilih sumber ekspektasi yang tepat.

Buka →
# Data Consistency

Uji konsistensi antar tabel dengan DuckDB: deteksi orphaned foreign key di dua arah, bandingkan agregat lintas tabel dengan toleransi pembulatan, dan telusuri penyebab selisih.

Buka →
# Data Lineage

Bangun peta dependensi antar tabel pipeline TokoKita langsung dari kode SQL dan pandas, lakukan analisis dampak downstream dengan BFS, dan visualisasikan graf lineage dengan mermaid.

Buka →
# Pipeline Logging

Rancang logging level pipeline dengan structured logging JSON, run id untuk korelasi antar-stage, event siklus hidup run, timing per stage, dan aturan menjaga PII keluar dari log.

Buka →
# Metrics dan Alerting

Hitung success rate, volume baris, dan durasi p95 dari riwayat run JSONL, evaluasi aturan alert berbasis threshold, dan rancang notifikasi yang bebas alert fatigue.

Buka →
# Anomaly Detection untuk Data

Deteksi anomali pada metrik data harian dengan z-score, IQR, dan rolling window, pahami mengapa ketiganya bisa saling tidak setuju, dan waspadai jebakan pola musiman.

Buka →
# Great Expectations

Validasi DataFrame pandas dengan Great Expectations GX Core: expectation suite berisi not null, unique, in set, dan between, lalu jalankan validasi nyata pada data yang sehat dan yang bermasalah.

Buka →
# Pandera

Validasi DataFrame dengan pandera: DataFrameSchema berisi Check ge, in_range, isin, dan str_matches, lazy validation yang mengumpulkan semua kegagalan, DataFrameModel berbasis class, dan integrasi di pintu masuk pipeline.

Buka →
# Investigasi Kegagalan Data

Selidiki kasus nyata dashboard GMV TokoKita yang anjlok: dari gejala dan daftar hipotesis, query DuckDB yang menyempitkan akar masalah ke perubahan nilai upstream, sampai perbaikan dan lapisan pencegahan.

Buka →

Bab 19 Keamanan dan Tata Kelola Data

# Prinsip Keamanan Data

Fondasi keamanan data: triad CIA, principle of least privilege, defense in depth, dan alasan tabel pengguna menyimpan hash alih-alih kata sandi plaintext.

Buka →
# Authentication dan Authorization

Bedakan authentication dan authorization, lalu simulasikan token bertanda tangan HMAC mirip JWT: verifikasi tanda tangan, cek scope, dan tolak token yang dimanipulasi.

Buka →
# Role-Based Access Control

Kelola hak akses dengan Role-Based Access Control: matriks role-permission, pemeriksaan akses deny by default, dan audit untuk memangkas izin yang melampaui kebutuhan.

Buka →
# Encryption at Rest dan In Transit

Lindungi data saat tersimpan dan saat berpindah: Fernet untuk encryption at rest, deteksi manipulasi ciphertext, rotasi kunci MultiFernet, TLS, dan envelope encryption.

Buka →
# Secrets Management

Naikkan level pengelolaan secrets: izin berkas chmod 600, prosedur rotasi tanpa menghentikan pipeline, scope per environment, dan pola kerja HashiCorp Vault.

Buka →
# Masking dan Tokenization

Lindungi PII di mata manusia dan di tabel analitik: masking untuk layar support, tokenisasi deterministik berbasis HMAC, dan token reversibel untuk sistem pembayaran.

Buka →
# Klasifikasi Data

Beri label sensitivitas pada aset data TokoKita: empat tingkat klasifikasi, klasifikasi otomatis dari nama kolom dan pola nilai, serta aturan penanganan per tingkat.

Buka →
# Privasi dan Retensi Data

Terapkan data minimization, pilih anonymization atau pseudonymization, lalu jalankan retention policy sebagai kode yang menghapus dan mengarsipkan partisi secara otomatis.

Buka →
# Audit Logging

Bangun audit trail append-only berformat JSONL dengan hash chain: catat siapa melakukan apa kapan, lalu buktikan bahwa log tidak bisa dimodifikasi diam-diam.

Buka →
# Data Catalog

Bangun data catalog: pindai berkas data untuk mengumpulkan schema dan jumlah baris, gabungkan dengan owner dan tags, lalu cari aset berdasarkan tag dan nama kolom.

Buka →
# Data Lineage dan Provenance

Rekam provenance setiap run pipeline — input, versi kode, parameter, dan hash output — lalu verifikasi bahwa hasil tidak berubah diam-diam sejak run tersebut.

Buka →
# Data Ownership

Definisikan owner, steward, dan jalur eskalasi untuk tiap aset lewat registry YAML, audit aset tanpa pemilik, dan terapkan tabel RACI saat insiden data terjadi.

Buka →
# Compliance dan Kebijakan Data

Tuliskan kebijakan keamanan sebagai kode: kontrol wajib per klasifikasi data di YAML, evaluasi seluruh aset secara otomatis, dan kelola siklus hidup kebijakan dari draf hingga penegakan di CI.

Buka →

Bab 20 Cloud dan Infrastruktur Data

# Dasar Cloud Computing

Pahami konsep cloud computing, model layanan IaaS, PaaS, dan SaaS, perbedaan capex dan opex, elastisitas biaya, serta shared responsibility model.

Buka →
# Object Storage

Pelajari mekanika object storage di cloud: bucket dan key datar, listing berdasarkan prefix, storage class, lifecycle policy, dan konsistensi baca-tulis.

Buka →
# Compute dan Storage

Pisahkan compute dari storage: jalankan engine query dengan berbagai ukuran compute di atas data lake parquet yang sama, lalu hitung model biaya keduanya.

Buka →
# Container dan Docker

Bangun image pipeline data dengan Dockerfile berlapis, .dockerignore, non-root user, dan dependensi ter-pin, lalu rangkai pipeline, PostgreSQL, dan MinIO dalam satu docker-compose.yml.

Buka →
# Infrastructure as Code

Kelola infrastruktur secara deklaratif dengan Infrastructure as Code: pahami konsep state, plan, dan apply lewat Terraform dan mini IaC engine berbasis Python.

Buka →
# Environment Development dan Production

Pisahkan konfigurasi development, staging, dan production dengan loader tervalidasi: tolak lingkungan tak dikenal, larang rahasia inline di production, dan jaga parity antar lingkungan.

Buka →
# Konfigurasi Networking

Rancang jaringan cloud untuk platform data: VPC, subnet public dan private, security group, network ACL, serta private endpoint agar lalu lintas data tidak melewati internet publik.

Buka →
# Managed Data Services

Bandingkan self-managed versus managed data services melalui shared responsibility matrix, pola RDS versus EC2+PostgreSQL versus Athena, kalkulasi TCO mini, dan kapan managed service justru merugikan.

Buka →
# Autoscaling

Simulasikan kebijakan target tracking pada queue depth selama 48 jam beban TokoKita: scale-out saat flash sale, histeresis dan cooldown saat sepi, serta perbandingan biaya on-demand versus spot.

Buka →
# Backup dan Disaster Recovery

Tetapkan RPO dan RTO, bandingkan strategi full, incremental, dan differential lewat simulasi 7 hari, terapkan aturan 3-2-1 dengan replikasi lintas region, dan susun checklist DR drill.

Buka →
# High Availability

Hitung ketersediaan fleet worker dengan redundansi single-AZ versus multi-AZ, audit single point of failure pada arsitektur TokoKita, dan pahami matematika SLA beserta anggaran downtime-nya.

Buka →
# Pemilihan Cloud Platform

Susun kerangka keputusan pemilihan cloud platform: matriks kebutuhan, peta layanan setara AWS GCP Azure, skoring berbobot dengan uji sensitivitas, jebakan biaya egress, dan checklist sebelum memutuskan.

Buka →

Bab 21 Data Engineering Testing

# Unit Testing

Uji unit kode data dengan pytest: pola AAA, parametrize untuk parsing rupiah dan mapping status, kasus batas, serta ciri unit test yang sehat untuk pipeline data.

Buka →
# Integration Testing

Uji integration untuk pipeline data: kontrak stage tables ke mart dengan SQLite dan tmp_path, serta peniruan API eksternal dengan unittest.mock.

Buka →
# End-to-End Testing

Rancang end-to-end test pipeline: lingkungan uji terisolasi, smoke dataset versi tetap, perbandingan golden output, ambang penerimaan, serta trade-off durasi vs keyakinan.

Buka →
# Data Transformation Testing

Uji transformasi data dengan asersi berbasis data: input dan expected output sebagai tabel uji, asersi level baris dan himpunan, guard schema drift, serta gagasan property-based testing.

Buka →
# Pipeline Testing

Metodologi pengujian pipeline data: piramida test yang diadaptasi, daftar periksa per stage, strategi data uji, flaky test, gerbang CI, dan smoke test idempotensi dengan pytest.

Buka →
# Contract Testing

Uji janji antar tim dengan consumer-driven contract test: konsumen menulis kontrak YAML, provider membuktikannya lewat pytest, dan perubahan yang merusak tertangkap merah.

Buka →
# Test Fixtures dan Sample Data

Bangun data uji yang murah dan deterministik: fixture pytest untuk DataFrame ber-seed dan SQLite sementara, factory baris uji, serta katalog kasus tepi.

Buka →
# Regression Testing

Kunci perilaku pipeline dengan golden file: simpan output yang disetujui, bandingkan setiap perubahan dengan toleransi pembulatan, dan kelola diff yang disengaja.

Buka →
# Performance Testing

Jadikan performa sebagai test: benchmark berulang dengan statistik p95, ambang yang realistis, gerbang baseline, dan pengungkapan variansi yang jujur.

Buka →
# Continuous Integration

Rangkai seluruh gerbang uji ke satu pintu: workflow GitHub Actions dengan service PostgreSQL, artefak, branch protection, plus simulasi CI lokal berupa skrip lima tahap.

Buka →

Bab 22 Deployment dan Operasional

# Deployment Pipeline

Bawa kode pipeline ke production secara berulang dan aman: version stamp pola git describe, artifact immutable ber-MANIFEST sha256, dan pergantian rilis lewat symlink dengan rollback.

Buka →
# Konfigurasi Environment

Terapkan konfigurasi twelve-factor pada pipeline yang sudah dideploy: layer defaults, overlay per lingkungan, dan environment variable, divalidasi ketat saat startup agar salah ketik gagal cepat.

Buka →
# Continuous Integration dan Delivery

Rangkai uji, build artifact, dan deploy menjadi satu workflow GitHub Actions: staging otomatis saat push ke main, gerbang manual untuk production, plus strategi deploy khas pipeline batch.

Buka →
# Scheduling dan Production Runs

Jalankan pipeline di production dengan disiplin: run ledger JSONL sebagai sumber kebenaran, deteksi window terlewat untuk keputusan catch-up, guard concurrency, audit trigger manual, dan kalender produksi.

Buka →
# Monitoring dan Alerting

Pantau kesehatan run pipeline sebagai beban operasional: success rate, durasi p95, kegagalan berurutan, dan saturasi CPU dari run ledger, lalu rutekan alert ke page, tiket, atau diam dengan dedup dan jendela rawat.

Buka →
# Logging dan Tracing

Susuri satu run lintas layanan dengan correlation id yang diteruskan lewat manifest, baca span tree untuk menemukan bagian termahal, lalu kirim log JSON terstruktur ke agregator terpusat dengan OpenTelemetry.

Buka →
# Incident Response

Kelola insiden pipeline data dengan severity SEV1-SEV3, pembagian peran incident commander, timeline insiden nyata dari events JSONL untuk MTTA dan MTTR, serta postmortem blameless.

Buka →
# Recovery dan Reprocessing

Susun strategi pemrosesan ulang data setelah bug: backfill vs replay vs dual-write, penelusuran blast radius lewat lineage, perencana reprocessing nyata dari run ledger, dan cara mengomunikasikan angka terkoreksi ke konsumen.

Buka →
# Versioning dan Rollback

Disiplin rollback deployment pipeline: artefak berversi dengan pointer current, rollback drill nyata yang mendeteksi bug data lalu memutar balik symlink, perbedaan rollback artefak vs rollback data, serta keputusan rollback atau forward fix.

Buka →
# Capacity Planning

Rencanakan kapasitas platform data dengan regresi linear pada volume historis, headroom dari rasio puncak/rata-rata, dan estimasi titik jebol scratch serta disk sebelum kalender menunjukkannya.

Buka →
# Optimasi Biaya

Bedah tagihan bulanan platform data menjadi rincian compute, storage per tier, dan egress; hitung unit economics; lalu cari penghematan terbesar yang bisa dieksekusi dengan disiplin FinOps.

Buka →
# Service Level Objectives

Tetapkan SLI khusus data (freshness, completeness, correctness), hitung pencapaian SLO bulanan dan sisa error budget dari run ledger, pasang alert burn-rate, dan kenali anti-pola SLO pipeline data.

Buka →

Bab 23 Optimasi dan Performa

# Mengukur Performa Pipeline

Kuasai metrik throughput, latency p50/p95, dan memori puncak, lengkap dengan jebakan pengukuran, disiplin baseline JSON, dan verifikasi sebelum-sesudah yang jujur terhadap noise.

Buka →
# Query Profiling

Jalankan investigasi query lambat secara sistematis lewat piramida profiling — dari metrik pipeline turun ke operator — dengan EXPLAIN ANALYZE DuckDB pada kasus join fan-out 10x yang menjadi 21 kali lebih cepat setelah akar masalahnya ditemukan.

Buka →
# Indexing dan Partitioning

Adu index SQLite dan partition Parquet pada benchmark nyata: lookup titik 49x lebih cepat dengan index, query rentang 3x lebih cepat dengan partition pruning, lalu putuskan kapan memakai index, partition, atau keduanya.

Buka →
# Predicate Pushdown

Bukti terukur bahwa posisi filter menentukan biaya: filter kota='Bandung' pada 5 juta baris Parquet berjalan 3,9 detik di pandas, 0,6 detik di reader pyarrow, dan 0,011 detik sebagai WHERE DuckDB — plus batasan pushdown pada predikat kompleks.

Buka →
# Column Pruning

Ukur penghematan nyata membaca 2 dari 12 kolom Parquet: waktu 4,8x lebih cepat, memori tabel 6x lebih hemat, plus bukti projection pushdown dari rencana eksekusi dan alasan mengapa SELECT * membatalkan semuanya.

Buka →
# Batch Size dan Throughput

Sapukan ukuran batch executemany dari 1 sampai 50 ribu baris, temukan titik jenuh di mana throughput melandai sementara memori terus naik, lalu kendalikan memori pembacaan CSV dengan chunking — dan ubah throughput menjadi anggaran kapasitas.

Buka →
# Parallelism

Percepat pipeline dengan membagi pekerjaan: ThreadPool vs ProcessPool vs DuckDB threads, diuji jujur di mesin 2 CPU hingga efek oversubscription yang justru memperlambat.

Buka →
# Caching

Bangun cache disk berbasis hash input: miss dan hit terukur, invalidasi otomatis saat input berubah, perlindungan cache stampede dengan single-flight, dan daftar apa yang tidak layak di-cache.

Buka →
# Memory Optimization

Pangkas memori pipeline Python dengan tracemalloc: generator vs list-of-dicts, downcast dtype, chunked read, jebakan sys.getsizeof, hingga keputusan menumpah ke disk secara manual.

Buka →
# Mengatasi Data Skew

Diagnosa data skew dari hitungan kunci teratas, pecah partition timpang dengan salting dan agregasi dua tahap di multiprocessing, dan kenali kapan DuckDB justru tidak memerlukan obatnya.

Buka →
# Mengoptimalkan Biaya Storage

Tekan biaya penyimpanan data lake: benchmark empat format lengkap dengan hitungan dolar per tahun, masalah small files beserta kompaksinya, dan matematika retensi plus tiering storage class.

Buka →
# Benchmarking

Rancang benchmark yang bisa dipercaya: aturan pertandingan adil, warm-up, N run dengan statistik min/median/p95, jebakan single-run dan cache dingin, plus template pelaporan yang bisa direproduksi.

Buka →

Bab 24 Arsitektur Data

# Layered Data Architecture

Pisahkan data mentah, data bersih, dan agregat siap konsumsi ke dalam layer berkontrak agar pipeline bisa dibangun ulang dari sumber.

Buka →
# Medallion Architecture

Terapkan pola Bronze, Silver, Gold di atas lakehouse dengan gerbang kualitas, karantina data gagal, dan rekonsiliasi angka antar layer.

Buka →
# Lambda Architecture

Gabungkan keakuratan batch layer dan kesegaran speed layer dalam satu serving layer, lengkap dengan simulasi recompute dan verifikasi hasil identik.

Buka →
# Kappa Architecture

Sederhanakan Lambda menjadi satu jalur stream dengan log replay: perbaiki logika pemrosesan tanpa memelihara dua codebase.

Buka →
# Data Mesh

Serahkan kepemilikan data ke domain dengan data product berkontrak: empat prinsip mesh, kartu SLO, dan pemeriksa otomatisnya.

Buka →
# Data Fabric

Satukan silo data lewat active metadata: katalog, lineage, federated query, dan otomasi pipeline tanpa memindahkan data.

Buka →
# Domain-Driven Data Architecture

Terapkan bounded context, ubiquitous language, dan anti-corruption layer untuk memetakan domain bisnis ke arsitektur data.

Buka →
# Batch dan Streaming Architecture

Jalankan recompute penuh dan materialisasi incremental di atas satu log yang sama, dari batch jam-an hingga streaming kontinu.

Buka →
# Memilih Arsitektur Data

Pilih arsitektur data secara terukur: pohon keputusan, matriks skor tertimbang, dan constraint keras yang menundukkan skor.

Buka →
# Trade-off Arsitektur

Hitung trade-off biaya versus kesegaran dengan angka nyata dan dokumentasikan keputusan arsitektur yang siap direvisi.

Buka →

Bab 25 Data Engineering untuk Analytics

# Analytical Data Modeling

Posisikan analytical data modeling dalam alur kerja analytics, bandingkan pendekatan Kimball, Inmon, dan wide table, lalu bangun One Big Table dari star schema dengan DuckDB.

Buka →
# dbt

Kenalkan dbt sebagai framework transformasi SQL: pasang dbt Core dengan adapter, susun dbt_project.yml dan sources.yml, lalu pahami cara kumpulan model membentuk DAG yang dieksekusi dbt run.

Buka →
# Model Staging, Intermediate, dan Marts

Susun model dbt ke dalam tiga layer — staging yang membersihkan sumber, intermediate yang merangkai business logic, dan marts yang siap dibaca alat BI — dengan simulasi DuckDB nyata.

Buka →
# Incremental Models

Bangun model dbt yang hanya memproses data baru dengan materialized incremental, unique_key, dan strategi merge, lalu hindari jebakan late-arriving data dengan jendela lookback.

Buka →
# Snapshots

Rekam riwayat perubahan data sumber secara otomatis dengan dbt snapshot: strategi check, kolom dbt_valid_from dan dbt_valid_to, serta query keadaan pada titik waktu tertentu.

Buka →
# Testing Model Data

Uji isi model dbt dengan generic test (not_null, unique, accepted_values, relationships), singular test, dan custom generic test, lengkap dengan severity serta momen menjalankan test di CI.

Buka →
# Dokumentasi Model Data

Tulis dokumentasi model dbt sebagai kode: deskripsi model dan kolom pada schema.yml, docs block untuk definisi yang dipakai ulang, hingga halaman dokumentasi beserta lineage graph yang dihasilkan otomatis.

Buka →
# Semantic Layer

Definisikan metrik GMV sekali sebagai semantic model dan metric pada YAML, lalu buktikan konsistensinya lewat resolver mini yang menyusun SQL untuk dua konsumen berbeda.

Buka →
# Integrasi Business Intelligence

Hubungkan alat BI ke marts melalui konektor SQL dan ODBC, lalu terapkan row-level security sebagai urusan serving agar dashboard yang sama menjawab sesuai hak akses pembacanya.

Buka →
# Serving Data untuk Analytics

Ukur dua strategi penyajian — agregasi fact mentah saat diminta versus mart pre-agregat — pada dua juta pesanan, lalu pilih format dan jalur konsumsi untuk tiap jenis konsumen.

Buka →

Bab 26 Data Engineering untuk Machine Learning

# Kebutuhan Data Machine Learning

Pahami perbedaan kebutuhan data analytics dan machine learning, kenali data leakage lewat studi kasus fraud TokoKita, dan petakan pekerjaan data engineering yang lahir dari model ML.

Buka →
# Dataset Training dan Inference

Susun dataset training yang jujur dengan memilih strategi pembagian yang meniru cara model dipakai, dan pahami perbedaannya dengan data inference di produksi.

Buka →
# Feature Pipeline

Bangun pipeline yang mengubah event mentah pesanan menjadi fitur RFM per pelanggan dengan cutoff waktu, lengkap dengan metadata fitur dan uji paritas antara pandas dan DuckDB.

Buka →
# Feature Store

Kenali anatomi feature store melalui konsep API Feast, lalu buktikan pentingnya point-in-time correctness ketika menggabungkan snapshot fitur dengan event label menggunakan ASOF JOIN.

Buka →
# Feature Consistency

Buktikan bahaya training-serving skew lewat dua implementasi fitur yang hampir sama, lalu perbaikinya dengan satu implementasi bersama dan uji paritas berbentuk pytest.

Buka →
# Data Versioning

Simpan dataset sebagai snapshot berversi dengan manifest sha256, bandingkan dua versi berdasarkan kunci, lalu pin versi dataset di training config agar setiap model bisa direproduksi.

Buka →
# Data Validation untuk ML

Jalankan tiga pemeriksaan khas machine learning — validasi skema yang memblokir training, drift distribusi dengan PSI, dan deteksi dini leakage lewat korelasi fitur terhadap label.

Buka →
# Batch Feature Computation

Jalankan feature pipeline terjadwal di atas partisi harian parquet dengan DuckDB, tulis snapshot fitur secara idempotent, lalu tangani late event dengan menghitung ulang snapshot terdampak.

Buka →
# Streaming Feature Computation

Hitung fitur rolling window secara real-time dengan state per pengguna dan watermark, lalu ukur jujur harga kecepatannya: event yang dibuang stream membuat fitur berbeda dari hitungan batch.

Buka →
# Integrasi dengan MLOps

Hubungkan seluruh pipeline data ke siklus hidup model di produksi: pantau drift dan performa, gabungkan tiga pemicu retraining menjadi satu keputusan, dan lihat peran data engineer di tim MLOps.

Buka →

Bab 27 Proyek

# Proyek: Pipeline Data CSV ke PostgreSQL

Bangun pipeline lengkap dari file CSV mentah hingga tabel PostgreSQL: validasi, pembersihan, deduplikasi, logging, dan pengujian menyeluruh.

Lihat proyek →
# Proyek: Pipeline Ingestion API

Bangun pipeline ingestion dari REST API publik: pagination, rate limit, retry, validasi respons, penyimpanan data mentah, dan mode incremental.

Lihat proyek →
# Proyek: Pipeline ETL Terjadwal

Bangun ETL terjadwal yang idempotent: ekstraksi, transformasi, pemuatan, penanganan kegagalan, monitoring, dan validasi hasil.

Lihat proyek →
# Proyek: Data Warehouse Penjualan

Rancang data warehouse penjualan dengan star schema: dimensi, fact table, slowly changing dimensions, kualitas data, dan optimasi query.

Lihat proyek →
# Proyek: Orkestrasi Pipeline dengan Airflow

Orkestrasi pipeline dengan Apache Airflow: DAG, dependency antar task, scheduling, retry dan timeout, backfill, serta pemantauan eksekusi.

Lihat proyek →
# Proyek: Streaming Data dengan Kafka

Bangun streaming pipeline dengan Apache Kafka: producer, consumer, topic dan partition, pengelolaan offset, validasi event, dan pemantauan stream.

Lihat proyek →
# Proyek: Pemrosesan Data dengan Spark

Proses dataset besar dengan Apache Spark: pembacaan data terdistribusi, transformasi, join dan agregasi, partition, analisis query plan, dan optimasi job.

Lihat proyek →
# Proyek: Pipeline Data dan Dashboard Analitik

Bangun pipeline data end-to-end hingga tabel analitik siap dashboard: pengumpulan, pembersihan, model analitik, validasi, dan dokumentasi sistem.

Lihat proyek →

Bab 28 Sumber Belajar

# Dokumentasi Resmi

Peta lengkap dokumentasi resmi seluruh teknologi course ini, cara membacanya secara efektif, dan kriteria menilai keandalan sebuah sumber.

Buka →
# Referensi Python

Kurasi tautan dokumentasi resmi Python, pandas, pytest, requests, dan PyArrow yang paling relevan untuk pekerjaan data engineering sehari-hari.

Buka →
# Referensi SQL

Kurasi referensi SQL resmi dari PostgreSQL, SQLite, dan DuckDB: tutorial bahasa, halaman SELECT, fungsi bawaan, hingga window functions.

Buka →
# Referensi Database

Kurasi dokumentasi operasional PostgreSQL, SQLite, DuckDB, dan PgBouncer untuk indexing, EXPLAIN, MVCC, backup, hingga replikasi.

Buka →
# Referensi ETL dan ELT

Kurasi dokumentasi resmi dbt, Airbyte, Fivetran, serta layanan pipeline terkelola AWS Glue, Google Cloud Dataflow, dan Azure Data Factory.

Buka →
# Referensi Apache Airflow

Kurasi dokumentasi Apache Airflow 3 untuk konsep inti, penulisan DAG, scheduler dan executor, best practices, REST API, hingga panduan migrasi.

Buka →
# Referensi Apache Spark

Kumpulan tautan dokumentasi resmi Apache Spark yang terkurasi: mulai, SQL dan DataFrame, Structured Streaming, tuning, hingga referensi API PySpark.

Buka →
# Referensi Apache Kafka

Kumpulan tautan dokumentasi resmi Apache Kafka yang terkurasi: quickstart, konfigurasi producer dan consumer, KRaft, delivery semantics, hingga Connect dan Streams.

Buka →
# Referensi Data Warehouse

Kumpulan rujukan data warehouse terkurasi: teknik dimensional modeling dari Kimball Group, dokumentasi dbt untuk modeling, dan dokumentasi resmi Snowflake, BigQuery, serta Redshift.

Buka →
# Referensi Data Lake

Kumpulan rujukan data lake dan lakehouse terkurasi: dokumentasi table format Apache Iceberg, Delta Lake, dan Hudi, format berkas Parquet hingga Protobuf, serta object storage resmi AWS, Google Cloud, dan Azure.

Buka →
# Referensi Cloud

Kumpulan rujukan cloud terkurasi: dokumentasi layanan data AWS, Google Cloud, dan Azure, kalkulator harga, free tier, serta Docker, Kubernetes, dan Terraform untuk infrastructure as code.

Buka →
# Dataset Terbuka

Kumpulan dataset terbuka untuk berlatih data engineering dari Registry of Open Data on AWS, Kaggle, portal pemerintah, Our World in Data, dan GitHub — lengkap dengan isi, format, dan latihan yang cocok.

Buka →
# Glosarium

Glosarium istilah data engineering lintas course: definisi singkat berbahasa Indonesia untuk istilah teknis penting, dari pipeline dan ingestion hingga feature store dan point-in-time correctness.

Buka →