外部数据包装器 (FDW) 是一个 PostgreSQL 扩展,它允许使用普通 SQL 查询和写入外部数据源。外部数据源可以是任何提供数据访问的内容,包括其他数据库(PostgreSQL 和其他数据库引擎)、平面文件、具有数据 API 的网站、源代码存储库以及许多其他可能性。
PostgreSQL 将两种外部数据包装器作为 contrib 模块 提供:
postgres_fdw- 允许与 PostgreSQL 数据库建立读/写连接。file_fdw- 允许从平面文件读取数据。
此外,还有大量的第三方外部数据包装器可用。
实现
一个 外部数据包装器 实现为一个 扩展,它提供 PostgreSQL 和外部数据源之间的接口。数据源本身通过创建包含远程数据源连接详细信息和其他选项的 外部服务器 来定义。然后,可以创建 外部表,这些表以 PostgreSQL 关系的形式定义远程数据。
当 PostgreSQL 规划器 遇到引用外部表的查询时,它会将查询的适当部分移交给相应的外部数据包装器。
历史
外部数据包装器支持的初步实现始于 PostgreSQL 8.4,增加了对 SQL/MED 标准某些元素的支持,但直到 PostgreSQL 9.1 才提供用户可访问的功能。
以下列表概述了 PostgreSQL 9.1 及更高版本中添加的重要外部数据包装器功能;有关详细信息,请参阅每个 PostgreSQL 版本的发行说明。
- PostgreSQL 17
FDW可以用伪常量限制替换连接(提交 9e9931d2)。
- PostgreSQL 16
- PostgreSQL 14
- PostgreSQL 12
- PostgreSQL 11
- PostgreSQL 10
- 支持将聚合函数推送到远程服务器(提交 7012b132)。
- PostgreSQL 9.6
- PostgreSQL 9.5
- PostgreSQL 9.4
- PostgreSQL 9.3
- 添加了可写 外部表 支持(初始提交 dc3eb563)。
- postgres_fdw 作为 contrib 模块 添加(初始提交 d0d75c40)。
- dblink 被修改为使用外部数据包装器功能(提交 8255566f)。
- PostgreSQL 9.2
- 规划 API 改进,提供了更灵活的连接规划(提交 b1495393)。
- 为 外部表 启用统计信息收集(提交 263d9de6)。
- 为 外部表 添加了每列选项(初始提交 9088d1b9)。
- 在
ALTER FOREIGN DATA WRAPPER和ALTER SERVER中添加了RENAME选项(提交 5bcf8ede)。 CREATE TABLE (LIKE ...)可以使用 外部表 定义(提交 a9f2e31c)。
- PostgreSQL 9.1
- 添加了只读 外部表 支持(初始提交 0d692a0d)。
- file_fdw 作为 contrib 模块 添加(提交 7c5d0ae7)。
- PostgreSQL 8.4
- 初始内部实现(提交 cae565e5)。
有用链接
- 创建 PostgreSQL 外部数据包装器 - 2022 年 1 月 Aaron Son / DoltHub 的博客文章
