Iceberg y Nessie hacen más seguros los cambios de datos

Git les dio a los equipos de aplicaciones una forma de probar algo sin romper main. Los equipos de datos esperaron mucho tiempo el equivalente.

Hace rato que uso Iceberg con Nessie como catálogo. Lo que me convenció no fue el time travel ni el formato de archivo. Fue poder decir probalo en una rama y que sea cierto.

Las ramas son el punto

Cambio de esquema, backfill, un esquema de particiones del que no estás seguro: hacelo en una rama, apuntá un job de prueba ahí y mirá qué sale. Nadie aguas abajo ve nada hasta que mergeás. Antes la alternativa era una copia completa de la tabla, o un WHERE muy cuidadoso y una noche de sueño que no ibas a tener.

-- Spark SQL with the Nessie extensions enabled.
CREATE BRANCH IF NOT EXISTS backfill_orders IN nessie FROM main;
USE REFERENCE backfill_orders IN nessie;

-- Run the backfill here. Nobody reading main sees any of it.
INSERT OVERWRITE nessie.sales.orders
SELECT * FROM nessie.staging.orders_backfill;

-- Compare, check the downstream reads, then promote.
MERGE BRANCH backfill_orders INTO main IN nessie;

-- When someone says the numbers changed:
SELECT snapshot_id, committed_at, operation
FROM nessie.sales.orders.snapshots
ORDER BY committed_at DESC;
Ejemplo ilustrativo, no es código de producción.

Los snapshots convierten discusiones en diffs

Cuando alguien dice que los números cambiaron, podés comparar el snapshot 4 contra el 5 en lugar de reconstruir qué hizo el pipeline el martes pasado. Consultar db.table.snapshots tarda dos segundos y me ahorró varias conversaciones largas.

Promover no debería tener historia

Mergeás la rama, verificás que las lecturas aguas abajo sigan funcionando y te guardás el id del snapshot anterior en un lugar donde lo encuentres rápido. Si un release necesita un runbook y dos personas mirando un dashboard, la rama no hizo su trabajo.

Rinde donde las cosas cambian seguido

Vale el setup cuando los contratos todavía se mueven, las tablas siguen evolucionando o aparecen consumidores nuevos todos los meses. En una tabla que hace tres años tiene las mismas seis columnas, es casi todo overhead. No todo necesita un catálogo versionado, y hacer como que sí es la forma en que las plataformas se ponen pesadas.