天天看點

讓資料從PostgreSQL流動到Greenplum

以下内容根據演講ppt以及現場分享整理而成。

本次分享的主要内容

一、資料上雲面對的問題

二、解決方案

三、方案優勢

現在大家在使用雲資料庫的時候,可能會遇到的一個很大的問題就是:如何将海量的資料遷移到雲端上去。當然在資料遷移的過程中還有可能會遇到網絡問題,當網絡時好時壞,可能資料上傳過程中網絡突然斷掉,那麼幾個g或者幾十個g的任務就挂掉了,需要重新再導入一遍。還有一個問題就是使用阿裡雲的各個資料産品時,如何在這些資料産品之間進行資料互通。

面對這些問題,阿裡雲也為大家提供了一些解決方案和工具。

讓資料從PostgreSQL流動到Greenplum

第一個工具是oss_ext,它在greenplum上支援oss的外表,這個oss外表将資料通道從oss打通到greenplum,其表現形式是在greenplum中建立一張表,而這張表可以從oss中導入資料,并且以文本檔案的形式存儲在oss上面,并且可以通過檔案名進行字首比對。簡單來說,使用幾條sql語句就可以将oss上面的資料導入到greenplum上面去。

第二個工具是oss_fdw,通過它可以将oss和pg以及ppas打通,在交易型業務上擷取的資料可以很容易地存儲到oss上并且最終導入到greenplum上,是以通過雲做交易業務的使用者能夠很容易地将資料導入到greenplum進行資料分析。

第三個工具是pgsql2pgsql,它支援了整個postgre家族,從ppas到greenplum都是相容的,隻需要經過簡單的配置就可以将資料從一端儲存到另一端。

第四個工具就是mysql2pgsql,它可以使mysql資料庫的資料很容易地導入到greenplum上面來。

對于整個解決方案而言,每個工具都具有一些特點。

首先,oss是阿裡雲上非常廉價的存儲服務,它可以和雲上所有的資料産品進行打通,并且其收費非常便宜,按照存儲量和請求次數進行收費,具體的收費規則在阿裡雲官網上大家可以看到。

總體而言,使用oss的成本是相當低的。

oss_ext的特點是使用驅動segment對于資料進行裝載和導入,并且也支援greenplum,其資料導入導出性能非常高。

對于oss_fdw來說,它可以支援pg和ppas,而且資料的格式完全和之前的資料格式相容,對資料進行讀寫沒有任何障礙。

pgsql2pgsql的特點是資料可以在整個pg家族之間進行來回遷移,值得一提的就是在某些場景下還能夠支援增量。

mysql2pgsql的特點就是,mysql上面的資料通過它可以很容易遷移到pg家族中去。

整個方案都是以oss為存儲中心,交易型的業務都可以使用oss作為資料的中間媒體進行導入導出。

讓資料從PostgreSQL流動到Greenplum

之前在單節點的rds上面可能會遇到問題就是:購買執行個體的存儲是有限制的。一般而言存儲就是幾個t,但是一些含有曆史資料的表會非常龐大,占據了大量的存儲空間,但是對于這些表格查詢的次數往往比較少,也就是屬于常說的冷資料。面對這樣的場景,可以使用oss對其進行存儲,以此将這些冷資料原本占據的大量的存儲空間釋放掉,當需要的時候再将其導入到資料庫中。其實當資料表存儲到oss上面時,也可以非常容易地通路到,隻不過性能稍微弱一點,花費的時間稍微長一些。

讓資料從PostgreSQL流動到Greenplum

接下來分享一下greenplum上的oss插件的工作原理,我們都知道這樣的架構主要由一個主節點和多個計算節點組成。讀寫的過程中完全讓segment進行計算,充分利用segment上面的計算資源、記憶體和網絡。

讓資料從PostgreSQL流動到Greenplum

greenplum上的oss插件有很多豐富的特性。

支援分布式并行資料加載,讀寫資料的性能随叢集segment節點數線性增長,叢集越大,性能越強。

支援自定義格式的文本檔案,可以自定義分隔符,自定義資料格式。

支援多種oss檔案比對模式,存放非常靈活。

oss_fdw、oss_ext都支援容錯模式,對于一個含有上億條資料的任務而言,當發現幾條或者幾十條錯誤的時候,任務會繼續執行,并且将錯誤記錄下來,不會由于某些錯誤而使得整個過程終止。

支援豐富的性能調優參數。

支援網絡逾時自動重試。

安全特性支援oss id key 加密存儲和隐藏顯示。

oss插件在未來還會支援更多的特性,很多的特性都是根據阿裡雲客戶在實際使用中挖掘出來的,未來阿裡雲oss将會對這些特性進行更好地支援。

未來會支援讀寫多種壓縮檔案,進一步降低使用成本。

擴充多樣的讀寫模式,比如覆寫寫模式和追加寫模式。

面對現實場景下的cpu性能導緻的資料導入導出瓶頸,未來oss将會采取一些方案來優化cpu,提高資料的導入和導出速度。

未來會做同一個外表放在同一個目錄,使用oss檔案字首進行比對,使檔案命名更加友善。

greenplum已經支援的其他特性

讓資料從PostgreSQL流動到Greenplum

使用greenplum上的oss插件的方案具有很多優勢。

1.使用oss

oss的使用成本比較低,并且可以跨各資料庫産品進行支援,可以跨可用區進行資料同步。對于冷資料轉存到oss,依然可以當做表通路,隻不過性能表現略微降低。

2.并行導入性能高于正常資料導入導出方式

充分利用每個資料節點的cpu、記憶體、網絡等硬體資源,舉個例子對于650g的資料,大約20億行文本資料需要導入到32個segment的greenplum叢集隻需要大約35分鐘。

3.各資料産品間靈活的交換資料

4.pgsql2pgsql

可以支援不落地資料遷移,pg、ppas大于9.4的版本可以支援基于邏輯複制的增量遷移。

5.mysql2pgsql

可以支援不落地資料遷移,支援多表并發,支援基于條件的增量。

6.工具現在已開源到github

<a href="https://github.com/aliyun/rds_dbsync">https://github.com/aliyun/rds_dbsync</a>