《postgresql指南--内幕探索》第四章 外部数据包装器

本文介绍了PostgreSQL的外部数据包装器(FDW)功能,包括如何使用FDW访问远程服务器上的外部表,以及PostgreSQL如何处理多表查询、排序操作和聚合函数等内容。

2003年,在SQL标准中增加了一个访问远程数据的规范,称为SQL外部数据管理(SQL/MED)。自9.1版本以来,PostgreSQL开发了FDW,实现了SQL/MED的一部分特性。
在SQL/MED中,远程服务器上的表称为外部表。PostgreSQL 的外部数据包装器(Foreign Data Wrappers,FDW)使用与本地表类似的方式,通过SQL/MED来管理外部表。

图1:FDW的基本概念
在这里插入图片描述
安装必要的插件并进行适当的设置后, 您可以访问远程服务器上的外部表。例如, 假设有两个远程服务, 分别是 postgresql 和 mysql, 它们分别 foreign_pg_tbl表和foreign_my_tbl表。这个例子中, 您可以通过发出 SELECT 查询来访问本地服务器上的外部表, 如下所示。

localdb=# -- foreign_pg_tbl is on the remote postgresql server. 
localdb-# SELECT count(*) FROM foreign_pg_tbl;
 count 
-------
 20000

localdb=# -- foreign_my_tbl is on the remote mysql server. 
localdb-# SELECT count(*) FROM foreign_my_tbl;
 count 
-------
 10000

此外, 还可以执行连接操作,类似操作本地表一样的操作这些外部表。

localdb=# SELECT count(*) FROM foreign_pg_tbl AS p, foreign_my_tbl AS m WHERE p.id = m.id;
count 
-------
10000

许多FDW插件已经开发并在Postgres wiki中列出。尽管, 几乎所有插件都没有得到好的维护, 但 postgres_fdw 除外, 该插件是由 PostgreSQL 全球开发组正式开发和维护的, 作为访问远程 PostgreSQL 服务器的扩展。

概览

要使用 FDW 功能, 您需要安装相应的扩展并执行相关的命令,CREATE FOREIGN TABLE, CREATE SERVER和CREATE USER MAPPING (更加详细的描述请参考官方文档)。

执行完创建相关的命令后, 在执行查询处理的过程中,会调用插件中定义的函数以访问外部表。
在这里插入图片描述
(1) analyzer/analyser创建输入 SQL的查询树。
(2) 规划器 (或执行器) 连接到远程 server。
(3) 如果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值