如何将数据仓库从 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的比較
| PostgreSQL版本 | PG 9.4 | PG 8.2 | |
| SQL語法 | 兼容PG,部分兼容Oracle語法 | 兼容PG | |
| 事務 | 支持 | 支持 | |
| 行存儲 | 支持 | 不支持 | |
| 列存儲 | 支持 | 支持 | |
| 表分區 | 支持 | 支持 | |
| 云存儲 | 支持OSS數據在線訪問 | 支持S3數據在線訪問 | |
| 多模分析 | PostGIS/MADLib/向量檢索 | ? | |
關鍵語法比較及遷移
阿里云AnalyticDB for PostgreSQL與AWS Redshift都基于單機PostgreSQL內核引擎,故語法高度兼容,部分語法描述略有差異如下。
DDL建表語法差異
| 表Hash分布 | DISTKEY(col) | DISTRIBUTED BY(col) | |
| 表隨機分布 | DISTSTYLE EVEN | DISTRIBUTED RANDOMLY | |
| 表復制分布 | DISTSTYLE ALL | DISTRIBUTED REPLICATED | |
| 數據編碼壓縮 | AZ64/BYTEDICT/DELTA/LZO/RAW/RUNLENGTH/ZSTD | (COMPRESSTYPE={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,COMPRESSTYPE=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, COMPRESSTYPE=zlib) DISTRIBUTED randomly SORTKEY (filed1 );數據遷移
Redshift和ADB PG均支持從云存儲的告訴并行數據導入和導出。從Redshift遷移數據到AnalyticDB for PostgreSQL包含如下步驟:
整體遷移路徑如下:
原文鏈接
本文為阿里云原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的如何将数据仓库从 AWS Redshift 迁移到阿里云 AnalyticDB for PostgreSQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器人】标记不友好评论,AI工作效果是
- 下一篇: 利用云数据库 MongoDB ,为你的业