Cómo funciona
Dos cosas tienen que ocurrir para que el datalake reciba datos: configurar y ejecutar. La configuración se hace una vez, en la consola. La ejecución ocurre en cada snapshot, sola.
La distinción importa porque el pipeline termina con éxito incluso sin la configuración completa. Sin ninguna base marcada para ingesta, el snapshot se exporta, los archivos Parquet llegan a S3, y el job de copia los ignora en silencio. No hay error en ninguna parte — por eso la vista general de la consola lista lo que todavía falta.
El camino de una tabla
Sección titulada «El camino de una tabla»1. AWS toma el snapshot automático (ventana de backup) o manual
2. RDS lo exporta en Parquet exported/{cluster}/{export}/pagila/public.payment/1/*.parquet
3. Data Pump copia lo que marcaste, con el nombre que le diste catalog/{cluster}/pagila.pagamentos/*.parquet
4. Reparticiona las tablas configuradas catalog/{cluster}/pagila.pagamentos/ano=2024/mes=03/*.parquet
5. Glue lo cataloga SELECT * FROM datalake.pagila_pagamentos WHERE ano = 2024Los pasos 3 y 4 son donde entran tus decisiones: qué bases y tablas (configurar la ingesta) y cómo reparticionar (particiones).
El disparador
Sección titulada «El disparador»Cuando un snapshot queda listo, RDS publica un evento. Una función Lambda lo recibe, verifica si ese clúster está suscrito y, si lo está, inicia la exportación. Cuando la exportación termina, el mismo camino dispara el pipeline de procesamiento.
La Lambda es la misma en ambos momentos — los distingue por el tipo de evento. Los eventos que no interesan (creación iniciada, copia, eliminación) se registran y se ignoran.
El pipeline
Sección titulada «El pipeline»Cuatro jobs en secuencia, todos como tasks Fargate a partir de la misma imagen:
- Limpia el catálogo anterior —
catalog/{cluster}/se reconstruye en cada ejecución, así que siempre refleja el estado actual de la base. - Copia los archivos — solo de las bases marcadas, aplicando filtros de tabla y alias.
- Reparticiona — una task por tabla configurada, en paralelo.
- Limpia el export bruto — opcional.
Al final, el crawler de Glue cataloga el resultado y se publica una notificación en un tópico SNS, para quien quiera encadenar algo después.
Dónde quedan los datos en S3
Sección titulada «Dónde quedan los datos en S3»exported/{cluster}/{export}/{banco}/{schema}.{tabela}/{parte}/*.parquet └── lo que produce RDS: todo lo que contiene el snapshot
catalog/{cluster}/{alias}.{tabela}/*.parquet └── lo que cataloga Glue: solo lo que marcaste
longterm/{cluster}/{alias}/{tabela}/ └── histórico que sobrevive a la purga en la base de origenLa diferencia entre catalog/ y longterm/ es lo que permite
mantener histórico después de
purgar datos antiguos de Postgres: catalog/ se recrea en cada ejecución;
longterm/ acumula.
Tablas ya particionadas en Postgres
Sección titulada «Tablas ya particionadas en Postgres»Si una tabla está particionada nativamente en Postgres, RDS exporta la tabla madre y cada partición hija como tablas separadas. La madre ya contiene todas las filas, así que copiar las dos duplicaría cada fila en el datalake.
Data Pump detecta e ignora las hijas, usando los metadatos del propio export — no el patrón del nombre. Las particiones nuevas creadas en la base se reconocen solas; no hay lista que mantener.