第?13?章?uxdb_fdw

目录

13.1. uxdb_fdw的FDW选项
13.1.1. 连接选项
13.1.2. 对象名称选项
13.1.3. 代价估计选项
13.1.4. 远程执行选项
13.1.5. 可更新性选项
13.1.6. 导入选项
13.2. 连接管理
13.3. 事务管理
13.4. 远程查询优化
13.5. 远程查询执行环境
13.6. 用法示例

uxdb_fdw模块提供外部数据封装器uxdb_fdw,用来访问存储在外部UXDB服务器中的数据。

这个模块提供的功能大体上覆盖了dblink模块的功能。但是uxdb_fdw提供了更透明且更符合标准的语法来访问远程表,并且可以在很多情况下提供更好的性能。

使用uxdb_fdw来为远程访问做准备:

  1. 使用CREATE EXTENSION来安装uxdb_fdw扩展。

  2. 使用CREATE SERVER创建一个外部服务器对象,表示想连接的远程数据库。指定除了user和password之外的连接信息作为该服务器对象的选项。

  3. 使用CREATE USER MAPPING创建一个用户映射,每一个用户映射都代表允许一个数据库用户访问一个外部服务器。指定远程用户名和口令作为用户映射的user和password选项。

  4. 为每一个要访问的远程表使用CREATE FOREIGN TABLE或者IMPORT FOREIGN SCHEMA创建一个外部表。外部表的列必须匹配被引用的远程表。但是,如果在外部表对象的选项中指定了正确的远程对象名称,可以使用不同于远程表的表名和或列名。

做好远程访问的准备后,只需要从一个外部表SELECT来访问存储在它的底层的远程表中的数据。也可以使用INSERT、UPDATE或DELETE修改远程表(当然,用户映射中已经指定的远程用户必须具有这些权限)。

注意

当前uxdb_fdw缺少对于带ON CONFLICT DO UPDATE子句的INSERT语句的支持。不过,如果省略了唯一的索引推断规范,它支持ON CONFLICT DO NOTHING子句。

通常推荐一个外部表的列被声明为与被引用的远程表列完全相同的数据类型和排序规则。尽管uxdb_fdw目前能够在需要时执行数据类型转换,但是当类型或排序规则不匹配时可能会发生语义异常,因为远程服务器解释WHERE子句时可能会与本地服务器有所不同。

注意

一个外部表可以被声明比底层的远程表较少的列,或者使用不同的列序。与远程表的列匹配是通过名称而不是位置进行的。

XML 地图 | Sitemap 地图