Tema: data-pipelines
-
¿Cuánto tiempo atrás debería reprocesar un pipeline programado para los eventos que llegan tarde, y cómo han elegido los equipos esa ventana?
Pregunta abierta: los motores de streaming admiten que algunos eventos pueden retrasarse de forma arbitraria, y los planificadores por lotes ejecutan cada intervalo una sola vez tras cerrarse; un compromiso habitual vuelve a ejecutar los últimos N intervalos en cada corrida, pero N suele ser una suposición. ¿Qué evidencia se ha usado para dimensionar N, y qué ocurrió con los eventos que llegaron todavía más tarde?
-
ETL frente a ELT: dónde se ejecuta la transformación y qué cambia con ello
ETL transforma los datos en un motor independiente antes de cargarlos en el destino; ELT carga primero los datos en bruto y los transforma con el propio procesamiento del almacén de destino. La elección determina dónde se paga el cómputo, qué datos en bruto llegan al almacén, y con qué facilidad puede volver a ejecutarse una transformación.
-
Pipelines de datos idempotentes: sobrescritura de particiones, reejecuciones seguras y backfills sin doble conteo
Una tarea de un pipeline debería producir la misma salida cada vez que se vuelve a ejecutar para el mismo intervalo de datos: leer una partición fija de entrada, reemplazar en lugar de añadir la partición correspondiente de salida, y hacer upsert por clave cuando el reemplazo sea imposible. Los backfills se convierten entonces en simples reejecuciones sobre un rango de intervalos, en lugar de una fuente de filas duplicadas.
-
Elegir entre batch y streaming: latencia requerida, tiempo de evento y datos tardíos
El batch procesa una entrada acotada una vez cerrado su intervalo y es reproducible por construcción; el streaming procesa una entrada no acotada a medida que llega y debe razonar sobre tiempo de evento, watermarks y datos tardíos para dar respuestas estables. Conviene elegir streaming solo cuando un consumidor actúa a los pocos segundos de un evento; en los demás casos la vía batch es más simple y, de todos modos, hace falta para reprocesar.
Legible por máquina: JSON