1. Glosario/

Staging Table

Área de staging, landing table

Una staging table es una tabla intermedia que recibe los datos brutos desde la fuente antes de que sean transformados y cargados en el destino final. Separa con claridad las tres fases de un proceso ETL, haciendo que cada fase sea independiente, monitorizable y reanudable tras un fallo.

Cómo funciona #

Los datos se copian primero en bloque en la staging table — habitualmente sin restricciones de integridad referencial activas para maximizar el rendimiento de los INSERT — y solo después se aplican los controles de calidad, las transformaciones y el MERGE hacia las tablas de destino.

-- 1. Carga bruta en la staging table (sin restricciones activas)
INSERT /*+ APPEND */ INTO stg_orders
SELECT * FROM ext_orders_source;

-- 2. Transformación y MERGE en la tabla de destino
MERGE INTO orders tgt
USING stg_orders src
  ON (tgt.order_id = src.order_id)
WHEN MATCHED THEN UPDATE SET tgt.status = src.status
WHEN NOT MATCHED THEN INSERT (order_id, status) VALUES (src.order_id, src.status);

Operar en bulk sobre la staging table en lugar de fila a fila reduce drásticamente el número de COMMITs y la presión sobre el redo log.

Cuándo se usa #

Las staging tables son la solución adecuada cuando el volumen de datos hace inviable la transformación en vuelo durante la ingestión. Son especialmente útiles cuando:

  • el proceso ETL debe ser reanudable (basta con relanzar desde el último TRUNCATE/INSERT sobre la staging);
  • el sistema fuente no tolera consultas lentas ni transacciones de larga duración;
  • se quiere aplicar Parallel DML en la fase de MERGE sin bloquear la fuente.

El principal trade-off es el espacio en disco adicional y la latencia introducida por la doble escritura, asumible en prácticamente todos los contextos batch.