• openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw


    openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw

    openGauss的fdw实现的功能是各个openGauss数据库及远程服务器(包括数据库、文件系统)之间的跨库操作。目前支持的远程服务器类型包括Oracle、MySQL(MariaDB)、openGauss(postgres_fdw)、file_fdw 、dblink。

    postgres_fdw是一款开源插件,其代码随PostgreSQL源码一同发布。openGauss基于开源的PostgreSQL 9.4.26版本中的postgres_fdw源码(https://ftp.postgresql.org/pub/source/v9.4.26/postgresql-9.4.26.tar.gz )进行开发适配。

    postgres_fdw插件默认参与编译,使用安装包安装好openGauss后,可直接使用postgres_fdw,无须其他操作。

    img 说明:

    当前postgres_fdw仅支持openGauss连接openGauss,不支持openGauss连接PostgreSQL。

    95.1 使用postgres_fdw

    • 加载postgres_fdw扩展:CREATE Extension postgres_fdw;

    • 创建服务器对象:CREATE SERVER

    • 创建用户映射:CREATE USER MAPPING

    • 创建外表:CREATE FOREIGN TABLE

      外表的表结构需要与远端openGauss侧的表结构保持一致。

    • 对外表做正常的操作,如 INSERTUPDATEDELETESELECTEXPLAINANALYZECOPY 等。

    • 删除外表:DROP FOREIGN TABLE

    • 删除用户映射:DROP USER MAPPING

    • 删除服务器对象:DROP SERVER

    • 删除扩展:DROP Extension postgres_fdw;

    • 查看REMOTE SQL PLAN:开启GUC参数show_fdw_remote_plan,可以在explain时追加打印remote sql的计划,对remote sql的explain会继承explain语句的verbose、costs选项。

    95.2 postgres_fdw下推主要成分

    支持的下推成分:

    • 稳定表达式:如常量、表的非系统列、内置的稳定级别的函数与操作符、等稳定元素组成的表达式。
    • 扫描:支持单表查询,直接查询非系统列,带有简单且稳定的where表达式的查询成分的下推。
    • 连接:当两个外表均在一个外表服务器,且其访问权限以及连接条件、过滤条件均满足一定的要求时,可以下推到远端执行。
    • 分组与聚集:当聚集函数、group by、having三个部分,满足表达式检查以及其它一些条件时,可以下推到远端执行。
    • 排序:当排序键满足一定的条件时,可下推到远端执行。
    • LIMIT:当LIMIT表达式满足下推条件时,可以下推到远端执行。
    • ROWMARK:rowmark一般都可下推。

    不支持的下推成分:

    • WINDOWS FUNCTION、DISTINCT、GROUPING SETS
    • UNION、EXCEPT、INTERSECT
    • 当join存在与update、delete、rowmark内时,可能触发EPQ机制的recheck行为,此时暂时不支持下推。
    • 其他不满足上述下推要求的成分,如系统列等。

    95.3 常见问题

    • 在openGauss上建立外表时,不会同步在远端的openGauss上建表,需要自己利用客户端连接远端openGauss建表。
    • 外表并不会区分远端表的具体表类型,不会检查表结构等是否对应,甚至连是否存在都不会检查。需要用户自己维护与保证这些属性关系。
    • 执行CREATE USER MAPPING时使用的openGauss用户需要有远程连接openGauss及对表相关操作的权限。使用外表前,可以在本地机器上,使用gsql的客户端,使用对应的用户名密码确认能否成功连接远端openGauss并进行操作。

    95.4 注意事项

    • SQL各类算子的执行具有一定的顺序,当某个算子不能下推后,上层所有后续的算子也都无法下推。
    • 不支持IMPORT FOREIGN SCHEMA语法。
    • 不支持对外表进行CREATE TRIGGER操作。
    • 外表不支持以分区表的形式创建,不支持映射到某一个具体的分区。

    👍 点赞,你的认可是我创作的动力!

    ⭐️ 收藏,你的青睐是我努力的方向!

    ✏️ 评论,你的意见是我进步的财富!

    图片

  • 相关阅读:
    【imessage苹果群发位置推相册推】CloudKit API或通过作为程序一部分提供的CloudKit仪表板
    linux定时重启tomcat
    Acwing 算法基础课 c++模板整理(附python语法基础题)
    npm更换成淘宝镜像源及cnpm使用
    Ubuntu中如何设置IP地址
    腾讯云TCP认证考试知识点有哪些?腾讯云停车票认证证书含金量高吗?
    Spring Security实现基于RBAC的权限表达式动态访问控制
    TiDB与MySQL兼容性对比
    .Net 6.0 部署Linux+Nginx +PM2教程
    012--python之文件操作
  • 原文地址:https://blog.csdn.net/shuchaoyang/article/details/133753283