Microsoft Open-Sources PostgreSQL Extension for In-Database Durable Execution

TL;DR · AI 摘要
微软开源了 PostgreSQL 扩展 pg_durable,支持数据库内持久化执行工作流,无需外部编排系统。
核心要点
- pg_durable 允许在 PostgreSQL 内部直接定义持久化工作流,无需外部编排系统。
- 使用 ~> 和 |=> 操作符,可在 SQL 中定义顺序执行和变量绑定。
- 适用于向量嵌入流水线和计划维护任务,如检测膨胀、触发通知等。
结构提纲
按章节快速跳转。
- §引言
微软开源了 PostgreSQL 扩展 pg_durable,支持数据库内持久化执行工作流。
pg_durable 允许开发者在 SQL 中直接定义持久化工作流,无需外部编排系统。
通过 ~> 和 |=> 操作符,可以在 SQL 中定义顺序执行和变量绑定。
- ·适用场景
pg_durable 适用于向量嵌入流水线和计划维护任务,如检测膨胀、触发通知等。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- pg_durable
- 核心机制
- SQL 内部定义工作流
- 持久化执行
- 无需外部编排系统
- 适用场景
- 向量嵌入流水线
- 计划维护任务
金句 / Highlights
值得收藏与分享的关键句。
pg_durable 允许在 PostgreSQL 内部直接定义持久化工作流,无需外部编排系统。
使用 ~> 和 |=> 操作符,可在 SQL 中定义顺序执行和变量绑定。
适用于向量嵌入流水线和计划维护任务,如检测膨胀、触发通知等。
微软开源用于数据库内持久执行的 PostgreSQL 扩展 - InfoQ
InfoQ 首页 News 微软开源用于数据库内持久执行的 PostgreSQL 扩展
AI、ML 与数据工程
为代理时代做准备:如何设计、构建、测试和运营 AI 驱动的系统(网络研讨会 7 月 16 日)
微软开源用于数据库内持久执行的 PostgreSQL 扩展
2026 年 6 月 10 日 2 分钟阅读
by
- Sergio De Simone
#### 为 InfoQ 撰稿
激发你的好奇心。
帮助 55 万+ 全球
高级开发人员
每个月保持领先。
联系我们
收听这篇文章 -
0:00
音频准备播放
你的浏览器不支持音频元素。
正常
1.25x
1.5x
喜欢
新下拉阅读列表
- 阅读列表
微软最近开源了 pg_durable,这是一个 PostgreSQL 扩展,它允许持久工作流在数据库内原生运行,无需使用外部编排系统。
根据微软的说法,pg_durable 让开发人员可以避免将 cron 作业、后台工作者、消息队列和外部编排器拼接在一起,以实现长期运行、容错的 SQL 函数。相反,工作流直接以 SQL 的形式表达,扩展负责处理执行问题,如重试、扇出和恢复。
使用 pg_durable,工作流直接在 SQL 中定义,重试状态、进度跟踪和检查点完全在 PostgreSQL 中管理,而不是在外部应用程序中。微软指出,这一个显著的优势是“一些应用层工作者、队列消费者或调度粘合代码可以完全消失”。
一个 pg_durable 函数是一组 SQL 步骤的图,PostgreSQL 在执行过程中会执行并检查点。如果数据库崩溃、重启或某个步骤失败,执行将从上一个持久检查点恢复,而不是让你手动重建状态。
该扩展将函数执行状态存储在 PostgreSQL 表中,允许工作流在崩溃、重启和故障转移后继续运行。它提供了一个 DSL,具有用于调度、条件和并行执行的一等原语。
以下是一个处理数据的持久函数的简短示例,它以离散步骤处理数据:
SELECT df.start(
'SELECT id FROM documents WHERE processed = false LIMIT 100' |=> 'batch'
~> 'UPDATE documents SET processed = true WHERE id = ANY($batch)'
);上面的代码片段显示了 ~> 和 |=>,这两个由 pg_durable 定义的特殊运算符,分别用于节点的顺序执行和结果绑定到变量。df.start 函数启动持久函数的执行。下一个示例展示了如何使用 df.join 函数或其等效的 & 运算符并行执行两个节点,并等待它们的完成:
df.join('SELECT count(*) FROM a', 'SELECT count(*) FROM b')\
'SELECT 1' & 'SELECT 2'微软将该扩展定位用于向量嵌入管道,其中数据必须被分块、发送到嵌入 API,然后插入到 pgvector 中,以及用于计划维护任务,如检测膨胀、触发通知、等待批准和执行后续操作。此外,它也适用于依赖外部 API 的工作流。
架构上,pg_durable 故意设计得非常简洁,因为它仅包含一个 Postgres 扩展和一个后台工作线程,没有外部控制平面。负责运行持久化函数的工作线程基于两个 Rust 库构建:duroxide,它提供编排运行时,包括确定性重放、检查点、子编排和计时器;以及 duroxide-pg,它在由 duroxide 所拥有的专用模式中持久化实例、历史记录、工作队列和其他运行时状态。
持久化执行是一种软件范式,它使长时间运行的工作流能够从故障点自动恢复,消除了复杂的手动状态恢复。这种模型简化了分布式系统,促进了稳健的代理架构和云控制平面。InfoQ 之前曾探讨过 Temporal 和 Cloudflare 等平台所支持的持久化执行。
作者部分的主包装器
关于作者
部分标题
每个作者的主包装器
#### Sergio De Simone
显示更多
显示更少
#### 此内容属于 AI、机器学习与数据工程主题
##### 相关主题:
- 开发
- AI、机器学习与数据工程
- 开源
- Postgres
- 微软
- 相关编辑
- 相关赞助商
- 相关赞助商 2026 年 7 月 16 日,东部时间下午 1 点 代理时代工程:如何设计、构建、测试和运营 AI 驱动的系统 主讲人:Juveria Kanodia - Harness 工程高级总监
InfoQ 新闻通讯
每周五发送 InfoQ 上一周内容的摘要。加入超过 250,000 名高级开发者的社区。查看示例
我们保护您的隐私。