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.
OLTP vs OLAPBatch vs StreamingETL vs ELTParquet vs AvroLake vs Warehouse vs LakehouseCDC vs PollingEvent modelling vs Snapshot modellingFull refresh vs IncrementalLambda vs KappaOrder grain vs Order-line grain
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.
| Dimension | Batch | Streaming |
|---|---|---|
| Freshness | One schedule interval behind, by construction | Seconds, when it is healthy |
| State | None between runs — the run is the state | Continuous, checkpointed, and yours to operate |
| Recovery | Re-run the range | Restore state and replay from an offset, together |
| Late data | Handled by waiting, then backfilling what still arrives late | Handled by watermarks and an explicit lateness budget |
| Cost shape | A scheduled burst | A continuously running consumer |
| Operational burden | A failed run and a re-run | A permanently-running system with lag, state size and rebalances |