大家好,这是我博客系列的第四篇文章。毫无疑问,让我们从今天的主题开始。
PostgreSQL是一种关系数据库管理系统,自1986年以来一直是一个开源项目。在其著名的功能中,外国数据包装器(FDW)脱颖而出。 FDW使用户能够从远程源无缝访问和管理数据,就好像他们是本地PostgreSQL数据库的一部分一样。此功能简化了数据管理任务并增强了查询性能。
在这篇博客文章中,我们将在PostgreSQL中深入研究FDW的世界,对其建筑,扩展和实际用途进行全面探索,以处理来自不同来源的数据。该帖子将概述利用FDW的优势,并提供说明性示例,以说明如何有效地整合来自外部来源的数据。最后,读者将获得宝贵的见解,以利用PostgreSQL中FDW的力量简化其数据管理流程。
什么是外国数据包装器(FDW)?
PostgreSQL中的外国数据包装器(FDWS)使用户能够无缝访问和管理存储在外部数据库或文件系统中的数据,就好像它是其PostgreSQL数据库的原生一样。这消除了在系统之间传输数据的需求,并允许从单个PostgreSQL数据库中的各种来源查询和操纵数据。
FDW本质上是PostgreSQL中定义与外部数据源的通信的扩展。安装和配置FDW后,用户可以在其PostgreSQL数据库中创建外国表,该数据库建立了与外部数据源的连接。然后可以像PostgreSQL中的常规表一样查询和更新这些外国表格。
PostgreSQL的FDW功能的灵活性和可扩展性使创建自定义FDW可以与广泛的外部数据源通信。 PostgreSQL包括几个内置的FDW,例如用于访问PostgreSQL数据库的Postgres_fdw,用于访问平面文件的File_fdw,用于访问Oracle数据库的ORACLE_FDW,MySQL_FDW,用于访问MySQL数据库的MySQL_FDW,以及访问mongodb_fdw for mongodb_fdw for Mongongodb databases。此外,许多第三方FDW可用于支持其他数据源,例如NOSQL数据库或Web服务。
要使用FDW,必须在PostgreSQL中安装和配置。这涉及创建一个外国服务器对象,该对象指定外部数据源的连接详细信息,并创建链接到外国服务器对象的外国表。设置FDW后,可以查询外桌并与PostgreSQL中的常规表一起更新。
fdws在PostgreSQL中提供了强大的功能,从而使单个数据库中不同源的数据集成。他们通过利用不同数据存储技术的优势而无需数据迁移来简化数据管理任务并提高查询性能。使用FDW,用户可以利用PostgreSQL的全部潜力,并无缝将来自各种来源的数据纳入其数据库生态系统。
postgresql中FDW的架构
PostgreSQL是自1986年以来一直在开发的广泛使用的开源数据库管理系统(RDBMS)。它提供了一系列全面的功能,包括交易控制,高可用性和可扩展性。一个特别有趣的功能是其支持通过外国数据包装器(FDW)管理远程数据的支持,该数据允许从不同服务器访问数据。让我们深入研究FDW的架构。
2003年,将外部数据的SQL管理(SQL/MED)规范引入了SQL标准。自版本9.1以来,PostgreSQL一直在逐步实施此功能,以结合SQL/MEDS功能的子集。在SQL/MED中,驻留在远程服务器上的表被称为外国表。
PostgreSQL的FDW利用SQL/MED来管理与本地表相似的外国表。安装必要的扩展程序并配置适当的设置后,您可以在远程服务器上访问和与外国表进行交互。
为了说明,让我们考虑一个有两个远程服务器的示例场景:“ PostgreSQL”和“ MySQL”。每个服务器分别托管一个名为“ fourne_pg_tbl”和“ fourne_my_tbl”的外国表。在这种情况下,您可以通过执行选项查询来从本地服务器访问这些外国表:
sqlcopy代码
localdb =#从forefer_pg_tbl; select count();计数------- 20000
localdb =#select count()来自forefer_my_tbl; count ------- 10000
此外,您可以执行涉及位于不同服务器上的外国表的加入操作,类似于使用本地表:
SQLCOPY代码
localdb =#从forefen_pg_tbl中选择count(*)为p,foursour_my_tbl为m,其中p.id = m.id;计数------- 10000
尽管在Postgres Wiki中已经开发并列出了各种FDW扩展,但值得注意的是,大多数人都无法积极维护。主要例外是“ postgres_fdw”,它由PostgreSQL全球开发小组正式开发和维护。它是专门设计用于访问远程PostgreSQL服务器的扩展程序。
FDW架构
要使用FDW功能,您需要安装适当的扩展名并执行设置命令,例如Create freate Exourth表,创建服务器并创建用户映射。提供适当的设置后,在查询处理过程中调用扩展名中定义的功能以访问外国表。
PostgreSQL中FDW的架构可以描述如下:
- PostgreSQL中的分析仪/分析仪构建了输入SQL语句的查询树。它通过合并外国表的定义来实现这一目标,这些定义存储在pg_catalog.pg_class和pg_catalog.pg_foreign_table目录中。这些定义可以使用诸如创建外部表或导入外国架构之类的命令创建。
- 计划者(也称为执行者)使用专门连接到相应的远程数据库服务器的特定库建立了与远程服务器的连接。例如,在连接到远程Postgresql Server时,Postgres_fdw扩展程序使用LIBPQ库。另一方面,连接到MySQL Server时,MySQL_FDW扩展依赖于libmysqlclient库。
- 启用了use_remote_estimate选项(默认情况下是关闭)时,PostgreSQL中的计划者会执行命令,以估算与每个潜在计划路径相关的成本。该估计有助于评估和选择查询执行的最佳计划。
- PostgreSQL计划者将计划树转换为纯文本SQL语句,该过程称为deparsing。这个贬低的步骤涉及将查询计划的内部表示形式转换为可读的SQL语句,以反映查询的预期操作和结构。
- 计划阶段完成后,PostgreSQL中的执行人将纯文本SQL语句发送给远程服务器以进行执行。然后,它等待远程服务器返回的结果。 收到数据后,执行人可以根据查询的性质执行其他处理。例如,在多桌子查询的情况下,执行人执行加入处理以将接收到的数据与其他相关表相结合。这些处理步骤的具体细节在随后的部分中详细介绍了查询要求和数据关系。
FDW如何在PostgreSQL中起作用
PostgreSQL中的外国数据包装纸(FDW)启用了外国表的管理,外国表通过SQL/MED的利用类似于本地表,这是用于访问远程数据的规范。自版本9.1以来,此功能一直是PostgreSQL的一部分。一旦安装了必要的扩展名并配置了适当的设置,就可以访问远程服务器上的外桌。此外,FDW允许使用存储在不同服务器上的外国表执行加入操作,就像本地表一样。虽然PostgreSQL提供了多个FDW扩展,但Postgres_fdw仅由PostgreSQL全球开发小组正式开发和维护。
要使用FDW功能,需要安装相关的扩展名,并设置了诸如创建外fart表,创建服务器和创建用户映射之类的设置命令。在查询处理过程中,调用扩展名中定义的功能以访问外部表。计划者(或执行程序)使用专门连接到相应的远程数据库服务器的特定库建立了与远程服务器的连接。计划者通过执行解释命令来查询远程服务器的计划成本。
来创建计划树。但是,某些FDW扩展仅依赖于嵌入式常数值。执行者将纯文本SQL语句发送给远程服务器,接收结果,并根据需要处理数据。例如,执行多桌查询时,执行程序会使用其他表执行接收到的数据处理。有关PostgreSQL的FDW的详细信息在以下各节中介绍,包括概述,Postgres_fdw扩展程序的功能以及创建查询树的创建,与远程服务器的连接以及使用Divell commands生成的Plan树。
PostgreSQL中的外国数据包装器(FDW)扩展
PostgreSQL是一种开源对象凝聚数据库系统,提供了多种高级功能。在这些功能中,外国数据包装纸(FDW)是一个值得注意的功能。 FDW允许用户无缝访问和管理远程数据,就好像它是其本地数据库的一部分一样。在本文中,我们将探索PostgreSQL中的FDW扩展,深入研究其基本概念并阐明其运作方式。
外国数据包装器(FDW)
PostgreSQL中的外国数据包装纸(FDW)是一个扩展程序,它利用外部数据(SQL/MED)规范的SQL管理来管理与本地表具有相似特征的外国表。通过利用FDW,用户可以轻松地访问位于远程服务器上的外国桌子,并使用存储在不同服务器上的表进行连接操作。
PostgreSQL中FDW功能的开发始于版本9.1。要利用此功能,必须安装相关扩展名,然后执行设置命令,例如Create freate Exourth表,创建服务器和创建用户映射。一旦配置了适当的设置,扩展程序中定义的功能就在查询处理过程中起作用,以促进无缝访问外国桌子。
FDW的基本概念
安装了所需的扩展名并配置了必要的设置,就可以访问居住在远程服务器上的外国表。为了说明,让我们考虑一个场景,其中有两个远程服务器,“ postgresql”和“ mysql”,每个服务器分别包含一个forefer_pg_tbl表和一个foreial_my_mmy_tbl表。在这种情况下,您可以通过执行选定查询从本地服务器访问这些外国表,如下所示:
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
PostgreSQL中FDW的概述
要在PostgreSQL中使用外国数据包装器(FDW)功能,您必须首先安装适当的扩展名并执行基本设置命令,例如Create facer Exourth表,创建服务器和创建用户映射。这些命令允许您定义外国表,建立与远程数据库服务器的连接并映射用户凭据。
在查询处理过程中,分析仪/分析仪组件基于输入SQL创建一个查询树。它使用外国表的定义,这些定义存储在pg_catalog.pg_class和pg_catalog.pg_foreign_table目录中。可以使用创建外部表或导入外国架构命令来完成外国表的创建。
计划者(也称为执行者)利用特定的库来与远程数据库服务器建立连接。连接详细信息(包括用户名,服务器的IP地址和端口号)存储在pg_catalog.pg_user_mapping和pg_catalog.pg_foreign_server目录中。这些详细信息是使用创建用户映射和创建服务器命令指定的。
PostgreSQL的FDW提供了从外国表获得统计数据的支持,这些统计信息用于估计查询的计划树。几个FDW扩展名,例如Postgres_fdw,MySQL_FDW,TDS_FDW和JDBC2_FDW,都依赖于这些统计信息。如果通过执行Alter Server命令并将其设置为“ ON”,则启用了USE_REMOTE_ESTIMATE选项,则计划使用dumply命令对远程服务器查询计划成本。但是,如果未启用此选项,则计划器将嵌入式常数值作为默认估计策略。
。结论
fdw是PostgreSQL中的一个强大功能,它允许用户访问和管理远程数据,就好像它是本地数据库的一部分一样。使用FDW,您可以使用存储在不同服务器上的表执行加入操作。 PostgreSQL的FDW扩展由PostgreSQL全球开发小组正式开发和维护。在本文中,我们讨论了FDW的基本概念,其工作原理以及其在Postgresql中的概述。
。