炸裂,PG的FDW又进化了!

2024-04-01 16:44
文章标签 炸裂 pg 进化 fdw

本文主要是介绍炸裂,PG的FDW又进化了!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,
备份恢复,安装迁移,性能优化、故障应急处理等。
📣📣📣

文章目录

    • 📣 1.什么是FDW?
    • 📣 2.FDW工作流
    • 📣 3.file_fdw
      • ✨ 3.1 安装插件
      • ✨ 3.2 生成file_fdw服务器
      • ✨ 3.3 创建外部表
    • 📣 4.postgres_fdw
      • ✨ 4.1 创建安装插件
      • ✨ 4.2 权限配置
      • ✨ 4.3 创建外部服务
      • ✨ 4.4 创建映射用户
      • 4.5 创建外部表
      • ✨ 4.5 其它特性
    • 📣 5.总结


FDW是外部数据包装器,基于PG有这个功能,如果想要数据融合,很容易在PG上实现,只要开发对应的FDW功能即可.

📣 1.什么是FDW?

FDW (foreign-data wrapper,外部数据包装器),PostgreSQL FDW 是一种外部访问接口,它可以被用来访问存储在外部的数据,这些数据可以是外部的pg数据库,也可以oracle、mysql等数据库,甚至可以是文件。

Specific SQL Database Wrappers
基本上每种数据库、数据类型都有各自的fdw插件,访问oracle库有oracle_fdw,
访问mysql库有mysql_fdw等等。fdw插件可以直接安装或者下载安装

可以让我们在PostgreSQL 中使用SQL查询极为丰富的外部数据:
主流关系型数据库:Oracle、MySQL、SQL Server等
NoSQL数据库:ClickHouse、MongoDB、Redis、Neo4j等
外部文件:csv、josn、pg_dump、xml
Web文件:S3、Twitter、Facebook…

📣 2.FDW工作流

1.词法分析器为输入的SQL语句创建查询树
2.SQL的执行器通过网络连接到源端的数据库服务器
3.如果启用了use_remote_estimate选项,执行器会执行explain命令评估执行计划
4.执行器根据最优的执行计划,重新创建SQL语句

📣 3.file_fdw

file_fdw插件为PG数据库提供了访问外部数据的能力,比如我们常见的文件csv,log等,该插件是内置在PG源码的contrib中。

✨ 3.1 安装插件

cd /pgccc/soft/postgresql-15.6/contrib

–编译安装
[root@centos79 contrib]# cd file_fdw
[root@centos79 file_fdw]# make install

–再次确认插件
[root@centos79 ~]# cd /pgccc/pgsql-15/share/extension

–安装插件
postgres=# CREATE EXTENSION file_fdw;

✨ 3.2 生成file_fdw服务器

–先生成一个file_fdw服务器。
CREATE SERVER file_fdw_server FOREIGN DATA WRAPPER file_fdw;

✨ 3.3 创建外部表

-- 创建一个名为"example"的新表
CREATE TABLE example (id SERIAL PRIMARY KEY,name VARCHAR(100),age INT
);-- 插入数据到"example"表中
INSERT INTO example (name, age) VALUES
('Alice', 25),
('Bob', 30),
('Charlie', 35);-- 查询"example"表中的所有数据
SELECT * FROM example;--导出到文件
\copy example to '/home/postgres/example.csv' with csv header delimiter ','--创建一个外部数据表
CREATE FOREIGN TABLE csvTable (
id SERIAL,
name VARCHAR(100),
age INT
) SERVER file_fdw_server
OPTIONS (format 'csv', header 'true', filename '/home/postgres/example.csv', delimiter ',', null'');csv文件放在了根目录下面。
csv里面有4列,从左往右命令。还可以设置有没有列名选择
header 'true'  有列名,csv的第一行不作为表的数据 header 'false' 没有列名,csv的第一行也作为表的数据

–再次查询,完全和一般的表类似
postgres=# select * from csvTable;

📣 4.postgres_fdw

通过 postgres_fdw访问远程PostgreSQL数据库表。
步骤如下:
在源端(本地库)创建 postgres_fdw 插件
创建 foreign server 外部服务(即:指连接外部数据源的连接信息)
创建映射用户(映射用户指定了访问外部表的本地用户和远程用户信息)
创建外部表(外部表的表定义建议和远端表结构一致)

✨ 4.1 创建安装插件

本地库做如下的操作:
–编译安装
[postgres@centos79 ~]$ cd /pgccc/soft/postgresql-15.6/contrib
[postgres@centos79 contrib]$ cd postgres_fdw
[postgres@centos79 postgres_fdw]$ make install
–再次确认插件
[root@centos79 ~]# cd /pgccc/pgsql-15/share/extension

–postgres 超级用户登录 PostgreSQL
[postgres@centos79 ~]$ psql
postgres=# CREATE EXTENSION postgres_fdw;
postgres=# \dx

✨ 4.2 权限配置

本地库做如下的操作:
若使用超级用户使用postgres_fdw可以跳过
普通用户使用postgres_fdw需要单独授权
GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO pgtest;

✨ 4.3 创建外部服务

本地库做如下的操作:
外部服务定义了远端PostgreSQL数据库的IP、端口、数据库连接信息
CREATE SERVER fdwpg2 FOREIGN DATA WRAPPER
postgres_fdw OPTIONS (host ‘pg2host’, port ‘5432’, dbname ‘devdb’);

✨ 4.4 创建映射用户

本地库做如下的操作:
映射用户指定了连接源端 PostgreSQL 数据库的用户名和密码信息
CREATE USER MAPPING FOR pgtest
SERVER fdwpg2 OPTIONS (user ‘pg2user’, password ‘pg2user’);
FOR:配置的用户为本地的数据库用户
OPTIONS :配置的是远端PostgreSQL数据库的用户和密码

4.5 创建外部表

--远端数据库创建测试表
CREATE TABLE pg2_fdw (id int4 ,info text) ;
INSERT INTO pg2_fdw (id , info ) VALUES (1, 'a'),(2, 'b');---创建外部表(本地库)
CREATE FOREIGN TABLE ft_fdw (
id int4,
info text
) SERVER fdwpg2 OPTIONS (schema_name 'pg2user', table_name 'pg2_fdw');通过外部表访问远端数据表
注意:远端数据库pg_hba.conf文件需要允许本地库访问策略
select * from pg2_fdw;

✨ 4.5 其它特性

支持可写特性
从PostgreSQL 9.3 版本开始支持postgres_fdw 外部表可写的条件
创建映射用户时配置的远端数据库用户需要对远端表具有写权限
PostgreSQL 必须是 9.3及以上版本。
聚合函数下推
PostgreSQL 10 版本在 postgres_fdw 扩展模块中新增了一个可以将聚合、
关联操作下推到远端 PostgreSQL 数据库进行的特性。
它大幅度减少了从远程库传送到本地库的数据量,
提升了 postgres_fdw 外部表上聚合查询的性能。

📣 5.总结

FDW的其它插件支持外部表方式访问mysql,oracle等数据库表数据,PG的FDW可以根据业务开发各种FDW把数据进行融合,比如数据迁移、异构DBMS之间的联动,是一个做数据整个的非常棒的功能

这篇关于炸裂,PG的FDW又进化了!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/867647

相关文章

Python中差分进化differential_evolution的调用及参数说明

在场景应用中,要求我们的函数计算结果尽可能的逼近实际测量结果,可转化计算结果与测量结果的残差,通过最小化残差,便可求出最优的结果。但使用最小二乘等方法来计算时,常常会使迭代的结果显然局部最优点而导致结算错误。 差分进化原理 差分进化(Differential Evolution,DE)是一种基于群体差异的进化算法,其计算思想主要包括以下几个方面: 一、初始化种群 首先,随机生成一个初始种群

[机缘参悟-222] - 系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进(软件系统、思维方式、亲密关系、企业系统、商业价值链、中国社会、全球)

目录 前言:系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进 一、软件系统的重构 1、重构的定义与目的 2、重构的时机与方法 3、重构的注意事项 4、重构的案例分析 二、大脑思维的重构 1、大脑思维重构的定义 2、大脑思维重构的方法 3、大脑思维重构的挑战与前景 三、认知的重构 1、定义 2、目的 3、方法 四、实例 五、总结 四、婚姻家庭的重构 1、婚

期货赫兹量化-种群优化算法:进化策略,(μ,λ)-ES 和 (μ+λ)-ES

进化策略(Evolution Strategies, ES)是一种启发式算法,旨在模仿自然选择的过程来解决复杂的优化问题,尤其在没有显式解、或搜索空间巨大的情况下表现良好。基于自然界的进化原理,进化策略通过突变、选择等遗传算子迭代生成解,并最终寻求全局最优解。 进化策略通常基于两个核心机制:突变和选择。突变是对当前解进行随机扰动,而选择则用于保留适应度更高的个体。本文详细介绍了 (μ,λ)-ES

[有彩蛋]大模型独角兽阶跃星辰文生图模型Step-1X上线,效果具说很炸裂?快来看一手实测!

先简单介绍一下阶跃星辰吧 公司的创始人兼CEO是姜大昕博士,他在微软担任过全球副总裁,同时也是微软亚洲互联网工程研究院的副院长和首席科学家。 2024年3月,阶跃星辰发布了Step-2万亿参数MoE语言大模型预览版,这是国内初创公司首次发布的万亿参数模型。 而Step-1X,是阶跃星辰在2024年世界人工智能大会上亮相的文生图模型。Step-1X在深度语义对齐和细节生成方面进行了重点打磨

ceph中pg与pool关系

在Ceph中,PG(Placement Group)和Pool是非常重要的概念,它们在Ceph的存储架构中扮演着关键角色。理解这些概念有助于更好地管理和优化Ceph集群。下面详细介绍这两个概念及其相互关系。 Pool(存储池) 定义: Pool(存储池)是Ceph中逻辑上的存储单元,用于组织和管理数据。用户可以通过创建不同的Pool来为不同的应用程序或用途分配存储空间。 类型: Pool可以

多目标应用:基于双存档模型的多模态多目标进化算法(MMOHEA)的移动机器人路径规划研究(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或局部已知的局部路径规划。随着科技的快速发展以及机器人的大量应用,人们对机器人的要求也越来越高,尤其表现在对机器人的智能化方面的要求,而机器人自主路径规划是实现机器人智能化的

mysql和pg等数据库之间的数据迁移实战分享

mysql和pg等数据库之间的数据迁移是常见的问题:比如一开始使用Oracle,后来想使用mysql,而且需要把Oracle数据库的数据迁移到mysql里面;后期有想使用pg数据库,同时需要把Mysql数据库的数据迁移到pgl里面,等等诸如此类数据迁移,都是一个重要问题。基于此,我们今天分享mysql数据迁移到pg数据库的案例。方案如下: 一、客户端迁移 如果数据量比较小,并且win电脑端可以

pg小版本升级

文章目录 一、升级计划二、升级步骤1、安装目标版本数据库2、停止数据库实例3、备份数据目录4、调整环境变量,PGHOME/LD_LIRARAY_PATH5、使用新版本启动数据库 三、检查升级后的数据库 一、升级计划 pg14.0 -> pg14.9 查看当前版本信息: select version(); 原来环境变量: export PGHOME=/home/post

pg 唯一性约束修复

先说一下背景,之前我用的 pg 镜像是 postgres:11.18-bullseye,后来被升级成了 postgres:11.20-alpine3.18,这个造成的其中一个后果简而言之是 pg 对字符串的排序发生了变化,比如原先认为 A > B,现在则变成了 A < B。由此,就有可能破坏数据的唯一性约束。不仅如此,只要索引列包含字符串类型的字段,也会有问题。 为了方便继续描述,假设有个 te

Facebook的AI进化:如何用智能技术提升内容推荐

在数字时代,社交媒体平台不仅是信息传播的重要渠道,也是个人和品牌互动的关键平台。Facebook作为全球领先的社交媒体网络,其内容推荐系统的优化在很大程度上提升了用户体验。本文将探讨Facebook如何通过人工智能(AI)技术进化,以优化内容推荐系统,从而提供更个性化、更精准的用户体验。 个性化推荐引擎的核心 Facebook的内容推荐系统是其平台成功的关键之一。传统的推荐系统通常基于用户的历