Batch xử lý một khối dữ liệu đã tích luỹ theo lịch (mỗi giờ, mỗi đêm); stream xử lý liên tục từng sự kiện hoặc từng micro-batch nhỏ ngay khi dữ liệu tới.
| Batch | Stream | |
|---|---|---|
| Độ trễ | Phút đến giờ | Mili giây đến giây |
| Đầu vào | Có giới hạn (dữ liệu của hôm qua) | Không có điểm kết thúc |
| Độ phức tạp | Thấp: chạy lại, debug dễ, kết quả xác định | Cao: state, dữ liệu đến trễ, thứ tự, checkpoint |
| Chi phí | Chạy xong là tắt cluster | Cluster chạy 24/7 |
| Ví dụ | Báo cáo doanh thu ngày, đối soát, huấn luyện model | Phát hiện gian lận, cảnh báo, dashboard thời gian thực |
Cách chọn: mặc định là batch, chỉ chuyển sang stream khi nghiệp vụ thực sự cần độ trễ thấp. Câu nên hỏi lại stakeholder: "Số liệu trễ 1 giờ thì mất gì?" Nếu câu trả lời là không mất gì, batch theo giờ là đủ.
Nhiều hệ thống dùng cả hai: stream cho cảnh báo và dashboard, batch hằng đêm tính lại số chính xác.
Lưu ý: ranh giới đang mờ dần. Spark Structured Streaming chạy theo micro-batch, còn job batch incremental chạy mỗi 5 phút đã gần với near real-time. Câu trả lời tốt dựa trên yêu cầu độ trễ và chi phí, không dựa trên tên công cụ.