探索PostgreSQL:外国数据包装纸(FDW)。
#postgres #sql #database #data

PostgreSQL是一种强大的开源关系数据库管理系统,以其适应性和多功能性而闻名。外国数据包装器(FDW)是其显着的功能之一,允许PostgreSQL连接到数据库之外的数据源并进行交互。在这篇文章中,我们将查看PostgreSQL FDW,解释它是什么,以及为什么有用。

什么是Postgresql FDW?

外国数据包装纸(FDW)是一个PostgreSQL扩展程序,可让您从远程或外部数据源访问和操纵数据,就好像它们是本地表一样。此功能简化了数据集成,迁移和链接数据库的创建,使您可以无缝地实时处理来自不同源的数据。

为什么要使用PostgreSQL FDW?

  • 数据集成:FDW使您无需复杂的ETL操作即可从多个数据库和文件系统导入数据。

  • 实时数据汇总:您可以实时构建包含来自本地和远程来源的数据的聚合视图,从而更容易检查来自不同来源的数据。

  • 数据迁移:从一个数据库系统过渡到PostgreSQL时,FDW可以通过在逐渐迁移数据时提供对旧数据库的访问来简化迁移过程。

  • FDW支持广泛的外部数据源,包括其他关系数据库,NOSQL数据库,REST API,CSV文件等。

如何设置PostgreSQL FDW

要设置PostgreSQL FDW,您需要:

  1. 在PostgreSQL中启用FDW:要使用FDW,必须在FDW支持下编译PostgreSQL。默认情况下,大多数现代发行版具有启用,但是您可以通过检查 pg_config 实用程序来对其进行验证。如果缺少FDW支持,则可能需要使用 - frdw flag 将PostgreSQL重新编译。

  2. 安装 postgres_fdw 扩展:您可以通过运行以下命令来执行此操作:

CREATE EXTENSION postgres_fdw;
  1. 创建外国服务器:创建外国服务器后,您可以创建外国表。外国表是一个虚拟表,代表外部数据库中的数据。您可以通过运行以下命令来创建外国表格
CREATE SERVER remote_db
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'remote_host', dbname 'remote_db', port '5432');

4.创建用户映射:建立用户映射以为外国服务器提供所需的身份验证信息。这将本地PostgreSQL用户链接到远程用户。

CREATE USER MAPPING FOR local_user
SERVER remote_db
OPTIONS (user 'remote_user', password 'remote_password');

  1. 创建外国表:最后,创建代表本地数据库中外部数据的外国表。您可以定义这些表的结构,将它们映射到远程数据源。
CREATE FOREIGN TABLE foreign_table (
  id INT,
  name TEXT
)
SERVER remote_db
OPTIONS (schema_name 'some_schema', table_name 'foreign_table');

FDW的工作原理。

当用FDW对外国表运行查询时,在下面的流程图中显示了在本地和远程Postgres服务器上执行的操作。

Image description

  1. 用FDW对外国表运行查询时,操作执行 在本地和远程Postgres服务器上显示在下面的流程图中。
  2. 如果启用了 use_remote_estimate 选项,则计划器连接到遥控器 服务器。
  3. 如果启用了 use_remote_estimate 选项 在远程服务器上执行解释命令。 如果未激活 use_remote_estimate 选项,则计算成本 基于本地存储的外桌的统计信息。 4。计划者经过一个贬低的过程,将计划树转换为 纯文本SQL语句并将其交付给执行者。 5。执行者将SQL语句传递给远程服务器并接收结果 返回。

The use_remote_estimate option is an option that sets whether to calculate and
return the cost directly from the remote server using the EXPLAIN command before
performing a query against the remote server. The default value is false and can be
set to a remote server or remote table. If this option is set on both the remote
server and the table, the remote table's settings take precedence, and queries
targeting the remote table may behave differently from other tables on the same
remote server.

PostgreSQL外国数据包装器是将外部数据源无缝集成到您的PostgreSQL数据库中的强大工具。您可以利用FDW的全部潜力查询和操纵跨异构系统的数据,从而使您的数据管理任务更加高效和灵活。