wrappers

Supabase提供的外部数据源包装器捆绑包

概览

扩展包名版本分类许可证语言
wrappers0.6.2FDWApache-2.0Rust
ID扩展名BinLibLoadCreateTrustReloc模式
8500wrappers-
相关扩展multicorn odbc_fdw jdbc_fdw pgspider_ext

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.6.21817161514wrappers-
RPMPIGSTY0.6.21817161514wrappers_$v-
DEBPIGSTY0.6.21817161514postgresql-$v-wrappers-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 0.6.2
PIGSTY 0.6.2
PIGSTY 0.6.2
PIGSTY 0.6.2
PIGSTY 0.6.2
u22.x86_64
u22.aarch64
PIGSTY 0.6.2
PIGSTY 0.6.2
PIGSTY 0.6.2
PIGSTY 0.6.2
PIGSTY 0.6.2
u24.x86_64
u24.aarch64
PIGSTY 0.6.2
PIGSTY 0.6.2
PIGSTY 0.6.2
PIGSTY 0.6.2
PIGSTY 0.6.2
u26.x86_64
u26.aarch64

构建

您可以使用 pig build 命令构建 wrappers 扩展的 RPM / DEB 包:

pig build pkg wrappers         # 构建 RPM / DEB 包

安装

您可以直接安装 wrappers 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install wrappers;          # 当前活跃 PG 版本安装
pig ext install -y wrappers -v 18  # PG 18
pig ext install -y wrappers -v 17  # PG 17
pig ext install -y wrappers -v 16  # PG 16
pig ext install -y wrappers -v 15  # PG 15
pig ext install -y wrappers -v 14  # PG 14
dnf install -y wrappers_18       # PG 18
dnf install -y wrappers_17       # PG 17
dnf install -y wrappers_16       # PG 16
dnf install -y wrappers_15       # PG 15
dnf install -y wrappers_14       # PG 14
apt install -y postgresql-18-wrappers   # PG 18
apt install -y postgresql-17-wrappers   # PG 17
apt install -y postgresql-16-wrappers   # PG 16
apt install -y postgresql-15-wrappers   # PG 15
apt install -y postgresql-14-wrappers   # PG 14

创建扩展

CREATE EXTENSION wrappers;

用法

来源:

wrappers 是一个用 Rust 编写的 PostgreSQL 外部数据封装框架,同时也是一系列由 Supabase 维护的 FDWs 的打包集合。安装一个扩展即可实现多种封装器的实现,每个外部服务器可以选择它需要的具体封装器类型。

CREATE EXTENSION wrappers;

通常的工作流程

为一个封装器创建一个服务器,然后通过外部表暴露远程数据:

CREATE SERVER stripe_server
  FOREIGN DATA WRAPPER stripe_wrapper
  OPTIONS (
    api_key_id 'stripe_api_key',
    api_url 'https://api.stripe.com/v1/'
  );

CREATE FOREIGN TABLE stripe_customers (
  id text,
  email text,
  name text,
  description text,
  created timestamp,
  attrs jsonb
)
  SERVER stripe_server
  OPTIONS (
    object 'customers',
    rowid_column 'id'
  );

包含的内容

上游版本提供了对 BigQuery、ClickHouse、DuckDB、DynamoDB、MySQL/Doris、Redis、S3、S3 Vectors、Stripe、Snowflake、Slack、Notion、OpenAPI、Infura 等数据库和服务的封装器。读写支持因封装器而异,但 WHEREORDER BYLIMIT 的下推是框架的核心功能。

版本 0.6.2

v0.6.2版本保持了相同的扩展模型,并增加了以下内容:

  • MongoDB FDW 支持读写操作
  • 在 WASM 封装器中使用会话变量凭证进行每次请求的身份验证
  • OpenAPI FDW 的 RFC 8288 Link 头部分页支持
  • 运行时、依赖和封装器特定的修复,详情参见发布说明

每个封装器的具体页面仍然是服务器选项、外部表列、下推和支持写操作的权威来源。

注意事项

  • 封装器特定的选项、支持的对象以及写操作因封装器而异;请查阅官方目录页面以获取您使用的具体 FDW 的确切信息。
  • 文档警告说,当物化视图依赖外部表时,逻辑恢复可能会失败,请避免这种模式或依赖于物理备份。
  • 外部表本身不提供安全边界。请将它们保留在私有模式中,并谨慎授予访问权限,使用可用的最小特权远程凭证,并对暴露或缓存远程数据的本地表应用行级安全性。
  • 请将 API 密钥和令牌存储在支持的秘密存储中或每次请求的凭据机制中,而不是将其嵌入到版本控制系统中的 SQL 中。