GreenPlumn 實際上是由一組 PostgreSQL 數據庫組合而成的強大數據倉庫, GreenPlumn 基於PostgreSQL 8.2.14 開發, 並且在多數據情況下和 PostgreSQL 非常相似,以至於用戶可以像是在使用PostgreSQL 一樣來使用GreenPlumn。
2 GreenPlumn 體系結構
GreenPlumn可以將數據按一定算法全部分發到所有 segment Host上,因而能夠處理大量的數據請求。GreenPlumn的系統結構實際上是多臺 PostgreSQL 數據庫服務器組成的矩陣,GreenPlumn分兩部分, Master 主機和 Segments 主機,master主機是GreenPlumn的入口,客戶端,終端用戶連接Master來執行 sql。當用戶在 Master 節點上執行查詢SQL時,MASTER會將 SQL,以及SQL PLAN分發到所有
segments 節點, segments 處理好後,將數據發回 Master 節點, 如下圖。
--2.1 GreenPlumn 的 Master 節點
Master 節點是訪問 GreenPlumn的入口, 用於處理客戶端的連接,和 SQL命令請求,用戶可以使用psql,或者應用程序接口來連接 Master, 例如 JDBC,ODBC接口。
Master 節點僅存儲 GreenPlumn的系統數據,而不存儲用戶數據,相反,用戶數據存在所有的Segments 節點上,Master 負責以下工作:處理客戶端的連接請求,處理客戶端發出的SQL命令,將SQL命令分發到所有Segments 節點,協調所有節點處理的結果數據,並將這些數據展現給終端用戶。
--2.2 GreenPlumn 的 Segment 節點
在GreenPlumn中, Segments存諸用戶的數據,並且負責處理Master 分發出的SQL請求任務,用戶定義的表和索引按一定算法分發到所有的 segments節點,每個節點含有獨立的一部分數據,用戶不需要直接和 segments 交互,相反,只需通過和 Master 節點交互。 一般地,建議一個CPU上跑一個活躍的 segments。
3 GreenPlumn的鏡像備份功能
--3.1 關於 Segments節點的鏡像
搭建GreenPlumn時,爲了保證系統的高可用性,可以給每個 Segment 搭建 Mirror Segment, 當Primary Segment 不可用時, Mirror Segment可以fail over 接替工作。Mirror Segment(鏡像節點)通常和Primary Segment 分佈在不同的主機上。
--3.2 關於 Master 節點的鏡像
搭建GreenPlumn時,也可以配置一個 Master 的鏡像,稱作 Master Standby, Standby Master通過WAL日誌複製來同步數據,如果 Master 不可用,日誌複製進程則會中斷,並且 Standby Master可以接替工作,同時,最近一次複製過來的WAL日誌狀態會變化來標記最近一次事務提交的時刻。
由於 Master 不存儲用戶數據,所以Master Standby 只需要同步 Master 系統表數據,這些數據不會非常頻繁地改變,當 Master 節點數據變化時,這些變化會自動地應用到 Master Standby節點上。從而使得 Master Standby 數據 始終和 Master 保持一致。