PgSQL最佳實踐 - 雲上的資料移轉

來源:互聯網
上載者:User

摘要: title: PgSQL · 最佳實踐· 雲上的資料移轉author: 義從幕後大多數使用雲產品作為IT 解決方案的客戶同時使用多款雲產品是一個普遍現象。使用者在多款雲產品之間轉送資料成為一個基礎的需求。

title: PgSQL · 最佳實踐· 雲上的資料移轉

author: 義從

幕後

大多數使用雲產品作為IT 解決方案的客戶同時使用多款雲產品是一個普遍現象。
使用者在多款雲產品之間轉送資料成為一個基礎的需求。

例如

  • 1. 用戶把線下機房中的 Oracle 資料庫中的資料 遷移到雲上 RDS PPAS 中。
  • 2. 使用 RDS MYSQL 做為資料庫支架交易型商務場景,同時使用 HybridDB for PostgreSQL 作資料倉儲解決方案。
  • 3. 把 ODPS 中的大量資料匯入到 HybridDB for PostgreSQL 進行即時剖析。

上述場景都不可避免的需要進行雲上的資料移轉。本文給大家聊聊這方面的一些解決方案,希望能說明大家用好雲產品。

一:關於硬體

在開始資料移轉之前,我們要對雲相關的硬體有一些瞭解,這往往決定了我們能做到的最好情況,有助於我們選擇最終解決方案。

1. 同一可用區

如果資料在雲上,且在同一可用區間進行交換,那麼恭喜你,這是最有效率的資料交換方式,也是我們最推薦的場景。資料應該儘量在一個可用區。

現階段的雲產品所設定的網路最差都是千兆網路,萬兆網路基本普及。資料的遷移在一個可用區間經過的交換器最小,因此延遲低,頻寬較大,可以做到比較理想的輸送量。

因此,後端資料庫、前端ECS和存放大量資料的OSS 都應該在選擇在同一個可用區。

2. 跨可用區、城市間可用區

部份有較高可用工時要求的客戶,會選擇同城多可用區部署,甚至跨城市部署。進一步,阿裡雲有很多資料產品支援原生的多可用區部署方案。

阿裡雲在同城或跨城市的可用區間是通過專用線路網路連接。在這樣的網路產品中交換資料效率雖然沒有再同一可用區高,但依然能許諾較高的網路品質。

從網路通訊效率角度,從高到低自然是:

同可用區> 同城多可用區間> 跨城多可用區間

例如:

(華東一可用區B內部)> (華東一可用區B和華東一可用區C間)> (華東一可用區B和華北一可用區B間)

3. 公網和VPN 網路

這是效率最差的情況,也是幕後章節中的資料上雲場景的典型。因為該場景的物理通道是公共的且不可控。往往延遲較大,且品質有較大波動。

先天不足,自然需要用軟體做適當的彌補,通常建議用戶選取具有下列屬性的軟體或服務。

  • a: 支援重試機制,支援中斷點續傳,大任務不能由於一個異常導致整個失敗。
  • b: 支援並行機制,使用大並行增大輸送量。
  • c: 使用增量資料移轉減少服務的停機時間。

接下來聊一聊資料交換中的資料格式問題。

二:關於資料格式

在不同資料產品間轉送資料通常有兩種方式

1. 不落地的資料移轉

軟體或服務同時串連到來源資料端和目的端,把資料從源端拉出來,轉換成目的端辨識的格式後立即寫入到目的端。

該方法不需要資料中轉空間,但要求的網路品質較高。如果資料量超大,如TB 級,那麼遷移時間也比較長。

阿裡雲開源產品rds_dbsync,CDP(dataX,雲端服務DTS 都屬於這類。

2. 通過通用檔案格式的資料移轉

如果您的資料量較大,則建議使用離線遷移轉送資料,例如幾十TB 的數倉資料。
離線遷移是指把全量資料匯出成一種通用的資料格式,再匯入到目的資料庫。

相比不落地資料移轉,他有這些優勢

  • 1)離線匯出的資料通常都會進行壓縮,壓縮比一般在 1:2 到 1:5 之間,能較大節省網路開銷,從而升階整體效率。
  • 2)離線方式很容易並行化,並行是提高效率的最有效手段。

基於檔案的資料移轉,檔案的格式是其中的關鍵。檔案需要明確的交代資料的組織方式。

目前常用的檔案格式有:TXT/CSV TSV ORC Parquet protobuf 等。
這裡部份資料格式已經自帶資料壓縮,例如ORC Parquet。對於未壓縮的格式,如CSV 可以自由選擇資料壓縮格式,例如gzip bzip2 snappy 等。

2.1 通過TEXT/CSV 檔案中轉資料

  • 對於結構化資料,比較理想的資料格式是 CSV,CSV 是一種通用的資料格式標準,格式簡單且透明,大家可以參考資料:CSV檔案標準
  • PostgreSQL CSV 參數在資料2中。適用於社群和阿裡雲的 PostgreSQL 已經 Greenplum 和 HybridDB for PostgreSQL。
  • 任何符合 CSV 標準的檔案都可以匯入 PostgreSQL 系列產品。
    • PostgreSQL 發送式匯入資料COPY
    • HybridDB for PostgreSQL 發送式寫資料COPY

CSV 相對簡單的文字格式設定的優勢是定義了清晰的語意,用於很容易處理一些複雜的場景

  • CSV 行分割符號是 ‘ ’ ,也就是分行符號
  • DELIMITER 用於定義列的分割符
    • 當使用者資料中包括 DELIMITER 時,則需要配合 QUOTE 參數。
    • 推薦的列分割符有 ‘,’、‘ ‘ 、‘|’ 或一些不常出現的字元。
  • QUOTE 以列為單位包裹有特殊字元的用戶資料
    • 用戶包含有特殊字元的字元字串會被 QUOTE 包裹,用於區分用戶資料和控制字元。
    • 如果不必要,例如整數,資料不會被 QUOTE 包裹(用於優化效率)。
    • QUOTE 不能和 DELIMITER 相同,預設 QUOTE 是雙引號。
    • 當使用者資料中包含了 QUOTE 字元,則需要使用逸出字元 ESCAPE 加以區分。
  • ESCAPE 特殊字元轉義
    • 逸出字元出現在需要轉義的特殊字元前,表示它不是一個特殊字元
    • ESCAPE 預設和 QUOTE 相同,也就是雙引號。
    • 也支援設定成 ‘’(MySQL 預設的逸出字元)或別的字元。
這是典型的TEXT 和CSV 檔案中預設的控制字元

控制字元 格式

TEXT

CSV

DELIMITER(列分割符)

(tab)

,(comma)

QUOTE(摘引)

"(double-quote)

"(double-quote)

ESCAPE(轉義)

(不適用)

和 QUOTE相同

NULL(空值)

N(backslash-N)

(無引號的空字元字串)

所有的控制字元都必須是單字節字元

2.2 用OSS 中專資料

OSS 和AWS 的S3 一樣,是雲上廉價的隱藏服務,它打通了幾乎所有的雲產品。我們推薦使用者使用它來中專大容量資料。

OSS 支援跨可用區資料傾印資料(跨區域複製),用戶可以很強烈影響把大量資料轉送到另一個可用區。

目前,雲裳的PostgreSQL 和HybridDB for PostgreSQL 都支援OSS 資料來源的讀寫。

  • PostgreSQL + OSS 讀寫外部資料源oss_fdw
  • HybridDB for PostgreSQL + OSS 並行的匯入匯出資料oss_ext

總結

本期分享了雲上和資料轉送相關的幾個簡單技巧,希望能幫到大家用好雲。我們的產品在快速反覆運算,也請大家多回饋問題,說明我們進步。

參考資料

  1. CSV 格式標準
  2. PostgreSQL COPY
  3. PostgreSQL + OSS oss_fdw
  4. HybridDB for PostgreSQL COPY
  5. HybridDB for PostgreSQL + OSS oss_ext
  6. 阿裡雲開源軟體 rds_dbsync
  7. SLS 支援投遞 CSV 格式的資料到 OSS

相關產品:

  1. 雲資料庫RDS
相關關鍵詞:
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.