外部 table、外部服务器和外部数据包装器:它们如何通信

foreign table, foreign sever and foreign data wrapper: how they communicate

当postgreSQL数据库服务器得到query时,它是如何找到相关的外部data wrapper来解析query的?外国服务器到底是做什么的?

我想知道当数据库服务器查询外部时发生的消息序列 table?

让我们澄清一下术语。

  • 一个外部数据包装器是一个包装代码以与外部数据源通信的对象。

  • A foreign server是一个对象,指定如何定位某个外部数据源。属于国外数据包装器

  • 用户映射 是一个对象,其中包含用于通过外部数据源进行身份验证的凭据。属于国外服务器和数据库用户

  • A foreign table是描述包含外部数据源中数据的对象的对象。属于外服

因此,当用户尝试访问外部 table 时,PostgreSQL 知道如何到达数据源(通过属于 table 的外部服务器),如何进行身份验证(通过用户映射)以及使用什么函数来执行此连接和交换数据(通过外部数据包装器)。

大多数国外数据包装器不需要连接到远程数据源来进行查询计划,但是在获取或发送数据时,将建立连接。

根据外部数据包装器,此类连接会在查询完成时关闭或在数据库会话的生命周期内缓存。