Skip to content

Batch, incremental y streaming

La forma de procesar datos depende de la latencia necesaria, el volumen, el coste y la capacidad de la fuente.

Batch

Un pipeline batch procesa datos por lotes en momentos concretos.

Ejemplos:

  • Cierre diario de ventas.
  • Importacion nocturna de ficheros.
  • Recalculo semanal de metricas.
  • Carga historica de una tabla completa.

Ventajas:

  • Mas sencillo de razonar.
  • Facil de reprocesar.
  • Bueno para grandes volumenes agregados.
  • Coste mas predecible.

Riesgos:

  • Mayor latencia.
  • Ventanas de carga largas.
  • Fallos tardios si la validacion ocurre al final.

Incremental

Un pipeline incremental procesa solo datos nuevos o modificados.

Estrategias habituales:

  • Columna updated_at.
  • Id numerico creciente.
  • Particiones por fecha.
  • Change Data Capture.
  • Ficheros nuevos por carpeta.
  • Watermarks guardados por ejecucion.

Ejemplo:

sql
select *
from ventas
where updated_at > :last_watermark
  and updated_at <= :current_watermark;

El watermark debe persistirse cuando la carga termina correctamente. Si se guarda antes de escribir el destino, puedes perder datos en caso de fallo.

Streaming

Un pipeline streaming procesa eventos de forma continua o casi continua.

Ejemplos:

  • Clickstream.
  • Logs de aplicaciones.
  • Eventos de pagos.
  • Sensores IoT.
  • Cambios de inventario.

Ventajas:

  • Baja latencia.
  • Reaccion rapida ante eventos.
  • Bueno para alertas, fraude y experiencias en tiempo real.

Riesgos:

  • Mayor complejidad operativa.
  • Duplicados y eventos tardios.
  • Gestion de estado.
  • Orden parcial de eventos.

Microbatch

Microbatch procesa pequenos lotes con mucha frecuencia. Es un punto intermedio entre batch y streaming.

Ejemplo:

txt
cada 5 minutos -> leer eventos nuevos -> validar -> escribir tabla incremental

Es util cuando necesitas frescura razonable sin asumir toda la complejidad de un sistema streaming puro.

Eventos tardios

En sistemas reales, los eventos no siempre llegan en orden.

Un evento puede tener:

  • Event time: momento real en el que ocurrio.
  • Ingestion time: momento en el que llego al sistema.
  • Processing time: momento en el que fue procesado.

Para reporting y analitica suele importar event time. Para operacion tecnica puede importar ingestion time.

Comparativa rapida

TipoLatenciaComplejidadReprocesoCaso tipico
BatchAltaBajaSencilloCierre diario
IncrementalMediaMediaPor ventanaTablas actualizadas
MicrobatchBaja-mediaMediaPor loteSincronizacion frecuente
StreamingBajaAltaCon offsets/eventosEventos en tiempo real

Regla practica

Empieza con el modelo mas simple que cumpla la latencia real del negocio. Si un dashboard puede actualizarse cada hora, no construyas streaming solo porque suena mas moderno.