Dữ liệu Batch (T-1) vs Intra-day¶
🟠 Quan trọng · Data Platform
⚠️ Trước khi trả lời: Hỏi rõ interviewer muốn hỏi góc nào¶
Câu hỏi này có thể hỏi theo 2 góc nhìn hoàn toàn khác: - Góc Ingestion: Dữ liệu từ source → data lake như thế nào? - Góc Consumption: Data lake → báo cáo/ứng dụng khai thác ra sao?
💡 Nên hỏi lại: "Dạ cho em hỏi, câu hỏi này là hỏi về cách ingest dữ liệu từ source, hay là cách khai thác ở tầng báo cáo ạ?"
So sánh tổng quan¶
| Tiêu chí | Batch (T-1) | Intra-day |
|---|---|---|
| Định nghĩa | Dữ liệu ngày hôm trước, xử lý theo lô | Dữ liệu trong ngày, cập nhật liên tục |
| Tần suất | 1 lần/ngày (thường chạy đêm) | Nhiều lần/ngày (mỗi 15p, 1h...) |
| Độ trễ | Cao (vài giờ) | Thấp (phút đến giờ) |
| Công nghệ | Spark Batch, Airflow, SQL | Structured Streaming, Flink, Kafka |
| Dữ liệu | Full snapshot hoặc incremental | CDC events, streaming events |
| Ứng dụng | Báo cáo cuối ngày, Data Warehouse | Dashboard realtime, fraud detection |
Góc nhìn 1: Ingestion (source → data lake)¶
Batch¶
- Source DB (T24, Oracle) export file cuối ngày (CSV, Parquet, flat file)
- Hoặc DMS full load, SFTP push
- Mỗi lần là full snapshot của ngày hôm trước
- Pipeline Airflow trigger lúc 2AM, validate row count + schema
Trả lời mẫu:
"Dữ liệu T-1 được export từ source database thành file Parquet/CSV vào cuối ngày, đẩy qua SFTP hoặc DMS full load lên S3 raw zone. Pipeline Airflow trigger lúc 2AM, validate rồi chuyển vào staging."
Intra-day¶
- DMS CDC mode: đọc binlog/WAL bắt thay đổi realtime
- Hoặc Debezium → Kafka producer
- Chỉ có incremental changes (INSERT/UPDATE/DELETE), không phải full snapshot
- Consumer đọc event và ghi micro-batch vào Delta table trên S3 mỗi 15 phút
Sự khác biệt cốt lõi: full snapshot vs incremental changes
Trả lời mẫu:
"Khác với batch lấy full dữ liệu (select cả bảng hoặc DB chủ động push ra file), intra-day dùng CDC bắt thay đổi từ Log của source DB qua DMS hoặc Debezium, đẩy vào Kafka topic. Consumer đọc event và ghi micro-batch vào Delta table trên S3 mỗi 15 phút. Chỉ có incremental changes (INSERT/UPDATE/DELETE), không phải full snapshot."
Góc nhìn 2: Consumption (data lake → reports)¶
Batch¶
- Spark/SQL job scheduled bởi Airflow, chạy 3AM
- Transform: clean, join, aggregate, apply SCD2/Snapshot logic
- Load pattern: Overwrite partition, MERGE (SCD2), hoặc Append (fact)
- Serving: Báo cáo T+1 sáng, BI dashboard (PowerBI, Tableau)
Trả lời mẫu:
"Dữ liệu T-1 sau khi landing, pipeline Spark chạy vào 3AM: clean data, join dimension, tính toán aggregate, rồi ghi vào Gold layer bằng Delta MERGE. Sáng hôm sau, team báo cáo truy vấn DWH để ra báo cáo hàng ngày."
Intra-day¶
- Structured Streaming / Flink đọc từ Delta/Kafka
- Apply business rule, dedup, handle late event
- Load pattern: MERGE into (upsert) mỗi 15 phút
- Serving: Dashboard near-realtime, fraud alert, monitoring
Trả lời mẫu:
"Intra-day phục vụ use case cần độ trễ thấp: dashboard số dư trong ngày cập nhật mỗi 15 phút, cảnh báo fraud realtime. Dữ liệu chưa 'đóng sổ', có thể thay đổi trong ngày, cần xử lý duplicate/late event."
Điểm khác biệt cốt lõi¶
| Ingestion | Consumption | |
|---|---|---|
| Batch | Full snapshot vs Incremental | Chính xác + Chậm |
| Intra-day | CDC changes only | Gần đúng + Nhanh |