Postgresql 中文操作指南

5.12. Foreign Data #

PostgreSQL 实现了部分 SQL/MED 规范,允许你使用常规 SQL 查询访问驻留在 PostgreSQL 之外的的 data。此类数据称为 foreign data。(请注意,不要将此用法与外键混淆后者是数据库中的一种约束类型。)

借助 _foreign data wrapper_可以访问外部数据。外部 data 封装器是一个库,可以与外部数据源通信,隐藏连接到数据源和从 data 源获取数据时的详细信息。有些外部 data 封装器可用作 _contrib_模块;请参见 Appendix F。其他类型的外部 data 封装器可能作为第三方产品被发现。如果现有的外部 data 封装器都不适合你的需要,你可以编写自己的;请参见 Chapter 59

要访问外部数据,你需要创建 foreign server_对象,其定义如何根据支持外部 data 封装器所用的一组选项连接到特定的外部 data 源。然后,你需要创建一个或多个 _foreign tables,其定义远程数据结构。外部表可以在查询中像普通表一样使用,但外部表在 PostgreSQL 服务器中没有存储空间。每当使用它时,PostgreSQL 都会要求外部 data 封装器从外部源获取 data,或在更新命令的情况下将数据传输到外部源。

访问远程数据可能需要向外部 data 源进行身份验证。此信息可以由 _user mapping_提供,它可以基于当前 PostgreSQL 角色提供附加数据(比如用户名和密码)。