name: pg-durable description: "Ejecución durable dentro de PostgreSQL — flujos de trabajo SQL que sobreviven a crashes y reinicios. Microsoft, 1.5k⭐" url: https://github.com/microsoft/pg_durable category: infraestructura fecha: 2026-06-08
pg_durable — Durable Execution en PostgreSQL
¿Qué hace?
pg_durable lleva el patrón de durable execution (ejecución durable) directamente dentro de PostgreSQL. Permite definir funciones SQL de larga duración que se checkpointean paso a paso y se reanudan tras crashes, reinicios o fallos.
El problema que resuelve: Equipos que ya usan PostgreSQL pero necesitan workflows fiables terminan apilando cron jobs, workers, queues y tablas de estado. pg_durable elimina esa complejidad.
Características clave
- Funciones SQL durables — Un workflow es un grafo de pasos SQL que PostgreSQL ejecuta y checkpointea
- Resistencia a fallos — Si la DB crasha, el workflow se reanuda desde el último checkpoint
- Sin infraestructura extra — Todo vive dentro de PostgreSQL, no necesitas servicios adicionales
- PostgreSQL 17 y 18 — Compatible con las últimas versiones
- Escrito en Rust — Parte de la estrategia de Microsoft de llevar compute close to data
- Azure HorizonDB — Ya disponible en el servicio cloud de Microsoft
Casos de uso
- Pipelines de datos — Workflows ETL que sobreviven a reinicios del servidor
- Pipelines de IA — Procesamiento de documentos, embeddings, inferencias encadenadas
- Automatización DBA/SRE — Runbooks que deben sobrevivir a maintenance windows
- Orquestación de agentes IA — Cada agente puede tener su workflow durable por fila/doc
Snippets útiles
-- Ejemplo conceptual de workflow durable en SQL
-- (la sintaxis exacta ver docs oficiales)
-- Definir un workflow con pasos checkpointeados
SELECT pg_durable.create_workflow(
'mi_pipeline',
$$
-- Paso 1: validar datos
SELECT * FROM validate_records($1);
-- Paso 2: transformar
SELECT transform_record(r) FROM validate_records($1) r;
-- Paso 3: generar embeddings
SELECT embed(text) FROM transformed_records;
-- Paso 4: insertar en vector store
INSERT INTO vector_index SELECT * FROM embedded_records;
$$
);
-- Ejecutar y esperar
SELECT pg_durable.execute('mi_pipeline', '{"doc_id": 123}');
# Docker quickstart
docker-compose up
# Init script
docker-entrypoint-initdb.d/01-init-pg-durable.sh
Cómo integrarlo
- Instalar la extensión en PostgreSQL 17/18
- Definir workflows como funciones SQL con pasos checkpointeados
- Ejecutar desde tu aplicación o directamente en SQL
- Monitorear estado desde tablas de sistema
# Estructura del proyecto
.docker/
.docker-compose.yml
.docker-entrypoint-initdb.d/01-init-pg-durable.sh
.docker/
USER_GUIDE.md
docs/
Diferencias con alternativas
| pg_durable | Temporal | AWS Step Functions | Apache Airflow | |
|---|---|---|---|---|
| Infraestructura | Ninguna (dentro de Postgres) | Servicio separado | Cloud AWS | Cluster propio |
| Lenguaje | SQL | Any (SDKs) | Visual/SDK | Python |
| Latencia | Muy baja (in-DB) | Media | Alta | Alta |
| Coste | Solo Postgres | Infra adicional | Por ejecución | Infra + mantenimiento |
| Escrito en | Rust | Go | .NET | Python |
Pitfalls
- PostgreSQL 17/18 solo — No funciona en versiones anteriores
- Azure HorizonDB — La implementación de Microsoft ya está en HorizonDB; la open-source puede tener lag en features
- No es un scheduler — Es durable execution, no orquestación de jobs programados
- Rust dependency — Requiere toolchain Rust para compilar desde source
Fecha de descubrimiento
2026-06-08 — Trending diario, 1.5k⭐, creado febrero 2026