解锁 Postgres 扩展日!与瀚高共探 C/Java 跨语言扩展技术的边界与未来
2025 年 5 月 13 日至 16 日(蒙特利尔时间),一年一度的 PostgreSQL 开发者大会 PGConf.dev(原 PGCON 会议)将在加拿大蒙特利尔盛大举行。同去年一样,在本次大会开幕的前一天同样会举办另外一个专场活动——Postgres Extensions Day,此活动会聚焦 PG 扩展的开发,交付,发布等方面。
Postgres Extensions Day 由 Postgres Extension Developers Coalition 组织,与 PGConf.dev 相临近但并非附属关系。目前议程已发布,共有 14 个演讲分享。
在 Postgres Extensions Day 活动中,瀚高的开发者将带来议题——通过 Java 扩展 PostgreSQL:克服 Java 和 C 应用交互的开发挑战。本次演讲将分享 SynchDB 项目的开发历程,该项目通过在 PostgreSQL 端编写 C 扩展、并集成 Java 版 Debezium Embedded,引导来自 MySQL、SQL Server、Oracle 等多种源的数据变更流入 PostgreSQL。
SynchDB 是一个 PostgreSQL 扩展,旨在以快速可靠的方式将来自一个或多个异构数据库(如 MySQL)的数据直接复制到 PostgreSQL。最新的 SynchDB 1.1 引入了 Oracle 连接器支持、增强的数据类型转换功能以及显著改进的核心数据处理引擎。此更新通过智能缓存和优化的 JSON 解析增强了性能,同时扩展了与 PostgreSQL 16、17 和 IvorySQL 4.4 的兼容性。
IvorySQL 内置 ivorysql_ora
插件强化 Oracle 兼容性,同时兼容 PostgreSQL 扩展(如 PostGIS、pgvector),形成“核心+插件”的模块化架构。IvorySQL 4.4 基于 PostgreSQL 17.4 内核,新增 Oracle 数据类型无缝支持与性能优化。作为 2025 年 PGConf.dev 大会赞助商,瀚高将在 PGConf.dev 上展示 IvorySQL 4.4 的技术突破,推动其纳入 PostgreSQL 全球生态主流分支。
如果您也关注 PostgreSQL 扩展的方方面面,可以提前一天去参与本场活动。友情提示,Postgres Extensions Day 完全免费,不过需要注册才能参与。
以下是 Postgres Extensions Day 的议题详情:
时间 | 议题 | 演讲者 | 议题简介 |
---|---|---|---|
9:00 am → 25 min | 从 pl/v8 到 pl/:走向更容易的扩展开发 | Hannu Krosing | pg_tle 为开发者提供了一个很好的开端,使任何开发者都能编写并部署安全的扩展,而无需成为超级用户。它甚至提供了一些钩子,供受信语言函数使用,例如执行密码策略等。pl/<any> 将这种能力扩展到可以使用任何语言编写数据库函数,从而编写扩展。主要途径是允许用 JavaScript 编写语言处理程序,这为任何拥有 JavaScript 转译器的语言提供了成为 PostgreSQL 嵌入式(或“pl/”)语言的可能性。 |
9:30 am → 25 min | 将大版本升级封装成一个扩展 | Andrey Borodin | ALTER SYSTEM 升级到 9.7 |
10:00 am → 25 min | Postgres 函数的内联:现状与未来展望 | Paul Jungwirth | 本次分享将介绍 Postgres 已实现的两种内联方式,以及一个正在开发中的补丁——旨在支持对大多数返回集函数进行内联。你的函数可用一个“计划树”自身替换,之后优化器会将它和查询中的其他部分融合在一起,这几乎就像写一个宏一样! |
10:30 am → 25 min | Postgres 按需定制:自选扩展的动态容器镜像 | Alvaro Hernandez | 本次演讲将深入探讨动态容器镜像背后的设计动机与技术原理,并解析如何通过该技术实现 Postgres 容器镜像的扩展模块任意组合。 |
11:00 am → 25 min | Cppgres:少一个厌恶 C++的理由 | Yurii Rashkovskii | 本次演讲将介绍 Cppgres:一个轻量级、仅含头文件的C++ 20 库,旨在简化 Postgres 扩展的开发流程、增强安全性并减少冗余代码。通过它,您可以利用现代 C++特性(如概念约束、自动类型推导和极简样板代码)编写清晰、可读且高性能的扩展。 |
11:30 am → 25 min | 在 Postgres 中使用 MemoryContexts 和调试内存泄漏 | Phil Eaton | 本次演讲将探讨创建和切换 MemoryContext 的实际用例,以及像 ebpf 这样的 Linux 工具,帮助我们发现内存泄漏。内容基于生产环境中的真实案例,总结了在编写扩展并寻找 Bug 过程中的经验与实用技巧。 |
12:00 pm → 25 min | 作为控制平面的 Postgres:通过扩展卸载计算的挑战 | Sweta Vooda | 本次讲座探讨了如何设计 Postgres 扩展,在卸载计算的同时保留 SQL 简单性和事务保证。基于 pgvector-remote 的实际经验,您将学习到缓冲、谓词下推、连接池和与 Postgres 内部机制(如 VACUUM)协作的实用模式。 |
1:30 pm → 25 min | 缺失的 Postgres 扩展仓库与包管理器 | Ruohang Feng(冯若航) | 尽管 PostgreSQL 扩展功能强大又灵活,大多数用户还是希望“开箱即用”,而非自己编译与手动构建。为解决这一痛点,我整合了一个统一的仓库(pigsty.io/ext/list/),打包了 200+ 扩展,补足了官方 PGDG 仓库的缺口。这些 RPM/DEB 包支持 5 个 Linux 发行版、五个主流 PostgreSQL 版本以及 x86 与 ARM 架构,一站式覆盖。本次分享将探讨如何构建这一仓库,包括跨发行版兼容、多架构支持、版本对齐等挑战,并分享经验教训及未来改进方向,让 PostgreSQL 扩展安装更轻松。 |
2:00 pm → 25 min | 如何在 PGXN 上自动发布您的扩展 | David Wheeler | 本次分享将演示如何为您的扩展配置 PGXN 分发流程,并利用工具链实现自动化发布以确保版本及时更新。核心要点涉及 Git 版本管理、JSON 配置及 GitHub 工作流的运用。通过本场讲解,您将掌握所需的所有信息,轻松实现扩展在 PGXN 上的快速自动化发布。 |
2:30 pm → 25 min | 通过 Java 扩展 PostgreSQL:克服 Java 和 C 应用交互的开发挑战 | Cary Huang(瀚高) | 本次演讲将分享 SynchDB 项目的开发历程,该项目通过在 PostgreSQL 端编写 C 扩展、并集成 Java 版 Debezium Embedded,引导来自 MySQL、SQL Server、Oracle 等多种源的数据变更流入 PostgreSQL。本演讲将深入探讨在一个扩展内同时使用 C 与 Java 时面临的关键挑战与解决方案,包括: 1. 基于 JNI 的跨语言调用 2. 将 Debezium Embedded 嵌入 C 扩展的过程 3. 内存管理与性能开销的应对 4. 如何在架构层面整合 2 种语言组件 5. 错误处理、监控及可维护性最佳实践 |
3:00 pm → 25 min | OLAP 架构重构:pg_mooncake v0.2 演进之路 | Cheng Chen | 本次演讲将探讨 pgmooncake v0.1 的不足之处以及 v0.2 中的主要架构变化。还将分享在使用 Postgres 复制、后台工作进程和 IPC 作为扩展时所获得的经验教训。 |
3:30 pm → 25 min | Spat:劫持共享内存,在 PostgreSQL 中实现类似 Redis 的体验 | Florents Tselai | 本次分享将介绍 PostgreSQL 向扩展开发者开放的共享内存 API(包括新的 DSM Registry),以及如何构建 Spat:一个把数据完全存储在共享内存、可在 PostgreSQL 内部提供类 Redis 体验的内存数据结构服务器。 |
4:00 pm → 25 min | 扩展升级 | Yurii Rashkovskii | 本次分享将探讨现有的扩展升级机制、常见的陷阱和挑战,具体包括: 1.本地代码升级 2.类型变更 3.扩展管理的数据保留 4.版本化依赖 5.不同版本的共存 |
4:30 pm → 25 min | 可扩展性 - 新选项和愿望清单 | Alastair Turner | 现在正是成为 PostgreSQL 扩展开发者的绝佳时机。围绕扩展的社区不断壮大,甚至出现了专门的扩展峰会活动。PostgreSQL 也持续开放更多的可扩展领域。过去一年提交的亮点包括扩展 EXPLAIN、累积统计和 COPY 的选项,但在存储等少数领域上,相关提案仍待推进。本次分享将带你了解近期新的可扩展领域(附示例代码),并探讨在那些尚未突破的领域(尤其存储)上可能的改进与努力方向。 |
Pigsty 的作者冯若航老师,也将在扩展日活动中进行分享:缺失的 Postgres 扩展仓库与包管理器。他的分享同样值得期待,您可以阅读他的文章《PG 扩展峰会日程出炉,蒙特利尔见》了解更多内容。
Postgres Extensions Day 以其聚焦技术纵深的议题设置,持续推动着数据库扩展生态的繁荣。从内存管理优化到跨语言开发挑战,从扩展包分发到共享内存创新,每一场演讲都在为 PostgreSQL 的可扩展边界注入新动能。随着社区对扩展开发的重视程度不断提升,我们期待更多像瀚高这样的团队,通过技术实践将 PostgreSQL 的"可编程基因"转化为驱动行业数字化转型的澎湃引擎。
5 月 12 日(蒙特利尔时间),蒙特利尔的技术盛宴即将开启。无论是想探究各个分享的奥秘,还是希望与全球顶尖开发者共话 PostgreSQL 未来,这场免费的扩展日盛会都不容错过。立即访问pgext.day完成注册,共同见证开源数据库生态的又一次进化跃迁。