Кратко / Главное
Новое расширение с открытым исходным кодом от Microsoft позволяет создавать надежные, отказоустойчивые рабочие процессы непосредственно внутри Postgres. Это означает, что вы можете отказаться от внешних оркестраторов и cron jobs, управляя сложными конвейерами всего несколькими строками SQL.
Оркестратор внутри вашей базы данных
PG Durable — это новое, открытое Postgres Extension, разработанное Microsoft, которое позволяет каждому запускать надежные, отказоустойчивые функции непосредственно внутри Postgres. Оно превращает вашу базу данных в оркестратор рабочих процессов, устраняя необходимость во внешних сервисах.
Слишком долго управление сложными, ориентированными на базу данных рабочими процессами означало борьбу с внешними системами, такими как cron jobs, Temporal или message queues. PG Durable решает эту проблему, внедряя запланированные задачи, автоматические повторные попытки и длительные процессы непосредственно в вашу базу данных, значительно упрощая вашу архитектуру.
Что делает эти функции по-настоящему «надежными»? В отличие от обычной транзакции `BEGIN...COMMIT`, PG Durable сохраняет состояние вашей функции на диск на каждом шаге ее выполнения. Это гарантирует, что если ваша база данных выйдет из строя или перезапустится в середине рабочего процесса, ваш процесс возобновится точно с того места, где он остановился, без потери прогресса.
Эта гарантия отказоустойчивости меняет правила игры. Она обеспечивает надежную отказоустойчивость для критически важных операций, от согласований с участием человека до многошаговых преобразований данных, которые ранее требовали сложной внешней оркестрации. Думайте об этом как об отказоустойчивом движке рабочих процессов, встроенном прямо в сердце ваших данных.
Ваши новые суперспособности SQL
Представьте себе создание сложных рабочих процессов прямо внутри вашей базы данных, а не просто запросы к ней. PG Durable дает вам новые суперспособности SQL, превращая вашу базу данных в полноценный оркестратор. Он представляет SQL-native DSL с мощными операторами для определения потока выполнения.
Вы можете последовательно выполнять операции с помощью `~>`, запускать их параллельно, используя `&`, или создавать бесконечные циклы с помощью `@>`. Это позволяет вам строить сложные графы шагов непосредственно в ваших SQL-операторах, делая сложную логику удивительно лаконичной.
PG Durable также предоставляет важные встроенные функции. Используйте `df.start()` для асинхронного запуска рабочего процесса, немедленно получая ID для отслеживания. Нужна cron-подобная планировка? `df.wait_for_schedule` позволяет приостановить выполнение до указанного времени. Для согласований с участием человека или внешних событий `df.wait_for_signal` приостанавливает ваш рабочий процесс до получения сигнала к пробуждению.
Важно отметить, что когда вы запускаете процесс с помощью `df.start()`, он выполняется в фоновом рабочем процессе Postgres. Это означает, что ваше клиентское соединение немедленно возвращает ID и не блокируется, даже для длительных или постоянно циклических рабочих процессов. Ваша база данных берет на себя основную нагрузку, освобождая ваше приложение.
От 300 строк кода до 7
Когда мы говорим о «на 90% меньше кода», это не просто маркетинговая уловка. Рассмотрим пример из видео: более 300 строк шаблонного кода — для настройки очередей, обработки ошибок, управления рабочими процессами и отслеживания состояния — могут быть заменены всего семью строками PG Durable SQL. Это значительное сокращение достигается за счет перемещения сложной логики оркестрации в саму базу данных.
Представьте себе создание надежной системы, которая управляет message queues, опрашивает новые задачи, обрабатывает сообщения, отслеживает состояние на нескольких шагах и реализует обработку ошибок с автоматическими повторными попытками. Обычно это требует значительного пользовательского кода или внешних сервисов. PG Durable абстрагирует все это, позволяя вам сосредоточиться на бизнес-логике.
Эта лаконичность позволяет PG Durable выделяться для конкретных рабочих процессов. Он идеально подходит для: - ETL-конвейеров, которым требуются надежные, многоэтапные преобразования данных. - Планового обслуживания, такого как обновление материализованных представлений или выполнение ежедневных задач по очистке. - Многоэтапной бизнес-логики, такой как выполнение заказов или обработка счетов. - Рабочих процессов интеграции API, которым необходимо надежно управлять внешними вызовами и их ответами.
Сила заключается в расширении, которое берет на себя сложные части. Разработчикам больше не нужно создавать собственные решения для устойчивости, автоматических повторных попыток или сложного управления состоянием. PG Durable предоставляет эти базовые возможности из коробки, гарантируя, что ваши рабочие процессы будут защищены от сбоев и самовосстанавливающимися с минимальным количеством кода.
Компромиссы: Когда стоит оставить свой оркестратор
Истинная мощь PG Durable проявляется, когда логика и состояние вашего рабочего процесса тесно переплетены с данными, уже находящимися в Postgres. Он идеально подходит для таких сценариев использования, как автоматизация обновления материализованных представлений, оркестрация многоэтапных преобразований данных или управление процессами утверждения с участием человека непосредственно там, где находятся ваши основные данные. Эта тесная интеграция внутри базы данных значительно упрощает разработку, устраняет зависимости от внешних служб и часто снижает операционные расходы для задач, ориентированных на данные.
Enjoying this? Get one like it in your inbox each morning.
one email a day · unsubscribe in two clicks · no third-party tracking
Однако внешние оркестраторы по-прежнему сохраняют свои позиции для более широких и сложных сценариев. Рассмотрите рабочие процессы, охватывающие множество гетерогенных систем — координацию микросервисов, внешних API и облачных функций на разных платформах. Для них выделенный оркестратор предлагает гибкость и надежные возможности интеграции, которые выходят далеко за рамки одной базы данных, особенно при работе со сложной прикладной логикой, плохо подходящей для SQL. Эти внешние инструменты предоставляют специализированный уровень для управления распределенными системами.
Разрешения на установку являются важным аспектом для PG Durable. Как расширение Postgres, он требует определенных привилегий для установки и настройки в вашем экземпляре базы данных. Он также использует выделенный фоновый рабочий процесс для выполнения устойчивых функций, что делает его неотъемлемой частью вашего сервера баз данных. Хотя эта архитектура обеспечивает надежность, защищенную от сбоев, это также означает, что PG Durable является мощным, специализированным инструментом для оркестрации внутри базы данных, а не универсальной заменой для каждой задачи оркестрации во всей вашей инфраструктуре.
Часто задаваемые вопросы
Что такое PG Durable?
PG Durable — это расширение PostgreSQL с открытым исходным кодом от Microsoft, которое позволяет разработчикам создавать и управлять устойчивыми, отказоустойчивыми рабочими процессами и запланированными заданиями непосредственно в базе данных с использованием SQL-нативного DSL.
Чем PG Durable отличается от традиционной cron-задачи?
В отличие от cron-задачи, которая является простым планировщиком, PG Durable обеспечивает выполнение с сохранением состояния и устойчивостью. Его рабочие процессы сохраняются на диск на каждом шаге, что означает, что они могут пережить сбои и перезапуски базы данных, автоматически повторяя и возобновляя работу с того места, где они остановились.
Является ли PG Durable заменой для таких инструментов, как Temporal или Airflow?
PG Durable — отличная замена для рабочих процессов, ориентированных на базу данных, устраняющая необходимость во внешних службах. Однако такие инструменты, как Temporal или Airflow, лучше подходят для сложной оркестрации во многих гетерогенных системах или когда основная логика находится вне базы данных.
Какая версия PostgreSQL требуется для PG Durable?
PG Durable разработан для современных версий PostgreSQL. Официальный образ Docker от Microsoft работает на Postgres 17, и для получения актуальной информации о совместимости лучше всего обратиться к официальной документации.
Могут ли рабочие процессы PG Durable выполнять внешние HTTP-вызовы?
Да, PG Durable включает функциональность для выполнения HTTP requests непосредственно из SQL workflow, позволяя вам интегрироваться с external APIs как часть вашей durable функции.
