Comparisons

Pairs that get conflated in real conversations. Neither column wins — what decides is the requirement, and each record leads with the confusion, because the confusion is the reason the record exists at all.

Batch vs Streaming

What people get wrong about this pair

Streaming is treated as the modern successor to batch. It is a different set of trade-offs: better freshness bought with permanently-running state, harder recovery, and event-time reasoning that batch mostly avoids by waiting.

Batch
Use it when

The decision the data drives can wait for the next run, and you would rather have one implementation than two.

Streaming
Use it when

A decision genuinely cannot wait — fraud scoring, operational alerting, live personalisation.

DimensionBatchStreaming
FreshnessOne schedule interval behind, by constructionSeconds, when it is healthy
StateNone between runs — the run is the stateContinuous, checkpointed, and yours to operate
RecoveryRe-run the rangeRestore state and replay from an offset, together
Late dataHandled by waiting, then backfilling what still arrives lateHandled by watermarks and an explicit lateness budget
Cost shapeA scheduled burstA continuously running consumer
Operational burdenA failed run and a re-runA permanently-running system with lag, state size and rebalances