微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将数据仓库从 AWS Redshift 迁移到阿里云 AnalyticDB for PostgreSQL

阿里云AnalyticDB for Postgresql(以下简称 ADB PG,即原HybridDB for Postgresql)为基于Postgresql内核的MPP架构的实时数据仓库服务,可以支持复杂ETL任务,也支持性能在线查询,同阿里云生态紧密结合。AWS 的Redshift同样为基于Postgresql内核引擎的MPP数据仓库服务器,在AWS被广泛作为数据仓库使用。ADB PG和Redshift从架构到语法上同Redshift高度兼容。本文重点介绍两个数仓平台如何进行迁移。

产品架构比较

阿里云AnalyticDB for Postgresql最新版本 6.0 基于Postgresql 9.4构建,Redshift 基于Postgresql 8.2版本,相对ADB PG的功能要更加全面,且全面兼容Postgresql生态的工具,包括PostGIS,MADlib等扩展分析。Redshift 只支持列存表,而不支持Postgresql原生的行存表,而ADB PG即保留了Postgresql行存表支持,实现高吞吐的数据更新操作,也支持面向OLAP大表聚合操作的列存表。

AnalyticDB for PG 与 Redshift的比较

功能项目 ADB PG Redshift
Postgresql版本 PG 9.4 PG 8.2
sql语法 兼容PG,部分兼容Oracle语法 兼容PG
事务 支持 支持
行存储 支持 不支持
列存储 支持 支持
表分区 支持 支持
云存储 支持OSS数据在线访问 支持S3数据在线访问
多模分析 PostGIS/MADLib/向量检索  

关键语法比较及迁移

阿里云AnalyticDB for Postgresql与AWS Redshift都基于单机Postgresql内核引擎,故语法高度兼容,部分语法描述略有差异如下。

DDL建表语法差异

语法 Redshift ADB PG
表Hash分布 disTKEY(col) distributeD BY(col)
随机分布 disTSTYLE EVEN distributeD RANDOMLY
表复制分布 disTSTYLE ALL distributeD REPLICATED
数据编码压缩 AZ64/BYTEDICT/DELTA/LZO/RAW/RUNLENGTH/ZSTD (COMPRE@R_404_6455@YPE={ZStD/ZLIB/QUICKLZ/RLE_TYPE/NONE})
列存排序键 SORTKEY (col) with(APPENDONLY=true,ORIENTATION=column)sortkey (volume)
系统函数 PG8.2及部分自定义函数 PG9.4及部分自定义函数

语法指南

ADB PG建表指南
Redshift建表指南

DDL转换示例1

Redshift 建表语句,包含分布键disTKEY和排序列:

CREATE TABLE schema1.table1(
    filed1 VARCHAR(100) ENCODE lzo,
    filed2 INTEGER disTKEY,
    filed3 INTEGER,
    filed4 BIGINT ENCODE lzo,
    filed5 INTEGER,)
INTERLEAVED SORTKEY (
    filed1,
    filed2);

ADB PG建表语句:

CREATE TABLE schema1.table1
(
    filed1 VARCHAR(100) ,
    filed3 INTEGER,
    filed5 INTEGER
)
WITH(APPENDONLY=true,ORIENTATION=column,COMPRE@R_404_6455@YPE=zlib)
distributeD BY (filed2)
SORTKEY
(
    filed1,
    filed2
)
            

DDL转换示例2

Redshift 建表语句,包含ENCODE和SORTKEY选项:

CREATE TABLE schema2.table2
(
    filed1 VARCHAR(50) ENCODE lzo,
    filed2 VARCHAR(50) ENCODE lzo,
    filed3 VARCHAR(20) ENCODE lzo,
)
disTSTYLE EVEN
INTERLEAVED SORTKEY
(
    filed1
);

ADB PG建表语句:

CREATE TABLE schema2.table2(
    filed1 VARCHAR(50),
    filed2 VARCHAR(50),
    filed3 VARCHAR(20))
WITH(APPENDONLY=true, ORIENTATION=column, COMPRE@R_404_6455@YPE=zlib)
distributeD randomly
SORTKEY
(
    filed1
);        

数据迁移

Redshift和ADB PG均支持从云存储的告诉并行数据导入和导出。从Redshift迁移数据到AnalyticDB for Postgresql包含如下步骤:

  1. 资源和环境准备,执行操作前需提前准备Amazon Redshift、Amazon S3(Amazon Simple Storage Service)、AnalyticDB for Postgresql和阿里云对象存储服务(OSS)的相关资源。
  2. 将Redshift的数据导入到Amazon S3中。
  3. 使用OSSImport将Amazon S3中CSV格式的数据文件导入到OSS。
  4. 在目标AnalyticDB for Postgresql中创建和源Redshift对应的对象,包括模式(Schema)、表(Table)、视图(View)和函数(Function)。
  5. 使用OSS外部表将数据导入到AnalyticDB for Postgresql

整体迁移路径如下:


原文链接
本文为阿里云原创内容,未经允许不得转载。

阿里云云栖号 企业博客 发布了2298 篇原创文章 · 获赞 1862 · 访问量 104万+ 他的留言板 关注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐