让数据从PostgreSQL流动到Greenplum

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
对象存储 OSS,20GB 3个月
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 在2016云栖大会杭州峰会开源数据库之 Greenplum专场上,阿里云数据库专家曾文旌(义从)做了题为《PostgreSQL Greenplum 数据上云》的演讲。分享了数据上云可能会面对的问题,并且为大家分享了阿里云所提供的解决方案以及使用OSS插件支持Greenplum方案的优势。

以下内容根据演讲PPT以及现场分享整理而成。


本次分享的主要内容
一、数据上云面对的问题
二、解决方案
三、方案优势


一、数据上云面对的问题
现在大家在使用云数据库的时候,可能会遇到的一个很大的问题就是:如何将海量的数据迁移到云端上去。当然在数据迁移的过程中还有可能会遇到网络问题,当网络时好时坏,可能数据上传过程中网络突然断掉,那么几个G或者几十个G的任务就挂掉了,需要重新再导入一遍。还有一个问题就是使用阿里云的各个数据产品时,如何在这些数据产品之间进行数据互通。


二、解决方案
面对这些问题,阿里云也为大家提供了一些解决方案和工具。

f5d8be9a5f6c4b988e7639fd369e019d8c4d0388

  • 第一个工具是oss_ext,它在Greenplum上支持OSS的外表,这个OSS外表将数据通道从OSS打通到Greenplum,其表现形式是在Greenplum中创建一张表,而这张表可以从OSS中导入数据,并且以文本文件的形式存储在OSS上面,并且可以通过文件名进行前缀匹配。简单来说,使用几条SQL语句就可以将OSS上面的数据导入到Greenplum上面去。
  • 第二个工具是oss_fdw,通过它可以将OSS和PG以及PPAS打通,在交易型业务上获取的数据可以很容易地存储到OSS上并且最终导入到Greenplum上,所以通过云做交易业务的用户能够很容易地将数据导入到Greenplum进行数据分析。
  • 第三个工具是pgsql2pgsql,它支持了整个Postgre家族,从PPAS到Greenplum都是兼容的,只需要经过简单的配置就可以将数据从一端保存到另一端。
  • 第四个工具就是mysql2pgsql,它可以使MySQL数据库的数据很容易地导入到Greenplum上面来。

对于整个解决方案而言,每个工具都具有一些特点。

首先,OSS是阿里云上非常廉价的存储服务,它可以和云上所有的数据产品进行打通,并且其收费非常便宜,按照存储量和请求次数进行收费,具体的收费规则在阿里云官网上大家可以看到。

总体而言,使用OSS的成本是相当低的。

  • oss_ext的特点是使用驱动segment对于数据进行装载和导入,并且也支持Greenplum,其数据导入导出性能非常高。
  • 对于oss_fdw来说,它可以支持PG和PPAS,而且数据的格式完全和之前的数据格式兼容,对数据进行读写没有任何障碍。
  • pgsql2pgsql的特点是数据可以在整个PG家族之间进行来回迁移,值得一提的就是在某些场景下还能够支持增量。
  • mysql2pgsql的特点就是,MySQL上面的数据通过它可以很容易迁移到PG家族中去。

整个方案都是以OSS为存储中心,交易型的业务都可以使用OSS作为数据的中间介质进行导入导出。

e0ed4288a7b63c2571243cc3c036d11ff354a4f5

之前在单节点的RDS上面可能会遇到问题就是:购买实例的存储是有限制的。一般而言存储就是几个T,但是一些含有历史数据的表会非常庞大,占据了大量的存储空间,但是对于这些表格查询的次数往往比较少,也就是属于常说的冷数据。面对这样的场景,可以使用OSS对其进行存储,以此将这些冷数据原本占据的大量的存储空间释放掉,当需要的时候再将其导入到数据库中。其实当数据表存储到OSS上面时,也可以非常容易地访问到,只不过性能稍微弱一点,花费的时间稍微长一些。

bebc3ca7669a65d6d9ff79745d87333b0368984c

接下来分享一下Greenplum上的OSS插件的工作原理,我们都知道这样的架构主要由一个主节点和多个计算节点组成。读写的过程中完全让segment进行计算,充分利用segment上面的计算资源、内存和网络。

a73fa7f38ec589058060c2e5567672d3b5b226dd

Greenplum上的OSS插件有很多丰富的特性。

  1. 支持分布式并行数据加载,读写数据的性能随集群segment节点数线性增长,集群越大,性能越强。
  2. 支持自定义格式的文本文件,可以自定义分隔符,自定义数据格式。
  3. 支持多种OSS文件匹配模式,存放非常灵活。
  4. oss_fdw、oss_ext都支持容错模式,对于一个含有上亿条数据的任务而言,当发现几条或者几十条错误的时候,任务会继续执行,并且将错误记录下来,不会由于某些错误而使得整个过程终止。
  5. 支持丰富的性能调优参数。
  6. 支持网络超时自动重试。
  7. 安全特性支持OSS id key 加密存储和隐藏显示。

OSS插件在未来还会支持更多的特性,很多的特性都是根据阿里云客户在实际使用中挖掘出来的,未来阿里云OSS将会对这些特性进行更好地支持。

  1. 未来会支持读写多种压缩文件,进一步降低使用成本。
  2. 扩展多样的读写模式,比如覆盖写模式和追加写模式。
  3. 面对现实场景下的CPU性能导致的数据导入导出瓶颈,未来OSS将会采取一些方案来优化CPU,提高数据的导入和导出速度。
  4. 未来会做同一个外表放在同一个目录,使用OSS文件前缀进行匹配,使文件命名更加方便。

Greenplum已经支持的其他特性

79107be09c43785edc22bcb596fc4d79927f4d94


三、方案优势
使用Greenplum上的OSS插件的方案具有很多优势。
1.使用OSS
OSS的使用成本比较低,并且可以跨各数据库产品进行支持,可以跨可用区进行数据同步。对于冷数据转存到OSS,依然可以当做表访问,只不过性能表现略微降低。
2.并行导入性能高于常规数据导入导出方式
充分利用每个数据节点的CPU、内存、网络等硬件资源,举个例子对于650G的数据,大约20亿行文本数据需要导入到32个segment的Greenplum集群只需要大约35分钟。
3.各数据产品间灵活的交换数据
4.pgsql2pgsql

可以支持不落地数据迁移,pg、ppas大于9.4的版本可以支持基于逻辑复制的增量迁移。
5.mysql2pgsql
可以支持不落地数据迁移,支持多表并发,支持基于条件的增量。
6.工具现在已开源到GitHub
https://github.com/aliyun/rds_dbsync

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的数据文件
PostgreSQL的物理存储结构主要包括数据文件、日志文件等。数据文件按oid命名,超过1G时自动拆分。通过查询数据库和表的oid,可定位到具体的数据文件。例如,查询数据库oid后,再查询特定表的oid及relfilenode,即可找到该表对应的数据文件位置。
|
7月前
|
消息中间件 Java 关系型数据库
实时计算 Flink版操作报错合集之从 PostgreSQL 读取数据并写入 Kafka 时,遇到 "initial slot snapshot too large" 的错误,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
1028 0
|
7月前
|
DataWorks 安全 关系型数据库
DataWorks产品使用合集之使用Flink CDC读取PostgreSQL数据时如何指定编码格式
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
109 0
|
5月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
571 0
|
5月前
|
SQL 关系型数据库 HIVE
实时计算 Flink版产品使用问题之如何将PostgreSQL数据实时入库Hive并实现断点续传
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
开发框架 关系型数据库 数据库
在 PostgreSQL 中,解决图片二进制数据,由于bytea_output参数问题导致显示不正常的问题。
在 PostgreSQL 中,解决图片二进制数据,由于bytea_output参数问题导致显示不正常的问题。
|
7月前
|
关系型数据库 5G PostgreSQL
postgreSQL 导出数据、导入
postgreSQL 导出数据、导入
64 1
|
关系型数据库 分布式数据库 PolarDB
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
379 0
|
存储 缓存 关系型数据库
|
存储 SQL 并行计算
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍(中)
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍
436 0