← На главную

Microsoft выпустила pg_durable: отказоустойчивые воркфлоу в PostgreSQL

05.06.2026 15:59 · hackernews

Microsoft выпустила pg_durable — расширение для PostgreSQL, которое приносит механизм отказоустойчивого выполнения прямо в базу данных. Идея простая: команды, которые уже хранят состояние в Postgres, больше не должны склеивать cron-задачи, очереди, воркеры и таблицы статусов, чтобы фоновые операции работали надёжно.

pg_durable позволяет определить воркфлоу прямо на SQL. Это граф шагов, которые PostgreSQL выполняет и контрольными точками сохраняет состояние между ними. Если база упадёт, перезапустится или какой-то шаг завершится ошибкой, выполнение продолжится с последней сохранённой точки. Никакой ручной подгонки состояния.

Расширение решает задачи, с которыми разработчики обычно борются через связку pg_cron и таблицы с колонками статусов и счётчиками повторов, через внешние оркестраторы вроде Airflow, Temporal, Step Functions или Argo, либо через очереди с отдельными таблицами для координации. Всё это заменяется одним расширением.

Примеры реальных сценариев: пайплайны векторных эмбеддингов (разбить текст, вызвать embedding API, вставить в pgvector), инжест данных (стадия, дедупликация, трансформация, публикация), плановое обслуживание (обнаружить bloat, уведомить, дождаться подтверждения, выполнить следующее действие), параллельная агрегация (независимые запросы, потом объединение результатов), внешние API-вызовы из SQL.

Архитектура проекта двухуровневая. Внутри PostgreSQL работает расширение, написанное на Rust через pgrx. Оно регистрирует фоновый воркер, который запускает рантайм оркестрации duroxide. Тот, в свою очередь, использует duroxide-pg — провайдер состояния, хранящий всё в схеме duroxide.*. Пользовательские функции и графы живут в схеме df.*.

Для доступа нужно PostgreSQL 17 или 18, Rust (nightly) и cargo-pgrx 0.16.1. Расширение устанавливается как обычный пакет: добавить pg_durable в shared_preload_libraries, перезапустить сервер и выполнить CREATE EXTENSION pg_durable. Доступ к данным разграничен через row-level security — администратор явно выдает права ролям. Фоновый воркер работает под суперпользователем и обходит RLS.

Проект распространяется под лицензией PostgreSQL License. Сейчас он на стадии preview. Microsoft подчёркивает, что телеметрии нет, а всю сборку и тесты автоматизированы через GitHub Actions с проверками cargo fmt, clippy, юнит-тестами и E2E-тестами.

Читать оригинал →