第一節 簡介
Postgres-XL是一款開源的PG集羣軟件,XL表明eXtensible Lattice,便可擴展的PG「格子」之意,如下簡稱PGXL。官方稱其既適合寫操做壓力較大的OLTP應用,又適合讀操做爲主的大數據應用。它的前身是Postgres-XC(簡稱PGXC),PGXC是在PG的基礎上加入了集羣功能,主要適用於OLTP應用;PGXL是在PGXC的基礎上的升級產品,加入了一些適用於OLAP應用的特性,如 Massively Parallel Processing (MPP) 特性。通俗的說PGXL的代碼是包含PG代碼的,使用PGXL安裝PG集羣並不須要單獨安裝PG。這樣帶來的一個問題是沒法隨意選擇任意版本的PG,好在PGXL跟進PG較及時,目前最新版本Postgres-XL 9.5 R1.3,基於PG 9.5。
三者的關係大體以下圖(來源網絡,出處不詳)
node
整體感受PGXL這款工具仍是至關成熟的,有官方網站http://www.postgres-xl.org/,文檔也比較完善,也有商業公司2ndQuadrant在支持。下圖是PGXL和PG在OLAP方面的性能對比,來自2ndQuadrant官網:
服務器
第二節 集羣架構
網絡
上面這張圖就是PGXL集羣的架構圖,來自官方網站。全部節點中分爲三種角色:GTM(全局事務管理器)、Coordinator(協調器)和Datanode(數據節點)。須要注意一點是圖中的Load Balance組件並不屬於PGXL集羣自己,須要其餘負載均衡工具實現。
GTM:
全局事務控制節點,保證集羣數據的一致性,與Coordinator節點和Datanode節點不斷通訊,是整個集羣的核心節點,只存在一個,能夠存在一個GTM Standby節點,對GTM實時備份。GTM一旦故障,整個集羣馬上沒法訪問,此時能夠切換到GTM Standby節點上。若是部署了GTM Standby節點,就應該同時部署GTM Proxy,通常和Coordinator、Datanode部署在同一臺服務器上。GTM Proxy的做用代理Coordinator和Datanode對GTM的訪問,起到減輕GTM負載的做用,另一個重要的做用是幫助完成GTM的故障切換,當GTM節點發生故障後,GTM Standby成爲新的GTM,此時Coordinator和Datanode節點並不須要從新指定GTM地址,只須要GTM Proxy從新鏈接到新的GTM地址便可。
Coordinator:
接收數據訪問請求的節點,本質上是由PG後臺進程組成。接收的一條查詢後,Coordinator節點執行查詢計劃,而後會根據查詢數據涉及的數據節點將查詢分發給相關的數據節點。寫入數據時,也會根據不一樣的數據分佈策略將數據寫入相關的節點。能夠說Coordinator節點上保存着集羣的全局數據位置。Coordinator節點能夠任意擴展,各個節點之間除了訪問地址不一樣之外是徹底對等的,經過一個節點更新的數據能夠在另外一個節點上馬上看到。每一個Coordinator節點能夠配置一個對應的standby節點,避免單點故障。
Datanode:
實際存取數據的節點,接收Coordinator的請求並執行SQL語句存取數據,節點之間也會互相通訊。通常的,一個節點上的數據並非全局的,數據節點不直接對外提供數據訪問。一個表的數據在數據節點上的分佈存在兩種模式:複製模式和分片模式,複製模式下,一個表的數據在指定的節點上存在多個副本;分片模式下,一個表的數據按照必定的規則分佈在多個數據節點上,這些節點共同保存一份完整的數據。這兩種模式的選擇是在建立表的時候執行CREATE TABLE語句指定的,具體語法以下:架構
CREATE TABLE table_name(...) DISTRIBUTE BY HASH(col)|MODULO(col)|ROUNDROBIN|REPLICATION TO NODE(nodename1,nodename2...)
能夠看到,若是DISTRIBUTE BY 後面是REPLICATION,則是複製模式,其他則是分片模式,HASH指的是按照指定列的哈希值分佈數據,MODULO指的是按照指定列的取摩運算分佈數據,ROUNDROBIN指的是按照輪詢的方式分佈數據。TO NODE指定了數據分佈的節點範圍,若是沒有指定則默認全部數據節點參與數據分佈。若是沒有指定分佈模式,即便用普通的CREATE TABLE語句,PGXL會默認採用分片模式將數據分佈到全部數據節點。負載均衡
這篇就先寫到這裏,下一篇寫一下安裝與配置。ide
參考資料:
http://www.postgres-xl.org/
https://2ndquadrant.com/en/re...
http://www.slideshare.net/mas...工具