Saltar al contenido
BásicoArturo Lorenzo·10 de noviembre de 2026·6 min·4lecturas

Batch o streaming: las mismas ventas de una tienda, procesadas de dos formas

Los mismos pedidos, dos caminos: en batch se juntan, se espera al reloj y sale un único resultado; en streaming cada pedido actualiza el resultado en cuanto llega.

Tu jefa quiere saber cuánto ha vendido la tienda hoy. Puedes esperar a que acabe el día y sumarlo todo de golpe, o ir sumando cada pedido en cuanto entra. Esa es la diferencia entre batch y streaming, y casi todo lo demás son detalles. Vamos a resolver el mismo problema de las dos formas para que se vea dónde cambia algo y dónde no.

## El ejemplo: una tienda que no existe

Usaremos siempre lo mismo: una tienda online ficticia, con nombres e importes inventados para el post. Hoy ha recibido cuatro pedidos. Cada uno tiene un número, un cliente y un importe:

  • Pedido 1001: Lucía, 38 €
  • Pedido 1002: Marcos, 15 €
  • Pedido 1003: Lucía, 12,5 €
  • Pedido 1004: Elena, 30 €

La pregunta es una sola: ¿cuánto hemos vendido? La respuesta correcta es 95,5 €. Será la misma en los dos casos. Lo que cambia es cuándo la tienes.

## Batch: todo de golpe, una vez al día

Batch (procesamiento por lotes; en las ofertas de empleo lo verás como batch processing) consiste en juntar los datos durante un rato y procesarlos todos a la vez. Es la lavadora: no la pones por cada calcetín, esperas a tener colada. En la tienda, los pedidos se van guardando y, por la noche, una tarea programada (un programa que el ordenador lanza solo a una hora fija) los lee todos y calcula el total.

Esa tarea nocturna suele ser un ETL, siglas de Extract, Transform, Load. Es decir: sacar los datos de donde están (extraer), arreglarlos y calcular lo que haga falta (transformar) y dejarlos en su destino, por ejemplo un informe (cargar). La ventaja del batch es que es sencillo: la tarea se enciende, trabaja y se apaga, y si falla la lanzas otra vez. El precio es que hasta que termina, el total de hoy no existe.

## Streaming: pedido a pedido, según llegan

Streaming (procesamiento en flujo, a menudo llamado tiempo real) procesa cada dato en cuanto llega. Es el grifo frente al cubo: en batch llenas el cubo y lo vacías de golpe; en streaming usas el agua mientras cae. Cada cosa que ocurre, como un pedido nuevo, se llama evento. Un programa se queda siempre encendido esperando eventos y, con cada uno, actualiza el total. El tiempo que pasa entre que algo ocurre y lo ves reflejado se llama latencia.

La latencia, dibujada: el mismo pedido tarda casi un día en notarse en el total con batch y unos segundos con streaming.

En las ofertas verás también Kafka (Apache Kafka): una plataforma de código abierto (cualquiera puede ver y usar su código) que funciona como buzón de eventos. La tienda deja ahí cada pedido y los programas de streaming lo recogen de ese buzón. De momento te basta con saber que existe y para qué sirve.

## Las mismas ventas, de las dos formas

Aquí van los cuatro pedidos en Python, usando solo lo que ya trae el lenguaje (esto lo practicamos en profundidad en la plataforma). El código es solo para leer: no hace falta instalar ni ejecutar nada. Cada pedido es un diccionario: un conjunto de pares nombre-valor. `total_batch` recibe la lista entera y suma una sola vez: `sum(... for ...)` es una suma que recorre la lista y toma el importe de cada pedido. `llegan` es un generador: una función con `yield` que entrega los pedidos de uno en uno, como si fueran entrando en la tienda. El bucle `for` los recibe según salen y actualiza el total en cada vuelta con `+=`, que significa acumular: suma el importe al total que ya había.

1pedidos = [
2 {"id": 1001, "cliente": "Lucía", "importe": 38.0},
3 {"id": 1002, "cliente": "Marcos", "importe": 15.0},
4 {"id": 1003, "cliente": "Lucía", "importe": 12.5},
5 {"id": 1004, "cliente": "Elena", "importe": 30.0},
6]
7
8
9def total_batch(lote):
10 # Todo de golpe: la lista completa y una sola suma
11 return sum(p["importe"] for p in lote)
12
13
14def llegan(lote):
15 # Entrega los pedidos de uno en uno, como si entraran en la tienda
16 for p in lote:
17 yield p
18
19
20print("BATCH (al cierre):", len(pedidos), "pedidos, total", total_batch(pedidos), "€")
21
22print("STREAMING:")
23total = 0.0
24for p in llegan(pedidos):
25 total += p["importe"]
26 print(" pedido", p["id"], "-> total acumulado", total, "€")

Salida: "BATCH (al cierre): 4 pedidos, total 95.5 €" y, en streaming, un total acumulado tras cada pedido: 38.0, 53.0, 65.5 y 95.5 €.

Fíjate en el último número. El batch da 95,5 € y el streaming termina en 95,5 €: mismo resultado (en la salida verás 95.5 porque Python escribe el punto como separador decimal; es el mismo número). La diferencia está en el camino. El batch te da una respuesta, al final. El streaming te da cuatro, y tras el primer pedido ya sabías que llevabas 38 €.

Nuestro streaming es una simulación: los pedidos ya estaban en una lista. En uno real el programa se queda esperando y no sabe cuándo acabará el flujo, porque no acaba. Por eso no puede hacer una suma final como el batch: tiene que ir guardando el total y retocarlo con cada evento.

## Cuál elijo yo

PreguntaBatchStreaming
Cuándo procesaUna vez, a hora fijaAl llegar cada dato
Qué procesaTodo el lote juntoUn evento cada vez
Cuándo sabes el totalAl acabar la tareaEn todo momento
Cómo está el sistemaEncendido un ratoEncendido siempre
Las mismas ventas de la tienda ficticia, vistas desde cada lado.

Mi postura: empieza siempre por batch. Es más simple, es más barato de mantener y casi todas las preguntas del negocio, como "cuánto vendimos ayer" o "qué producto subió esta semana", no necesitan la respuesta en segundos. El streaming merece la pena cuando alguien tiene que actuar en el momento: bloquear un pago sospechoso antes de que se complete, o avisar de que se agota el stock mientras aún hay gente comprando. Montar streaming para un informe que se lee cada mañana es poner un manguera de bomberos para regar una maceta.

Antes de elegir, hazte esta pregunta: ¿qué haría alguien distinto si tuviera el dato ahora en vez de mañana? Si la respuesta es "nada", es un caso de batch. Y cuando en una entrevista te pregunten por la diferencia, cuenta el ejemplo de la tienda: se entiende más rápido que cualquier definición.

En resumen: batch junta los datos y los procesa de golpe cada cierto tiempo; streaming los procesa uno a uno según llegan. Con los mismos pedidos acaban en el mismo total, pero con distinta latencia. Para practicar, añade un quinto pedido a la lista y comprueba que las dos formas suman lo mismo. Luego imagina que el batch se lanza a las 23:00 y que ese pedido entra a las 23:59: en cuál de los dos mundos aparece en el total de hoy.

$ whoami

Regístrate gratis para dar like, guardar posts en carpetas y recibir nuevos artículos por email.

Leer está bien. Ejecutar está mejor.

## comentarios

¿Te ha servido? ¿Añadirías algo? ¿Lo has vivido de otra forma en tu trabajo? Cuéntalo.

Inicia sesión para comentar y responder.

cargando comentarios...