greenplum數據庫引擎探究

greenplum數據庫引擎探究


Greenplum做爲新一代的數據庫引擎,有着良好的發展與應用前景。強大的工作效率,低成本的硬件平臺對數據倉庫與商業智能建設有很大的吸引力。要清楚的瞭解其特點最好從架構着手。

架構分析 

Greenplum的高性能得益於其良好的體系結構。Greenplum的架構採用了MPP(大規模並行處理)。在 MPP 系統中,每個 SMP 節點也可以運行自己的操作系統、數據庫等。換言之,每個節點內的 CPU 不能訪問另一個節點的內存。節點之間的信息交互是通過節點互聯網絡實現的,這個過程一般稱爲數據重分配 (Data Redistribution) 。與傳統的SMP架構明顯不同,通常情況下,MPP系統因爲要在不同處理單元之間傳送信息,所以它的效率要比SMP要差一點,但是這也不是絕對的,因爲MPP系統不共享資源,因此對它而言,資源比SMP要多,當需要處理的事務達到一定規模時,MPP的效率要比SMP好。這就是看通信時間佔用計算時間的比例而定,如果通信時間比較多,那MPP系統就不佔優勢了,相反,如果通信時間比較少,那MPP系統可以充分發揮資源的優勢,達到高效率。當前使用的OTLP程序中,用戶訪問一箇中心數據庫,如果採用SMP系統結構,它的效率要比採用MPP結構要快得多。而MPP系統在決策支持和數據挖掘方面顯示了優勢,可以這樣說,如果操作相互之間沒有什麼關係,處理單元之間需要進行的通信比較少,那採用MPP系統就要好,相反就不合適了。

Shared nothing架構 

常見的OLTP數據庫系統常常採用shared everything架構來做集羣,例如oracle RAC架構,數據存儲共享,節點間內存可以相互訪問。

                                       Oracle RAC架構

Greenplum是一種基於postgresql(開源數據庫)的分佈式數據庫。其採用shared nothing架構(MPP),主機,操作系統,內存,存儲都是自我控制的,不存在共享。主要由master host,segment host,interconnect三大部分組成。

                                              Greenplum架構圖

瞭解完Greenplum的架構後,對其工作流程也就相對簡單了。因greenplum採用了MPP架構,其主要的優點是大規模的並行處理能力,應該把精力主要放在大規模存儲與並行處理兩個方面。

大規模存儲 

Greenplum數據庫通過將數據分佈到多個節點上來實現規模數據的存儲。數據庫的瓶頸經常發生在I/O方面,數據庫的諸多性能問題最終總能歸罪到I/O身上,久而久之,IO瓶頸成爲了數據庫性能的永恆的話題。

Greenplum採用分而治之的辦法,將數據規律的分佈到節點上,充分利用segment主機的IO能力,以此讓系統達到最大的IO能力(主要是帶寬)。

在greenplum中每個表都是分佈在所有節點上的。Master host首先通過對錶的某個或多個列進行hash運算,然後根據hash結果將表的數據分佈到segment host中。整個過程中master host不存放任何用戶數據,只是對客戶端進行訪問控制和存儲表分佈邏輯的元數據。

並行處理 

Greenplum的並行處理主要體現在外部表並行裝載,並行備份恢復與並行查詢處理三個方面。

數據倉庫的主要精力一般集中在數據的裝載和查詢,數據的並行裝載主要是在採用外部表或者web表方式,通常情況下通過gpfdist來實現。

                                                  Gpfidist架構

Gpfdist程序能夠以370MB/s裝載text格式的文件和200MB/s裝載CSV格式文件,ETL帶寬爲1GB的情況下,我們可以運行3個gpfdist程序裝載text文件,或者運行5個gpfdist程序裝載CSV格式文件。例如圖例中採用了2個gpfdist程序進行數據裝載。可以根據實際的環境通過配置postgresql.conf參數文件來優化裝載性能。

查詢性能的強弱往往由查詢優化器的水平來決定,greenplum主節點負責解析SQL與生成執行計劃。Greenplum的執行計劃生成同樣採用基於成本的方式,基於數據庫是由諸多segment實例組成,在選擇執行計劃時主節點還要綜合考慮節點間傳送數據的代價。

工作原理:

在主節點上存在query dispatcher (QD)進程,該進程前期負責查詢計劃的創建和調度,segment instance返回結果後,該進程再進行聚合與向用戶展示;segment host存在query executor (QE)進程,該進程負責其它節點相互通信與執行QD調度的執行計劃。

Greenplum最爲一個嚴格的數據庫系統,同樣支持線性擴展,高可用性架構,數據與主機的容錯機制,還有數據的分區與壓縮功能。

想要充分的發揮出greenplum的性能,還要對greenplum的運行機制有更加深入的瞭解。<歡迎大家一起討論>

發佈了16 篇原創文章 · 獲贊 11 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章