阿里巴巴亮相 幾天前 已決定發布源代碼 您的分佈式數據庫管理系統 “極地數據庫” 基於PostgreSQL,源碼開放 根據 Apache 2.0 許可證。
對於那些不了解PolarDB的人來說,你應該知道 這是一個關係數據庫 基於阿里巴巴開發的雲 擴展 PostgreSQL 的功能 用於在整個全局數據庫的上下文中保持完整性的分佈式數據存儲,並支持 ACID 事務,分佈在不同的集群節點上。
POLARDB也是 支持SQL查詢的分佈式處理,提供容錯和冗餘數據存儲,以在一個或多個節點發生故障後補充信息。 如果需要擴展存儲,只需向集群添加新節點即可。
極地數據庫 由兩部分組成: PostgreSQL 的擴展和一組補丁。 這些補丁擴展了 PostgreSQL 核心的功能,擴展包括 PostgreSQL 單獨實現的組件,例如分佈式事務管理機制、全局服務、分佈式 SQL 查詢處理器、附加元數據、管理集群的工具、實現集群、並簡化現有系統向其的遷移。
補丁添加分佈式版本的多版本並發控制機制 (MVCC) 到 PostgreSQL 核心以實現不同的隔離級別。 PolarDB的大部分功能已轉移到擴展中,減少了對PostgreSQL的依賴,並簡化了基於PolarDB的解決方案的升級和部署(簡化了向新PostgreSQL版本的過渡並保持與PostgreSQL的完全兼容)。
有三個基本組成部分 在集群中: 數據庫節點(DN)、集群管理器(CM)和事務管理服務(TM), 此外,還可能涉及代理負載平衡器。 每個組件都是一個單獨的進程,可以在不同的物理服務器上運行。 數據庫節點為客戶端 SQL 查詢提供服務,同時還充當其他數據庫節點參與的分佈式查詢執行的協調器。
集群管理員監控各個數據庫節點的狀態, 存儲集群配置並提供管理、備份、負載平衡、升級、啟動和停止節點的工具。 事務管理服務負責維護整個集群的整體完整性。
PolarDB基於Shared-nothing分佈式計算架構,數據在存儲時分佈到不同的節點上,所有節點不使用公共存儲,每個節點負責與其鏈接的那條數據並執行相關的查詢數據。
每個表都通過主鍵哈希進行分片。 如果請求涉及位於不同節點的數據,分佈式事務執行引擎和事務協調器將連接起來,以確保原子性、一致性、隔離性和可靠性(ACID)。
為了確保容錯性,每個段都被複製到至少三個節點。 為了節省資源,全量數據只包含兩個副本,其中一個僅限於存儲WAL(write-after log)。 兩個全副本節點中的一個被選為領導者並參與請求處理,而第二個節點作為正在考慮的數據段的備用節點,第三個節點參與主節點的選擇並可用於恢復具有完整副本的兩個節點發生故障時的信息。
集群節點之間的數據複製由 Paxos 算法編排,這確保了在具有潛在不可信節點的網絡中一致的共識決策。 需要說明的是,PolarDB DBMS計劃以三個版本發布全部功能。
最後,如果您有興趣了解更多信息,可以諮詢 以下鏈接中的詳細信息。