- SequoiaDB分布式數據庫權威指南
- 許建輝 (加)陳元熹
- 1338字
- 2022-05-06 18:40:01
1.2.3 SequoiaDB的整體架構
SequoiaDB分布式數據庫由數據庫存儲引擎與數據庫實例兩大模塊構成,如圖1-5所示。其中,數據庫存儲引擎模塊是數據存儲的核心,負責提供整個數據庫的讀/寫服務、數據的高可用性與容災機制、ACID與分布式事務等全部核心數據服務能力;數據庫實例模塊作為協議與語法的適配層,可供用戶根據需要創建MySQL、MariaDB、PostgreSQL和SparkSQL的結構化數據實例,并且完全兼容S3對象存儲實例。

圖1-5 SequoiaDB架構圖
用戶可以通過創建不同類型的數據庫實例,從傳統數據庫幾乎無縫地遷移到SequoiaDB,這樣可大幅度降低應用程序開發者的學習成本。
1.數據庫實例
SequoiaDB同時支持結構化和非結構化的數據庫實例。截至本書出版之際,SequoiaDB共支持6種不同的實例類型,如表1-1所示。
表1-1 SequoiaDB支持的實例類型

(續表)

2.數據庫存儲引擎
SequoiaDB存儲引擎采用分布式架構。集群中的每個節點為一個獨立進程,節點之間采用TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協議/網際協議)進行通信。在同一個操作系統上可以部署多個節點,節點之間采用不同的端口號進行區分。
SequoiaDB的節點分為3種不同的角色,分別是協調節點、編目節點和數據節點,如圖1-6所示。

圖1-6 SequoiaDB節點架構圖
● 協調節點:協調節點不存儲任何用戶數據。作為外部訪問的接入與請求分發節點,協調節點將用戶請求分發至相應的數據節點,最終匯總數據節點的應答結果,以對外做出響應。
● 數據節點:數據節點為用戶數據的物理存儲節點。海量數據通過分片切分的方式被分散至不同的數據節點。在關系型數據庫實例與JSON數據庫實例中,每一條記錄會被完整地存放在其中一個或多個數據節點中;而在對象存儲實例中,每一個文件將會依據數據頁大小被拆分成多個數據塊,并被分散至不同的數據節點進行存放。
● 編目節點:編目節點主要存儲系統的節點信息、用戶信息、分區信息及對象定義等元數據。在特定操作下,協調節點與數據節點均會向編目節點請求元數據信息,以感知數據的分布規律和校驗請求的正確性。
3.核心概念
在SequoiaDB中,數據節點歸屬于數據復制組(又稱分區組)。數據復制組支持1~7個節點,具備高可靠和高可用的能力,該組內的節點互為副本,采用一主多從的形式。通過增刪復制組內的節點,可以實現數據的垂直擴容、減容。復制組內的節點之間采用最終一致性來同步數據,不同的復制組保存的數據無重復。SequoiaDB就是通過以下三大核心的技術設計來確保整體數據不會損壞或丟失的。
● 復制組:由于采用PC服務器內置物理盤,在硬件設備發生故障時,當前大部分分布式數據庫無法保證單一設備中數據的可靠性與持久性;因此,SequoiaDB采用數據多副本存放的機制,以節點為單位,對編目節點與數據節點所存放的數據進行復制。多個擁有相同數據副本的節點構成一個復制組。一般來說,復制組、數據分片和數據分區均代表同樣的含義。
● 副本:復制組內的節點被稱為數據副本。在SequoiaDB中復制組最多支持7個數據副本。復制組內的邏輯節點互為備份,即配置了多個數據副本,因此SequoiaDB原生提供高可用性與容災機制。用戶可以通過添加復制組(分區)來實現整個存儲引擎集群的水平彈性擴展,也可以通過增加復制組內的副本數量來實現更高的安全性,以及提升讀/寫分離的并發性能。
● 一致性:復制組內部的多個數據副本之間,可以同時使用強一致和最終一致的數據同步方式,用戶可以基于節點或表(集合)級別進行相應的配置。整個集群內部數據的ACID與分布式事務,完全由數據庫存儲引擎支持。