greenplum數據庫引擎探究

作者: 大肚熊  來源: 博客園  發布時間: 2010-10-14 07:14  閱讀: 2005 次  推薦: 0   原文鏈接   [收藏]  
摘要: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的運行機制有更加深入的了解。<歡迎大家一起討論>

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()