如何将数据仓库从 AWS Redshift 迁移到阿里云 AnalyticDB for PostgreSQL
阿里云AnalyticDB for PostgreSQL(以下簡(jiǎn)稱 ADB PG,即原HybridDB for PostgreSQL)為基于PostgreSQL內(nèi)核的MPP架構(gòu)的實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)服務(wù),可以支持復(fù)雜ETL任務(wù),也支持高性能在線查詢,同阿里云生態(tài)緊密結(jié)合。AWS 的Redshift同樣為基于PostgreSQL內(nèi)核引擎的MPP數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器,在AWS被廣泛作為數(shù)據(jù)倉(cāng)庫(kù)使用。ADB PG和Redshift從架構(gòu)到語(yǔ)法上同Redshift高度兼容。本文重點(diǎn)介紹兩個(gè)數(shù)倉(cāng)平臺(tái)如何進(jìn)行遷移。
產(chǎn)品架構(gòu)比較
阿里云AnalyticDB for PostgreSQL最新版本 6.0 基于PostgreSQL 9.4構(gòu)建,Redshift 基于PostgreSQL 8.2版本,相對(duì)ADB PG的功能要更加全面,且全面兼容PostgreSQL生態(tài)的工具,包括PostGIS,MADlib等擴(kuò)展分析。Redshift 只支持列存表,而不支持PostgreSQL原生的行存表,而ADB PG即保留了PostgreSQL行存表支持,實(shí)現(xiàn)高吞吐的數(shù)據(jù)更新操作,也支持面向OLAP大表聚合操作的列存表。
AnalyticDB for PG 與 Redshift的比較
| PostgreSQL版本 | PG 9.4 | PG 8.2 | |
| SQL語(yǔ)法 | 兼容PG,部分兼容Oracle語(yǔ)法 | 兼容PG | |
| 事務(wù) | 支持 | 支持 | |
| 行存儲(chǔ) | 支持 | 不支持 | |
| 列存儲(chǔ) | 支持 | 支持 | |
| 表分區(qū) | 支持 | 支持 | |
| 云存儲(chǔ) | 支持OSS數(shù)據(jù)在線訪問(wèn) | 支持S3數(shù)據(jù)在線訪問(wèn) | |
| 多模分析 | PostGIS/MADLib/向量檢索 | ? | |
關(guān)鍵語(yǔ)法比較及遷移
阿里云AnalyticDB for PostgreSQL與AWS Redshift都基于單機(jī)PostgreSQL內(nèi)核引擎,故語(yǔ)法高度兼容,部分語(yǔ)法描述略有差異如下。
DDL建表語(yǔ)法差異
| 表Hash分布 | DISTKEY(col) | DISTRIBUTED BY(col) | |
| 表隨機(jī)分布 | DISTSTYLE EVEN | DISTRIBUTED RANDOMLY | |
| 表復(fù)制分布 | DISTSTYLE ALL | DISTRIBUTED REPLICATED | |
| 數(shù)據(jù)編碼壓縮 | AZ64/BYTEDICT/DELTA/LZO/RAW/RUNLENGTH/ZSTD | (COMPRESSTYPE={ZStD/ZLIB/QUICKLZ/RLE_TYPE/NONE}) | |
| 列存排序鍵 | SORTKEY (col) | with(APPENDONLY=true,ORIENTATION=column)sortkey (volume) | |
| 系統(tǒng)函數(shù) | PG8.2及部分自定義函數(shù) | PG9.4及部分自定義函數(shù) | |
語(yǔ)法指南
ADB PG建表指南
Redshift建表指南
DDL轉(zhuǎn)換示例1
Redshift 建表語(yǔ)句,包含分布鍵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建表語(yǔ)句:
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轉(zhuǎn)換示例2
Redshift 建表語(yǔ)句,包含ENCODE和SORTKEY選項(xiàng):
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建表語(yǔ)句:
CREATE TABLE schema2.table2(filed1 VARCHAR(50),filed2 VARCHAR(50),filed3 VARCHAR(20)) WITH(APPENDONLY=true, ORIENTATION=column, COMPRESSTYPE=zlib) DISTRIBUTED randomly SORTKEY (filed1 );數(shù)據(jù)遷移
Redshift和ADB PG均支持從云存儲(chǔ)的告訴并行數(shù)據(jù)導(dǎo)入和導(dǎo)出。從Redshift遷移數(shù)據(jù)到AnalyticDB for PostgreSQL包含如下步驟:
整體遷移路徑如下:
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的如何将数据仓库从 AWS Redshift 迁移到阿里云 AnalyticDB for PostgreSQL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【机器人】标记不友好评论,AI工作效果是
- 下一篇: 利用云数据库 MongoDB ,为你的业