雲計算

新型數據庫TIDB簡介

1.TiDB 整體架構
TiDB 是 PingCAP 公司設計的開源分佈式 HTAP (Hybrid Transactional and Analytical Processing) 數據庫,結合了傳統的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持無限的水平擴展,具備強一致性和高可用性。TiDB 的目標是為 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 場景提供一站式的解決方案。
要深入瞭解 TiDB 的水平擴展和高可用特點,首先需要了解 TiDB 的整體架構。TiDB 集群主要包括三個核心組件:TiDB Server,PD Server 和 TiKV Server。此外,還有用於解決用戶複雜 OLAP 需求的 TiSpark 組件和簡化雲上部署管理的 TiDB Operator 組件。
image.png

TiDB Server
TiDB Server 負責接收 SQL 請求,處理 SQL 相關的邏輯,並通過 PD 找到存儲計算所需數據的 TiKV 地址,與 TiKV 交互獲取數據,最終返回結果。TiDB Server 是無狀態的,其本身並不存儲數據,只負責計算,可以無限水平擴展,可以通過負載均衡組件(如LVS、HAProxy 或 F5)對外提供統一的接入地址。
PD Server
Placement Driver (簡稱 PD) 是整個集群的管理模塊,其主要工作有三個:一是存儲集群的元信息(某個 Key 存儲在哪個 TiKV 節點);二是對 TiKV 集群進行調度和負載均衡(如數據的遷移、Raft group leader 的遷移等);三是分配全局唯一且遞增的事務 ID。
PD 通過 Raft 協議保證數據的安全性。Raft 的 leader server 負責處理所有操作,其餘的 PD server 僅用於保證高可用。建議部署奇數個 PD 節點。
TiKV Server
TiKV Server 負責存儲數據,從外部看 TiKV 是一個分佈式的提供事務的 Key-Value 存儲引擎。存儲數據的基本單位是 Region,每個 Region 負責存儲一個 Key Range(從 StartKey 到 EndKey 的左閉右開區間)的數據,每個 TiKV 節點會負責多個 Region。TiKV 使用 Raft 協議做複製,保持數據的一致性和容災。副本以 Region 為單位進行管理,不同節點上的多個 Region 構成一個 Raft Group,互為副本。數據在多個 TiKV 之間的負載均衡由 PD 調度,這裡也是以 Region 為單位進行調度。
TiSpark
TiSpark 作為 TiDB 中解決用戶複雜 OLAP 需求的主要組件,將 Spark SQL 直接運行在 TiDB 存儲層上,同時融合 TiKV 分佈式集群的優勢,並融入大數據社區生態。至此,TiDB 可以通過一套系統,同時支持 OLTP 與 OLAP,免除用戶數據同步的煩惱。
TiDB Operator
TiDB Operator 提供在主流雲基礎設施(Kubernetes)上部署管理 TiDB 集群的能力。它結合雲原生社區的容器編排最佳實踐與 TiDB 的專業運維知識,集成一鍵部署、多集群混部、自動運維、故障自愈等能力,極大地降低了用戶使用和管理 TiDB 的門檻與成本。

2. 與 MySQL 兼容性對比
TiDB 支持 MySQL 傳輸協議及其絕大多數的語法。這意味著您現有的 MySQL 連接器和客戶端都可以繼續使用。大多數情況下您現有的應用都可以遷移至 TiDB,無需任何代碼修改。
當前 TiDB 服務器官方支持的版本為 MySQL 5.7。大部分 MySQL 運維工具(如 PHPMyAdmin, Navicat, MySQL Workbench 等),以及備份恢復工具(如 mysqldump, Mydumper/myloader)等都可以直接使用。
不過一些特性由於在分佈式環境下沒法很好的實現,目前暫時不支持或者是表現與 MySQL 有差異。一些 MySQL 語法在 TiDB 中可以解析通過,但是不會做任何後續的處理,例如 Create Table 語句中 Engine,是解析並忽略。
3. 不支持的特性
• 存儲過程與函數
• 觸發器
• 事件
• 自定義函數
• 外鍵約束
• 全文函數與索引
• 空間函數與索引
• 非 utf8/utf8mb4 字符集
• BINARY 之外的排序規則
• 增加主鍵
• 刪除主鍵
• SYS schema
• MySQL 追蹤優化器
• XML 函數
• X Protocol
• Savepoints
• 列級權限
• CREATE TABLE tblName AS SELECT stmt 語法
• CREATE TEMPORARY TABLE 語法
• XA 語法(TiDB 內部使用兩階段提交,但並沒有通過 SQL 接口公開)
• CHECK TABLE 語法
• CHECKSUM TABLE 語法

Leave a Reply

Your email address will not be published. Required fields are marked *