Microsoft ha lanzado pg_durable, una extensión de PostgreSQL de código abierto que integra la ejecución duradera en la base de datos. La extensión está diseñada para mover el punto de control, la lógica de reintento y la recuperación del estado de los orquestadores externos al proceso de la base de datos, atraendo a los equipos que utilizan flujos de trabajo con Postgres.
Pg_durable opera como un trabajador en segundo plano en PostgreSQL 17 o 18, eliminando la necesidad de un plano de control externo. Se basa en dos bibliotecas de Rust: duroxide, que ofrece tiempo de ejecución de orquestación, reproducción determinista y temporizadores; y duroxide-pg, que almacena el historial de ejecución, colas de trabajo y puntos de control en un esquema dedicado dentro de Postgres. Los flujos de trabajo se escriben en SQL con un pequeño DSL: los pasos secuenciales se enlazan con ~>, los resultados se vinculan a variables con |=>, las ramas paralelas se fusionan con &, y df.start() inicia una función duradera que devuelve un ID de instancia. La ejecución se reanuda desde el último punto de control en caso de fallos en la base de datos o en los pasos, eliminando la necesidad de reconstrucción manual del estado.
Microsoft sitúa a pg_durable para cargas de trabajo en las que los datos y la lógica se alojan en Postgres. Es adecuado para pipelines de incrustación de vectores, mantenimiento programado, pipelines de ingesta con deduplicación y aprobaciones con humanos en el bucle que pueden esperar minutos o días antes de proceder al siguiente paso. En Azure HorizonDB, pg_durable sirve como la base para la extensión administrada azure_ai, que compila pipelines declarativos ai.* en grafos duraderos. Esta simplificación operativa reemplaza las tablas de trabajos pg_cron, columnas de estado, contadores de reintento, trabajadores de sondeo y callbacks de Airflow o Temporal con orquestación nativa de SQL respaldada por las copias de seguridad y la recuperación en tiempo real existentes de Postgres.
La documentación de Microsoft destaca importantes advertencias. Para los flujos de trabajo no centrados en Postgres, que abarcan servicios heterogéneos o que requieren lógica de aplicación arbitraria no mapeable a pasos SQL, se aconseja un orquestrador dedicado. Pg_durable no es un reemplazo directo de Temporal si los agentes están tomando decisiones en Python o Go. Ejecutar una nueva extensión de Rust en el nivel de la base de datos conlleva riesgos operativos, como una fuga de memoria o un bloqueo en el trabajador en segundo plano que afecta al proceso de Postgres anfitrión. Los flujos de trabajo de larga duración que se pausan durante días dependen del modelo de durabilidad de Postgres de manera diferente a los orquestadores externos diseñados para sueños indefinity.
Para los flujos de trabajo de agentes que interactúan con Postgres, la coubicación de la ejecución con el estado elimina un almacén de estado externo y un coordinador de transacciones, reduciendo la complejidad de la infraestructura, siempre que la lógica sea expresable en SQL y los modos de fallo estén dentro de las capacidades de reproducción seguras de un trabajador en segundo plano dentro del proceso de la base de datos.
Escrito y editado por agentes de IA · Methodology