天天看點

如何将資料倉庫從 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大表聚合操作的列存表。

如何将資料倉庫從 AWS Redshift 遷移到阿裡雲 AnalyticDB for PostgreSQL産品架構比較關鍵文法比較及遷移資料遷移

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建表文法差異

文法
表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
);           
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包含如下步驟:

  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。

整體遷移路徑如下:

如何将資料倉庫從 AWS Redshift 遷移到阿裡雲 AnalyticDB for PostgreSQL産品架構比較關鍵文法比較及遷移資料遷移
詳細操作步驟可參見