HdnTech
PORTOFOLIO DATA ENGINEERING · STUDI KASUS

Pipeline Data End-to-End: 5 Juta Baris dari OLTP sampai Warehouse OLAP

Membangun alur data production-style lengkap: transaksi harian di OLTP (MySQL/PostgreSQL) mengalir lewat CDC, diproses dbt, disimpan di ClickHouse yang sudah teragregasi, lalu disajikan sebagai dashboard Metabase. Semua angka di halaman ini berasal dari sistem yang benar-benar berjalan — bukan ilustrasi.

PostgreSQL 16 (OLTP)MySQL / MariaDB (OLTP)MinIO Data LakeDebezium CDCRedpandaAirflow 2.9dbtClickHouse 24.8Metabase
Volume sumber (OLTP)5.000.000 baris

tabel transactions, batch insert 20.000/commit

Tersimpan di OLAP4.900.607 baris

ClickHouse finance.transactions (MergeTree)

Tabel pre-agregat46.848 baris

daily_transaction_summary siap untuk BI

Agregasi kategori409,8 ms vs 6 ms

OLTP row-store → OLAP kolumnar ≈ 68× lebih cepat

*) angka diukur langsung pada environment lab (lihat bagian Bukti & Angka), bukan estimasi.

1. Arsitektur sistem

Klik setiap komponen untuk melihat perannya pada pipeline.

Source / OLTP
MySQL & PostgreSQL database operasional
→
Data Generator 5 jt baris, batch 20rb
→
MinIO Data Lake S3-compatible
Ingestion
Debezium CDC pgoutput / binlog
→
Redpanda Kafka API
→
Airflow DAG orkestrasi harian
Transform
dbt staging stg_transactions
→
dbt mart fct_daily_transaction_summary
→
4 data-quality test unique, not_null, accepted_values
Serving
ClickHouse OLAP kolumnar
→
Metabase dashboard BI
→
REST API disajikan ke halaman ini

2. Step by step pengerjaan

Tujuh langkah, lengkap dengan perintah asli yang dijalankan dan bukti keluarannya. Gunakan tombol Salin untuk memakai ulang perintahnya.

3. Bukti & angka nyata

Latensi diukur dengan \timing (PostgreSQL) dan clickhouse-client --time (ClickHouse) pada dataset yang sama.

OLTP — row-store (PostgreSQL 16)

SELECT merchant_category, count(*), sum(amount)
FROM transactions GROUP BY 1 ORDER BY 3 DESC;

409,8 ms untuk 5.000.000 baris — harus membaca hampir seluruh tabel (sequential scan) karena agregasi tidak terindeks.

OLAP — column-store (ClickHouse 24.8)

SELECT merchant_category, count(), sum(amount)
FROM finance.transactions GROUP BY 1;

47 ms untuk 4.900.607 baris — hanya kolom yang dibutuhkan yang dibaca (column pruning) + kompresi kolumnar.

Pre-agregat siap BI

SELECT sum(total_amount)
FROM finance.daily_transaction_summary;

6 ms untuk 46.848 baris hasil dbt — inilah yang dibaca Metabase, sehingga dashboard tetap responsif walau data mentah jutaan baris.

Hasil pengujian kualitas data

dbt test: PASS=4 · WARN=0 · ERROR=0 dalam 3,30 detik (memori proses 160 MB).

Test yang berjalan: unique(transaction_id), not_null(transaction_id), not_null(amount), accepted_values(status= 'success').

Redpanda Console menampilkan topic hasil CDC
Redpanda Console: topik CDC finance.public.transactions terisi otomatis oleh Debezium.

Kenapa arsitektur ini dipilih

Setiap komponen punya alasan teknis yang bisa dipertanggungjawabkan:

KeputusanAlasan
Batch insert 20.000round-trip jaringan jauh lebih mahal daripada ukuran payload
CDC vs pollingpolling membebani OLTP; CDC membaca WAL/binlog secara non-invasif
dbt + testtransformasi terversi di Git dan gagal cepat saat data kotor
MergeTree + partisi bulananquery per rentang waktu hanya memindai partisi relevan
Pre-agregat harianBI tidak lagi menyentuh jutaan baris mentah
Sink idempotentaman dijalankan ulang tanpa data ganda

4. Panel data langsung (OLTP)

Angka berikut dibaca real-time dari database OLTP di server produksi melalui REST API (read-only).

Memuat data live…

Lanjut lihat hasilnya

Data yang sudah rapi di ClickHouse dihidupkan menjadi dashboard bisnis: satu tab replika yang selalu online, satu tab Metabase asli.

Buka Dashboard BI → Prototype lain
HdnTech · Data Engineering & Business Intelligence · Stack: PostgreSQL · Debezium · Redpanda · dbt · Airflow · ClickHouse · Metabase