阿里巴巴已經開放了PolarDB的程式碼,PolarDB是一個基於PostgreSQL的分散式DBMS。

中國最大的IT公司之一阿里巴巴已經開放了基於PostgreSQL的分散式DBMS PolarDB的原始碼。 PolarDB 透過分散式資料儲存工具擴展了 PostgreSQL 的功能,具有完整性,並支援分佈在不同叢集節點的整個全域資料庫上下文中的 ACID 事務。 PolarDB還支援分散式SQL查詢處理、容錯和冗餘資料存儲,以在一個或多個節點發生故障後恢復資訊。 如果需要擴展存儲,只需向叢集新增節點即可。 該程式碼在 Apache 2.0 許可證下開放。

PolarDB 由兩個元件組成 - 擴充功能和一組 PostgreSQL 補丁。 修補程式擴展了PostgreSQL 核心的功能,擴充功能包括與PostgreSQL 分開實現的元件,例如分散式事務管理機制、全域服務、分散式SQL 查詢處理器、附加元資料、用於管理叢集、部署叢集和簡化叢集的工具.現有系統向其遷移。

這些修補程式為 PostgreSQL 核心添加了分散式版本的機制,用於使用不同隔離等級的多版本(MVCC,多版本並發控制)來控制對資料的平行存取。 PolarDB的大部分功能都包含在擴充功能中,減少了對PostgreSQL的依賴,簡化了基於PolarDB的解決方案的更新和實施(簡化了向新版本PostgreSQL的過渡並保持與PostgreSQL的完全相容)。 為了管理集群,使用 pgxc_ctl 工具包,該工具包基於 PostgreSQL-XC 和 PostgreSQL-XL 中的類似實用程式。

叢集由三個基本元件組成:資料庫節點(DN)、叢集管理器(CM)和事務管理服務(TM)。 此外,也可以使用代理負載平衡器。 每個元件都是一個單獨的進程,可以在不同的伺服器上運行。 資料庫節點為來自客戶端的 SQL 查詢提供服務,同時在其他資料庫節點的參與下充當分散式查詢執行的協調器。 叢集管理器監視每個資料庫節點的狀態,儲存叢集配置,並提供管理、備份、負載平衡、更新、啟動和停止節點的工具。 事務管理服務負責維護整個叢集的整體完整性。

阿里巴巴已經開放了PolarDB的程式碼,PolarDB是一個基於PostgreSQL的分散式DBMS。

PolarDB基於Shared-nothing分散式運算架構,資料分散式儲存在不同節點上,所有節點不使用公共存儲,每個節點負責與其關聯的部分資料並執行相關查詢到資料。 每個表都使用基於主鍵的雜湊分為多個部分(分片)。 如果請求跨越位於不同節點的數據,則啟動分散式事務執行機制和事務協調器以確保原子性、一致性、隔離性和可靠性(ACID)。

為了確保容錯性,每個段落都複製到至少三個節點。 為了節省資源,完整資料僅包含兩個副本,其中一個僅限於儲存回寫日誌(WAL)。 具有完整副本的兩個節點之一被選舉為領導者並參與處理請求。 第二個節點充當相關資料段的備用節點,第三個節點參與主節點的選擇,並可用於在兩個具有完整副本的節點發生故障時恢復資訊。 叢集節點之間的資料複製是使用 Paxos 演算法組織的,這確保了在具有潛在不可靠節點的網路中一致的共識定義。

值得注意的是,PolarDB DBMS的全部功能計畫透過三個版本發布:第一個版本將發布用於複製、高可用性和叢集管理的工具。 第二個版本將採用分散式事務執行系統,支援跨節點 ACID 和分散式 SQL 執行。 第三個版本將包括 PostgreSQL 插件和跨節點靈活資料分發的工具,包括自適應放置段以實現最佳效能以及透過添加新節點來擴展叢集的能力。

來源: opennet.ru

添加評論