1 Greenplum整體架構資訊
1.1 架構圖示
在以上的架構中可以看出Greenplum主要是由Master和Segment組成的,Master承擔生成查詢計劃並派發彙總執行結果,Segment是執行查詢計劃及資料儲存管理。叢集可以直接載入外部的資料。
官網請檢視:https://greenplum.org/
Greenplum官方文件:https://gp-docs-cn.github.io/docs/common/gpdb-features.html
1.2 Master主機與Segment主機任務
Master主機負責 |
Segment主機負責 |
1. 建立與客戶端的會話連線和管理 |
1. 業務資料的儲存和存取 |
2.sql的解析並形成分散式的執行計劃 |
2.執行由master分發的sql語句 |
3.將生成好的執行計劃分 |
3.對於master來說,每個 |
4.收集Segment的執行結果 |
4.每一臺機器上可以配置 |
5.master不儲存業務資料, 只儲存資料字典 |
5.由於每個Segment都是對 |
6.master主機可以一主一備, |
6.Segment分primary 和mirror兩種, |
7.為了提高效能,master最好 |
|
1.3 資料庫分佈鍵分佈資料策略
由於greenplum資料庫是個分散式資料庫,資料分佈在每一個segment節點上,其中資料的分佈策略有兩種分別是hash分佈於隨機分佈。
1.3.1 HASH策略
Hash分佈是利用Distributed by (filed1,filed2....) 做為資料分佈的條件,計算hash值,並通過hash值路由到制定的segment上,如果不指定分佈鍵,預設的是獲取第一個欄位作為分佈鍵。在欄位作為分佈鍵時,該欄位的值儘量是唯一的,這樣才能分佈的均勻,效率會更高,否則會降低資料庫的想能。
1.3.2 隨機分佈
隨機分佈也叫平均分佈。資料會隨機的落在每一個segment節點上,不管資料內容是什麼格式都會落到segment上,在SQL查詢資料,資料會重新分佈,效能會比較差,隨機分佈的用法為Distributed randomly;
1.4 master主節點獲取segment節點上的資料順序
Master在執行sql語句時由於資料切分放在每個segment上,master獲取結果的順序是segment提交的順序,segment提交到master的順序是隨機的,就會導致一樣的資料每次的查詢結果順序不一致,這也是與其他的資料不一樣的地方。