T
traeai
登录
返回首页
InfoQ

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

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

TL;DR · AI 摘要

微软开源了 PostgreSQL 扩展 pg_durable,支持数据库内持久化执行工作流,无需外部编排系统。

核心要点

  • pg_durable 允许在 PostgreSQL 内部直接定义持久化工作流,无需外部编排系统。
  • 使用 ~> 和 |=> 操作符,可在 SQL 中定义顺序执行和变量绑定。
  • 适用于向量嵌入流水线和计划维护任务,如检测膨胀、触发通知等。

结构提纲

按章节快速跳转。

  1. 微软开源了 PostgreSQL 扩展 pg_durable,支持数据库内持久化执行工作流。

  2. pg_durable 允许开发者在 SQL 中直接定义持久化工作流,无需外部编排系统。

  3. 通过 ~> 和 |=> 操作符,可以在 SQL 中定义顺序执行和变量绑定。

  4. pg_durable 适用于向量嵌入流水线和计划维护任务,如检测膨胀、触发通知等。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • pg_durable
    • 核心机制
      • SQL 内部定义工作流
      • 持久化执行
      • 无需外部编排系统
    • 适用场景
      • 向量嵌入流水线
      • 计划维护任务

金句 / Highlights

值得收藏与分享的关键句。

#PostgreSQL#数据库#开源#工作流编排
打开原文

微软开源用于数据库内持久执行的 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,具有用于调度、条件和并行执行的一等原语。

以下是一个处理数据的持久函数的简短示例,它以离散步骤处理数据:

code
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 函数或其等效的 & 运算符并行执行两个节点,并等待它们的完成:

code
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 名高级开发者的社区。查看示例

我们保护您的隐私。

AI 可能会生成不准确的信息,请核实重要内容

Microsoft Open-Sources PostgreSQL Extension for In-Database Durable Execution | InfoQ | traeai