1 整體架構
Sequoia DB巨杉數據庫作爲分佈式數據庫,由數據庫存儲引擎與數據庫實例兩大模塊組成。
其中,數據庫存儲引擎模塊是數據存儲的核心,負責提供整個數據庫的讀寫服務、數據的高可用與容災、ACID與發你不是事務等全部核心數據服務能力。
數據庫實例模塊則作爲協議與語法的適配層,用戶可根據需要創建包括MySQL、PostgreSQL與Spark SQL在內的結構化數據實例;支持JSON語法的MongoDB實例;以及完全兼容S3與Posix文件系統的對象存儲實例。
2 數據庫實例
Sequoia DB巨杉數據庫支持多種類型的數據庫實例。至當前版本爲止,Sequoia DB巨杉數據庫支持6中不同的實例類型。
實例類型 |
實例分類 |
描述 |
MySQL |
結構化數據 |
適用於純聯機交易場景,與MySQL保持100%兼容 |
PostgreSQL |
結構化數據 |
適用於聯機交易場景與中小量數據的分析類場景,與PostgreSQL基本保持兼容 |
SparkSQL |
結構化數據 |
適用於海量數據的統計分析類場景,與Spark SQL保持100%兼容 |
JSON API |
半結構化數據 |
適用於基於JSON數據類型的聯機業務場景,與MongoDB保持部分兼容 |
S3對象存儲 |
非結構化數據 |
適用於對象存儲類的聯機業務與歸檔類場景,與S3保持100%兼容 |
Posix文件系統 |
非結構話數據 |
適用於使用傳統文件系統向分佈式環境遷移的業務場景,與標準Ext3/XFS等基本保持兼容 |
3 數據庫存儲引擎
Sequoia DB巨杉數據庫存儲引擎採用分佈式架構,集羣中的每個節點爲一個獨立進程,節點之間採用TCP/IP協議進行通訊。
同一個操作系統可以部署多個節點,節點之間採用不同的端口進行區分。
Sequoia DB巨杉數據庫的節點分爲三種不同的角色:協調節點、編目節點與數據節點。
3.1 協調節點
協調節點不存儲任何用戶數據,作爲外部訪問的接入與請求分發節點,協調節點將用戶請求分發至相應的數據節點,最終合併數據節點的結果應答對外進行響應。
3.2 編目節點
編目節點主要存儲系統的節點信息、用戶信息、分區信息以及對象定義等元數據。在特定操作下,協調節點與數據節點均會向編目節點請求元數據信息,以感知數據的分佈規律和校驗請求的正確性。
3.3 數據節點
數據節點爲用戶數據的物理存儲節點,海量數據同分片切分的方式被分散至不同的數據節點。在關係型與JSON數據庫實例中,每一條記錄會被完整地存放在其中一個或多個數據節點中;而在對象存儲實例中,每一個文件將會一句數據頁大小被拆分成多個數據塊,並被分散至不同的數據節點進行存放。
4 核心概念
4.1 複製組
由於採用PC服務器內置物理盤,當前大部分分佈式數據庫無法在硬件設備出現故障時保證單一設備中數據的可靠性與持久性。因此Sequoia DB巨杉數據庫採用數據多副本存放的機制,將編目節點與數據節點所存放的數據以節點爲單位進行復制,多個擁有相同數據拷貝的節點被稱爲數據複製組。一般來說,複製組、數據分片和數據分區均代表同樣的含義。
4.2 副本
每個複製組內的多個節點被稱爲數據副本,在Sequoia DB巨杉數據庫中每個複製組最多支持7個數據副本。
由於複製組內的邏輯節點互爲備份,配置了多個數據副本的Sequoia DB巨杉數據庫原生提供高可用與容災機制。用戶可以通過添加複製組或分區的數量實現整個存儲引擎集羣的水平彈性擴展,也可以通過添加複製組內副本的數量實現更高的安全性以及提升讀寫分離的併發性。
4.3 一致性
複製組內部的多個數據副本之間可以同時使用強一致或最終一致的數據同步方式,用戶可以基於節點或表(集合)級別進行相應的配置。整個集羣內部數據的ACID與分佈式事務完全由數據庫存儲引擎支持。
引用:巨杉數據庫官方文檔