阿里云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及部分自定义函数 |
语法指南
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包含如下步骤:
- 资源和环境准备,执行操作前需提前准备Amazon Redshift、Amazon S3(Amazon Simple Storage Service)、AnalyticDB for Postgresql和阿里云对象存储服务(OSS)的相关资源。
- 将Redshift的数据导入到Amazon S3中。
- 使用OSSImport将Amazon S3中CSV格式的数据文件导入到OSS。
- 在目标AnalyticDB for Postgresql中创建和源Redshift对应的对象,包括模式(Schema)、表(Table)、视图(View)和函数(Function)。
- 使用OSS外部表将数据导入到AnalyticDB for Postgresql。
整体迁移路径如下:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。