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