ClustrixDB使用無共享架構。集羣中的每個節點可以執行任何讀取或寫入操作。如果要擴充數據庫容量,只需添加更多節點即可。
ClustrixDB的主要組件有助於實現性能和規模:
1)全局事務管理器(GTM),協調給定事務的處理。
2)Rebalancer,它在集羣中自動分配數據。
3) Sierra數據庫引擎,確定最佳查詢執行計劃,然後在分佈式數據節點上執行該計劃。
下圖顯示了ClustrixDB如何處理典型的查詢。
全局事務管理器
通常通過橫跨集羣上分佈式連接的負載均衡器,選擇集羣中的一個節點作爲全局事務管理器(GTM)來開始處理ClustrixDB中的查詢。然後在返回結果給調用者之前,GTM通過控制執行查詢的每個一步、確認每一步成功完成、收集和確定執行結果等來全面管理事務。ClustrixDB將查詢編譯爲可執行查詢片段,GTM將其分發到適當的節點以供執行。當中間結果可用時,它們將返回給GTM。一旦所有查詢片段都已成功執行,GTM就完成結果並將它們返回給客戶端,應用程序或用戶。
Rebalancer
如果ClustrixDB的數據以前未在整個集羣中分佈,則不可能進行分佈式處理。爲了實現這一點,ClustrixDB使用了由其Rebalancer管理的專利數據分配方法。Rebalancer在集羣中編排數據,以確保讀取和寫入始終平衡。它還保證在整個集羣中維護數據的多個副本(副本)以確保容錯。如果節點由於意外故障而丟失,則不會丟失任何數據。Rebalancer將自動確保創建和維護冗餘副本。它還通過在添加新節點時將數據重新平衡到新節點並且在數據庫保持在線的同時將數據從標記爲要移除的節點移開而適應集羣集大小的改變。Rebalancer使用一致的散列算法將每個錶行分配給該表的給定“切片”,並提供所有切片到每個節點的映射。這允許ClustrixDB快速輕鬆地確定相關數據的位置。Rebalancer在後臺連續運行,不會影響正在進行的數據處理。
雖然數據被切片並分發到集羣的許多節點,但是數據庫表將始終作爲應用程序的單個邏輯單元出現。Clustrix使用簡單的SQL接口,並且不需要特殊的應用程序編程來訪問分佈在整個ClustrixDB集羣中的數據。
如果ClustrixDB的數據以前未在整個集羣中分佈,則不可能進行分佈式處理。爲了實現這一點,ClustrixDB使用由其Rebalancer管理的專利數據分配方法。Rebalancer在集羣中安排數據,以確保讀取和寫入始終平衡。它還保證在整個集羣中維護數據的多個副本(副本)以確保容錯。如果節點由於意外故障而丟失,則不會丟失任何數據。重新平衡器將自動確保創建和維護冗餘副本。它還通過在添加新節點時將數據重新平衡到新節點並且在數據庫保持在線的同時將數據從標記爲要移除的節點移開而適應羣集的改變大小。
Rebalancer使用一致的散列算法將每個錶行分配給該表的給定“切片”,並提供所有切片到每個節點的映射。這允許ClustrixDB快速輕鬆地確定相關數據的位置。再平衡器在後臺連續運行,不會影響正在進行的生產加工。
下面這張圖片展示了Rebalancer如何橫跨各個節點的的'切片'和表複製。請注意表的複製是如何分散在整個集羣中的,以確保容錯。在不同節點上的每個表切片至少是按時及複製的。
您可以看到在節點故障的情況下如何保護數據。如果節點故障,ClustrixDB將立即開始使用來自其他節點的故障節點數據的副本。然後Rebalancer立即開始通過將新副本複製到不同的節點上來重新定位該數據節點。
欲知詳情請移步ClustrixDB’s Rebalancer。
Sierra數據庫引擎
Sierra是處理查詢計劃和執行的ClustrixDB的SQL引擎。它專門設計用於在分佈式、無共享(shared nothing)環境中工作,同時儘可能高效地訪問分佈式數據。Sierra數據庫引擎由兩部分組成:1)Sierra Parallel Planner 確定SQL語句的最佳執行計劃。
2)Sierra分佈式執行引擎 根據計劃執行查詢片段,並提供中間結果。
Sierra Parallel Planner是一種基於成本的優化器,它使用概率統計,數據量,索引和查詢運算符的開銷來確定最有效的查詢計劃。 ClustrixDB Planner 的一個關鍵區別功能是它確定此計劃,同時考慮數據在集羣中的分佈。
有關演示此查詢分段如何工作的其他示例,請參閱ClustrixDB Sierra Database Engine.
Sierra分佈式執行引擎
一旦Sierra Planner確定了查詢的最佳計劃,它就被編譯成機器可執行的查詢片段。然後,這些編譯的查詢片段在集羣中的不同節點上執行,提供了效率和增加的執行併發性。一旦每個節點上的執行完成,結果就返回到GTM節點,GTM節點然後組合部分結果並將最終結果集返回給用戶。ClustrixDB如何能夠獨特地利用其分佈式執行以實現更快的結果的一個示例是分佈式聚合處理。除了首先對每個節點的分佈式數據上的數據計算部分聚合(SUM,MAX,MIN,AVG等)之外,計算類似於其它查詢被分段和分佈。中間結果然後由GTM合併以產生最終結果。
最後再讓我們來看下在ClustrixDB中的分佈查詢。