Skip to content

Cronを不要にするPostgres拡張機能

Microsoftが提供する新しいオープンソース拡張機能により、Postgres内で直接、耐久性がありフォールトトレラントなワークフローを構築できます。これにより、外部のオーケストレーターやcronジョブを不要にし、わずか数行のSQLで複雑なパイプラインを管理できるようになります。

Nora Vance
Hero image for: Cronを不要にするPostgres拡張機能

要約 / ポイント

Microsoftが提供する新しいオープンソース拡張機能により、Postgres内で直接、耐久性がありフォールトトレラントなワークフローを構築できます。これにより、外部のオーケストレーターやcronジョブを不要にし、わずか数行のSQLで複雑なパイプラインを管理できるようになります。

データベース内のオーケストレーター

PG Durableは、Microsoftが開発した新しいオープンソースのPostgres Extensionであり、誰でもPostgres内で直接、耐久性がありクラッシュに強い関数を実行できるようにします。これにより、データベースがワークフローオーケストレーターに変貌し、外部サービスの必要がなくなります。

これまで、複雑なデータベース中心のワークフローを管理するには、cronジョブ、Temporal、メッセージキューのような外部システムと格闘する必要がありました。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行以上のボイラープレートコードが、わずか7行のPG Durable SQLに置き換えられます。この劇的な削減は、複雑なオーケストレーションロジックをデータベース自体に移行することによって実現されます。

メッセージキューを管理し、新しいタスクをポーリングし、メッセージ処理を行い、複数のステップにわたる状態を追跡し、自動リトライによるエラー処理を実装する堅牢なシステムを構築することを想像してみてください。通常、これにはかなりのカスタムコードまたは外部サービスが必要です。PG Durableはこれらすべてを抽象化し、ビジネスロジックに集中できるようにします。

この簡潔さにより、PG Durable は特定のワークフローで真価を発揮します。以下に最適です。 - 信頼性の高い多段階データ変換が必要な ETL パイプライン。 - マテリアライズドビューの更新や日次クリーンアップタスクの実行などのスケジュールされたメンテナンス。 - 注文処理や請求書処理などの多段階ビジネスロジック。 - 外部呼び出しとその応答を耐久性をもって管理する必要がある API 統合ワークフロー。

その力は、拡張機能が困難な部分を処理することにあります。開発者は、durability、自動再試行、または複雑な状態管理のためのカスタムソリューションを構築する必要がなくなります。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 extensionとして、データベースインスタンス内にインストールおよび構成するために特定の権限が必要です。また、耐久性のある関数を実行するために専用のbackground workerを活用するため、データベースサーバーの不可欠な部分となります。このアーキテクチャはクラッシュに強い信頼性を提供しますが、PG Durable はデータベース内オーケストレーションのための強力な専門ツールであり、インフラストラクチャ全体のあらゆるオーケストレーション課題に対する普遍的な代替品ではないことも意味します。

よくある質問

PG Durable とは何ですか?

PG Durable は、Microsoft が提供するオープンソースの PostgreSQL extension で、開発者が SQL ネイティブな DSL を使用して、耐久性があり、フォールトトレラントなワークフローとスケジュールされたジョブをデータベース内で直接作成および管理できるようにします。

PG Durable は従来の cron job とどう異なりますか?

単純なスケジューラーである cron job とは異なり、PG Durable はステートフルで耐久性のある実行を提供します。そのワークフローは各ステップでディスクに永続化されるため、データベースのクラッシュや再起動にも耐え、中断した場所から自動的に再試行および再開できます。

PG Durable は Temporal や Airflow のようなツールの代替となりますか?

PG Durable はデータベース中心のワークフローにとって優れた代替品であり、外部サービスの必要性を排除します。しかし、Temporal や Airflow のようなツールは、多くの異種システムにまたがる複雑なオーケストレーションや、主要なロジックがデータベースの外部にある場合に、より適しています。

PG Durable にはどのバージョンの PostgreSQL が必要ですか?

PG Durable は最新の PostgreSQL バージョン向けに設計されています。Microsoft の公式 Docker image は Postgres 17 で動作し、最新の互換性情報については公式ドキュメントを参照するのが最適です。

PG Durable ワークフローは外部 HTTP 呼び出しを行うことができますか?

はい、PG DurableはSQLワークフローから直接HTTPリクエストを行う機能を含んでおり、耐久性のある関数の一部として外部APIと統合できます。

Found this useful? Share it.

AI Reputation Report

What AI knows about you.

ChatGPT, Perplexity, Gemini, Claude & Grok are already answering questions in your category. Type your site, see who they name — you, or your competitor. Free preview.

Check my sitefree preview

One short daily email of tools worth shipping. No drip funnel.

one email a day · unsubscribe in two clicks · no third-party tracking

🚀もっと見る

AI最前線をキャッチアップ

Stork.AIが厳選したAIツール、エージェント、MCPサーバーをご覧ください。

P.S. 使えるものを作りましたか? Storkに掲載