PG&GP · 特性分析 · 外部数据导入接口实现分析

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 背景 社区 PostgreSQL 和 GreenPlum 都提供了读写外部数据源的方法,它们都提供了一套编程接口,用户可以在这上面做二次开发,建立外部数据源和数据库间的数据通道。 本文介绍 PostgreSQL 和 GreenPlum 这部分编程接口的实现和编程方法。结合 RDS 开发的 oss

背景

社区 PostgreSQL 和 GreenPlum 都提供了读写外部数据源的方法,它们都提供了一套编程接口,用户可以在这上面做二次开发,建立外部数据源和数据库间的数据通道。
本文介绍 PostgreSQL 和 GreenPlum 这部分编程接口的实现和编程方法。结合 RDS 开发的 oss_ext 接口。展示外部数据源接口的能力。

PostgreSQL FDW

FDW 的全称是 foreign-data wrapper,是一套读写外部数据源的编程接口。它提供了多个回调函数编程接口,开发者可以逐一实现这些接口,封装成动态库,然后加载到内核中使用。
下面逐一介绍下这套编程接口

1 扫描类接口

  1. GetForeignRelSize_function GetForeignRelSize;

    返回给数据库对应数据源的规模信息

  2. GetForeignPaths_function GetForeignPaths;

    优化器接口,提供对应数据源的查询路径。

  3. GetForeignPlan_function GetForeignPlan;

    优化器接口,提供对应数据源的查询计划。

  4. BeginForeignScan_function BeginForeignScan;

    执行器接口,外部表扫描开始的准备工作。

  5. IterateForeignScan_function IterateForeignScan;

    执行器接口,外部表扫描实现,一次返回一个 tuple slot。

  6. ReScanForeignScan_function ReScanForeignScan;

    执行器接口,外部表扫描节点重新开始,重置所有状态参数和内存结构。

  7. EndForeignScan_function EndForeignScan;

    执行器接口,外部表扫描节点结束,释放资源。

2 更新数据接口

  1. AddForeignUpdateTargets_function AddForeignUpdateTargets;

    构造要更新的外部数据源的目标列信息

  2. PlanForeignModify_function PlanForeignModify;

    构造外部数据源修改的(包括insert update delete的)的数据结构

  3. BeginForeignModify_function BeginForeignModify;

    执行器接口,数据更新节点的数据准备

  4. ExecForeignInsert_function ExecForeignInsert;

    执行器接口,insert 一行数据

  5. ExecForeignUpdate_function ExecForeignUpdate;

    执行器接口,update 一行数据

  6. ExecForeignDelete_function ExecForeignDelete;

    执行器接口,delete 一行数据

  7. EndForeignModify_function EndForeignModify;

    执行器接口,修改结束,释放相关资源

  8. IsForeignRelUpdatable_function IsForeignRelUpdatable;

    执行器接口,修改结束,释放相关资源

3 查询计划展示接口

  1. ExplainForeignScan_function ExplainForeignScan;

    展示扫描节点的相关信息

  2. ExplainForeignModify_function ExplainForeignModify;

    展示修改数据节点的相关信息

4 外部数据源统计信息接口

  1. AnalyzeForeignTable_function AnalyzeForeignTable;

    分析外部数据的数据分布状况接口

总结

  1. 用户可以根据需求实现他们,如只需要读取数据,则不用实现第二部分;
  2. 除了支持读取数据相关接口,还支持了对统计信息的接入。这样,PostgreSQL 真正的把外部数据源当作了“表”。考虑到了数据的规模,使得优化器合理的规划了外部表的执行路径。和执行阶段执行器深度结合。整套接口设计清晰分工明确;
  3. 这套接口的实现可以参考已经实现的 PostgreSQL_FDW

GreenPlum external table

GreenPlum external table 和 PostgreSQL FDW 的区别

GreenPlum external table 在实现上和 PostgreSQL FDW 完全不同,有自己的特点:

  1. GreenPlum 只提供了两个对外的接口 readfunc 和 writefunc;
  2. GreenPlum external table 接口和内核交互的的内容是数据块,而 PostgreSQL FDW 是 tuple slot。
    也就是说,通过 PostgreSQL FDW 需要把外部数据源做完整的行列解析,而 GreenPlum external table 则不同;
  3. 最大的不同 GreenPlum external table 执行过程中是驱动 segment 工作,可以通过这个接口让所有 segment 同时并行工作并行读写数据,大大提高了整个集群的性能;
  4. GreenPlum external table 没有像 PostgreSQL FDW 那样的读取统计信息,并提供给优化器的接口,在复杂查询场景下使用 GreenPlum external table 可能查询计划不是最优的;

GreenPlum external table 接口

  1. readfunc

    按数据块读取数据

  2. writefunc

    按数据块写数据

从 oss 读取数据

基于上述编程接口,我们开发了一套用于从 oss 导入数据到 GreenPlum 和 PostgreSQL 的插件,性能杠杠的。帮助云上用户更好的使用 RDS 数据库产品。

从 oss 导入数据到 GreenPlum

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
5月前
|
SQL 存储 关系型数据库
PolarDB产品使用合集之有的sql里面有自定义存储函数 如果想走列存有什么优化建议吗
PolarDB是阿里云推出的一种云原生数据库服务,专为云设计,提供兼容MySQL、PostgreSQL的高性能、低成本、弹性可扩展的数据库解决方案,可以有效地管理和优化PolarDB实例,确保数据库服务的稳定、高效运行。以下是使用PolarDB产品的一些建议和最佳实践合集。
333 0
|
存储 安全 前端开发
PostgreSQL 12 文档: 部分 VII. 内部
部分 VII. 内部 这一部分包含PostgreSQL开发者可能用到的各类信息。 目录
93 0
|
SQL 关系型数据库 数据库
|
关系型数据库 测试技术 数据库
PgSQL · 内核优化 · Hybrid DB for PG 赋能向量化执行和查询子树封装
背景 Hybrid DB for postgresql简介: 随着大数据时代的不断演进, 用户对于数据的分析能力的需要提出了越来越高的要求。 Hybrid DB for postgres(本文后续将会使用HDBP来代表)是一款基于Greenplum开源项目的分析型数据库。
2084 0
|
存储 测试技术 OLAP
PgSQL · 特性介绍 · 列存元数据扫描介绍
摘要 本文通过对于阿里云分析型数据库HybridDB for postgresql 数据库的列存扫描的优化特征的解析,让大家了解列存元数据扫描是如何达到提升查询扫描的速度的效果。从而使的分析型查询执行时间进一步缩短。
1999 0
|
SQL 监控 Go
MSSQL · 应用案例 · 日志表设计优化与实现
摘要 这篇文章从日志表问题引入、日志表的共有特性、日志表的设计需求、设计思路以及设计详细实现的角度,阐述了在SQL Server数据库中如何最优化设计日志表来降低系统资源的占用和提高系统吞吐量。问题引入 在平时与客户服务与交流过程中,我们不止一次的被客人问及这样的场景:我们现在面临如何设计SQL Server日志表方案,如何最优化设计数据库日志记录表。
1525 0
|
存储 算法 物联网
PgSQL · 应用案例 · HDB for PG特性(数据排盘与任意列高效率过滤)
背景 数据也有生辰八字,你信吗?列与列之间,行与行之间,元素与元素之间如何相生相克?查询慢?不要信什么这都是上天注定的,如何给数据改运?看完本文,你也可以做到。 一份天赋,九份努力。缘分天注定。命由天定。又有说我命由我不由天的。看样子中国古人对先天注定的东西研究还挺透彻,看的还挺开,但是也有通过后天努力,或者后天改运等等手段来弥补先天不足的。 实际上在准备写本文时,我发现数据库的数据编
2289 0
|
存储 测试技术 OLAP
PgSQL · 特性介绍 · 列存元数据扫描介绍
摘要 本文通过对于阿里云分析型数据库HybridDB for postgresql 数据库的列存扫描的优化特征的解析,让大家了解列存元数据扫描是如何达到提升查询扫描的速度的效果。从而使的分析型查询执行时间进一步缩短。最终能够更好的为阿里云的用户提供更高性价比的服务。 关键字 Meta data scan,HybridDB for postgresql, GreenPlum,column stor
3590 0