Greenplum資料庫系統架構

brucexia發表於2023-05-19

Greenplum 是一個純軟體的MPP 資料庫伺服器,其系統架構專門用於管理大規模分析型資料倉儲或商業智慧工作負載。從技術上講,MPP 無共享架構是指具有多個節點的系統,每個節點都有自己的記憶體、作業系統和磁碟,它們協作執行一項操作。Greenplum 使用這種高效能系統架構分配PB 級別的資料,並行使用系統的所有資源來處理請求。

Greenplum PostgreSQL

Greenplum 6 版本基於PostgreSQL 9.4 開源資料庫,本質上是若干面向磁碟的PostgreSQL 資料庫例項,共同作為一個內聚的資料庫管理系統(DBMS )。大多數情況下,Greenplum SQL 支援、配置選項和終端使用者功能方面與PostgreSQL 非常相似。使用者操作Greenplum 資料庫就像與常規PostgreSQL 互動一樣。

Greenplum PostgreSQL 的主要區別為:

l   除了支援Postgres 最佳化器外,還有自己的GPORCA 最佳化器。

l   Greenplum 資料庫可以使用Append-Optimized 儲存格式。

l   Greenplum 支援列儲存,即邏輯上組織為表的資料,物理上以面向列的格式儲存資料。列儲存只能與Append-Optimized 表一起使用。

Greenplum PostgreSQL 的內部結構進行了修改和補充,以支援資料庫的並行結構。例如,對系統目錄、最佳化器、查詢執行器和事務管理器元件做過修改和增強,能夠在所有並行PostgreSQL 資料庫例項上同時執行查詢。Greenplum 依賴Interconnect (內部互連)在網路層支援不同PostgreSQL 例項之間的通訊,使得系統作為單一邏輯資料庫執行。

較之標準PostgreSQL Greenplum 還增加了並行資料裝載(外部表)、資源管理、查詢最佳化和儲存增強功能。Greenplum 開發的許多功能和最佳化也進入了PostgreSQL 社群,促進了PostgreSQL 的發展。例如,表分割槽是Greenplum 首先開發的一個特性,現在已成為標準PostgreSQL 的一部分。

Greenplum 頂層系統架構如圖3-1 所示。Master Greenplum 資料庫系統的入口,是客戶端連線並提交SQL 語句的資料庫例項。Master 將其工作與系統中其他叫作Segment 的資料庫例項進行協調,這些資料庫例項負責實際儲存和處理使用者資料。每個Master Segment 都是一個PostgreSQL 資料庫例項。

Master

Master Greenplum 的系統入口,它接收客戶端連線和SQL 查詢,並將工作分配給Segment 例項。終端使用者透過Master Greenplum 資料庫互動,就像與典型PostgreSQL 資料庫互動一樣。使用者可以使用諸如psql 之類的客戶端程式或JDBC ODBC libpq 之類的應用程式程式設計介面(API )連線到資料庫。

Master 資料庫例項中儲存全域性系統目錄(Global System Catalog )。全域性系統目錄是一組系統表,其中包含關於Greenplum 本身的後設資料。Master 例項中不包含任何使用者資料,使用者資料僅駐留在Segment 例項中。Master 驗證客戶端連線,處理傳入的SQL 命令,在Segment 之間分配工作負載,協調每個Segment 返回的結果,並將最終結果返給客戶端程式。

Greenplum 資料庫使用寫前日誌(WAL )進行主/ Master 映象。在基於WAL 的日誌記錄中,所有修改都會在應用之前寫入日誌,以確保任何程式內操作的資料完整性。

Greenplum Segment 例項是獨立的PostgreSQL 資料庫,每個資料庫儲存一部分資料並執行一部分查詢處理。當使用者透過Master 連線到資料庫併發出查詢時,將在每個Segment 資料庫中建立程式以處理該查詢的工作。有關查詢過程的更多資訊,參見3.3.3 節。

使用者定義的表及其索引分佈在所有可用的Segment 中,每個Segment 都包含互斥的部分資料(複製表除外,這種表會在每個

Segment

Segment 例項上儲存一份完整的資料複製)。提供服務的資料庫伺服器程式在相應的Segment 例項下執行。

Segment 在稱為段主機的伺服器上執行。一臺段主機通常執行2~8 Segment 例項,具體數量取決於CPU 核、記憶體、磁碟、網路卡和工作負載。所有段主機的配置應該相同,以避免木桶效應。讓Greenplum 獲得最+佳效能的關鍵是將資料和負載均勻分佈到多個能力相同的Segment 上,以便所有Segment 同時處理任務並同時完成其工作。

Interconnect

Interconnect 即內部互連,是Greenplum 資料庫系統架構中的核心元件,互連指的是Segment 在網路間的程式間通訊。Interconnect 使用標準乙太網交換資料,出於效能原因,建議使用萬兆網或更快的系統。

預設情況下,Interconnect 使用帶有流量控制的使用者資料包協議(UDPIFC )進行通訊,透過網路傳送訊息。Greenplum 軟體執行超出UDP 提供的資料包驗證,這意味著其可靠性相當於傳輸控制協議(TCP ),效能和可擴充套件性超過TCP 。如果將Interconnect 改為TCP Greenplum 資料庫的可擴充套件性則限制為1000 Segment 例項,UDPIFC 作為Interconnect 的預設協議不受此限制。

Interconnect 實現了對同一叢集中多個PostgreSQL 例項的高效協同和平行計算,承載了並行查詢計劃生產、查詢分派(QD )、協調節點上查詢執行器(QE )的並行工作、資料分佈、Pipeline 計算、映象複製、健康探測等諸多工。

 

本文節選自《 Greenplum 構建實時資料倉儲實踐》,內容釋出獲得作者和出版社授權。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841117/viewspace-2953199/,如需轉載,請註明出處,否則將追究法律責任。

相關文章