PostgreSQL FDW应用

注: 本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。https://www.yunbee.net/Home/News/detail/article_id/572.html

前言

Wrapper(FDW)是一项关键特性,它赋予数据库用户直接通过SQL语句访问存储于外部数据源的能力。遵循SQL/MED标准设计,FDW使PostgreSQL能够无缝对接多种异构数据库系统以及非数据库类数据源。

FDW机制由四个核心组件构成:

1. Foreign Data Wrapper:特定于各数据源的库,定义了如何建立与外部数据源的连接、执行查询及处理其他操作。例如,“postgres_fdw”用于连接其他PostgreSQL服务器,“mysql_fdw”则专门连接MySQL数据库。

2. Foreign Server:在本地PostgreSQL中定义一个外部服务器对象,对应实际的远程或非本地数据存储实例。

3. User Mapping:为每个外部服务器设置用户映射,明确哪些本地用户有权访问,并提供相应的认证信息,如用户名和密码。

4. Foreign Table:在本地数据库创建表结构,作为外部数据源中表的映射。对这些“外表”发起的SQL查询将被转换并传递给相应的FDW,在外部数据源上执行。

随着FDW生态的日益繁荣,各类针对不同数据源的FDW插件层出不穷,如postgres_fdw实现PostgreSQL间的互连互通,mysql_fdw、oracle_fdw分别用于连接MySQL和Oracle数据库,还有file_fdw可用于读取文本文件或CSV等非结构化数据。

接下来,我们重点介绍FDW功能使用。

一、外部表

使用PostgreSQL的file_fdw扩展,可以创建一个外部表来读取和查询文件系统中的文本或CSV文件。以下是如何通过file_fdw实现外部表的详细步骤:

使用场景:当有个1G表数据,CSV格式,需要和本地表运算出报表结果

1.1 准备csv数据

图片

1.2 创建外部表

图片

1.3  与本地表进行运算

图片

二、访问其它集群中的pg库

由于pg内部不同的数据库不能访问,pg_fdw就能解决此问题。

注:如无特殊说明,以下操作均在当前库操作

2.1 创建扩展

图片

2.2 创建外部数据服务

图片

查看外部服务

图片

删除外部服务

图片


2.3 将外部服务授权给指定用户
 

图片



 

2.4 创建外部服务的mapping

用于连接指向用户及指定数据库

图片

查看mapping关系

图片


 

如果密码配置错误,用以下语句修改

图片

补充:

删除外部mapping

图片

2.5 在远端创建表

图片

2.6 创建外部表

图片

补充:

查看外部表

图片

删除外部表

图片

2.7 访问自身集群中的pg库

实现过程和第二章节一样

实现目标:通过postgres数据库中的postgres用户访问appdb中appuser在schema:appuser中的表t1

图片

注意:

1、添加外部表时,需要指定schme_name参数,否则会到默认public模式下找数据

三、访问oracle中的表

3.1 安装oracle客户端

根据不同数据库版本,自行到oracle官网下载,如LINUX.X64_193000_client_home包

上传解压即可

3.2 配置环境变量

图片

3.3 配置oracle全局动态库

图片

3.4 测试连接oracle

图片

3.5 安装oracle_fdw

下载地址:https://github.com/laurenz/oracle_fdw

图片

3.6 创建oracle_fdw扩展

图片

如果碰到如下问题

图片

先通过 ldd命令跟踪库文件的调用过程,比如

图片

而libclntshcore.so.19.1这个包在oracle客户端的lib目录下,可以通过以下方式尝试解决:

1、通过软链接

图片

2、直接cp

图片

3.7 创建对oracle的外部表

图片

四、FDW的演进与未来展望

随着时间推移,FDW的功能不断丰富和优化,包括增强性能、增加更多类型的FDW以及改善用户体验。如今,FDW已经成为PostgreSQL生态不可或缺的一部分,大大提高了其数据集成能力。

展望未来,FDW将继续成为实现跨多种数据库和非传统数据源交互的关键技术,尤其是在大数据时代背景下,对于构建复杂的企业级数据湖和数据仓库解决方案具有深远意义。同时,随着云原生和分布式计算范式的兴起,FDW也将顺应潮流,持续演进以适应更加多样化且充满挑战性的应用场景。

另外需要学习视频的同学,可以添加联系方式:(同V) 陈老师 199-4146-4235 / 郑老师 199-0663-2509 / 蕾老师199-0663-5786,我们会持续更新学习视频。

相关视频:【云贝教育】PostgreSQL分享课:PG-FDW:FDW概述

【云贝教育】PostgreSQL分享课:PG-FDW:FDW概述

图片

相关推荐

  1. Ceph应用

    2024-03-27 14:06:02       44 阅读
  2. 应用安装

    2024-03-27 14:06:02       36 阅读
  3. nginx应用

    2024-03-27 14:06:02       47 阅读
  4. Flink应用

    2024-03-27 14:06:02       30 阅读
  5. python应用

    2024-03-27 14:06:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 14:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 14:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 14:06:02       87 阅读
  4. Python语言-面向对象

    2024-03-27 14:06:02       96 阅读

热门阅读

  1. 使用 React Hooks 管理状态和引用

    2024-03-27 14:06:02       39 阅读
  2. Web开发:深入探讨React Hooks的使用和最佳实践

    2024-03-27 14:06:02       39 阅读
  3. mysql怎么创建索引?

    2024-03-27 14:06:02       34 阅读
  4. Kotlin object

    2024-03-27 14:06:02       39 阅读