Saltar a contenido

Exporter (lakehouse)

El servicio que estratifica los datos hacia una capa analitica fria y serverless. Copia el historico validado desde la base de datos operacional (TimescaleDB, la capa caliente) a un lakehouse barato y duradero: ficheros Parquet en almacenamiento de objetos (GCS) mas un warehouse consultable (BigQuery). El objetivo es tener un almacen analitico que se pueda consultar aunque el cluster de computo este apagado, base para analitica, inteligencia de negocio y ML.

Su trabajo es exportar de forma incremental las lecturas ya limpias a Parquet en un bucket particionado por fecha, y cargar esos ficheros en una tabla nativa de BigQuery particionada por tiempo. El trabajo en si es un unico proceso batch; la orquestacion la pone la capa de Airflow, que lo lanza por calendario.

Lakehouse: lecturas limpias hacia Parquet en almacenamiento de objetos y luego a BigQuery

La ventana de datos de cada ejecucion sale siempre del intervalo programado y no del reloj actual, lo que hace repetibles el backfill y los reintentos. Al exportar, el proceso denormaliza cada lectura con los datos de su sensor (tipo y zona), enriqueciendo el dato para el analisis por dimensiones.

El particionado es la decision de diseno central. En el almacenamiento de objetos los ficheros se organizan por fecha en un layout Hive, y el bucket tiene un ciclo de vida que va abaratando el dato viejo automaticamente segun envejece. En el warehouse la tabla se particiona por tiempo y se agrupa (clustering) por tipo de sensor e identificador, de modo que las consultas solo escanean la porcion de datos que piden, saliendo rapidas y baratas.

El acceso a la nube se hace sin claves. El proceso corre bajo Workload Identity, una identidad ligada al propio cluster, de forma que escribe en el almacenamiento y en el warehouse tomando las credenciales de la infraestructura en lugar de custodiar secretos.

La honestidad sobre la deuda tecnica forma parte del diseno: la version actual anade filas al cargar, asi que reejecutar la misma ventana duplicaria datos en el warehouse. Se mitiga con la configuracion del orquestador (sin recuperacion automatica de intervalos pasados y una sola ejecucion simultanea), y queda declarado como deuda el pasar a una carga por fusion o con marca de agua para que el reintento sea un no-op real. Contrasta a proposito con la ingesta caliente, que si es idempotente por construccion.