阿里云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 | ADB 全面兼容PG生态 | |
SQL语法 | 兼容PG,部分兼容Oracle语法 | 兼容PG | ADB 兼容性更强 | |
事务 | 支持 | 支持 | ||
行存储 | 支持 | 不支持 | ADB PG基于行存储实现高吞吐数据更新操作 | |
列存储 | 支持 | 支持 | ||
存储过程 | 支持 | 不支持 | ADB支持PL/SQL, PL/Java等过程语言 | |
表分区 | 支持 | 支持 | ||
云存储 | 支持OSS数据在线访问 | 支持S3数据在线访问 | ||
多模分析 | PostGIS, MADLib, 向量检索 | 不支持 | ADB PG支持时空数据分析,机器学习算法,非结构化数据检索 |
关键语法迁移及转换
阿里云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 (no compression)/RUNLENGTH/ZSTD | with (COMPRESSTYPE={ZStD/ZLIB/QUICKLZ/RLE_TYPE/NONE}) | |
列存排序键 | SORTKEY (col) | with(APPENDONLY=true,ORIENTATION=column)sortkey (volume) |
语法指南
[ADB PG建表指南]( https://help.aliyun.com/document_detail/118150.html)
[Redshift建表指南](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html)
数据迁移
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。
整体迁移路径如下:
详细操作步骤可参见
发表评论