1、簡介
TiDB 是由PingCAP 公司研發設計的開源分佈式 HTAP (Hybrid Transactional and Analytical Processing) 數據庫,它結合瞭傳統的關系型和非關系型數據庫的最佳特性。TiDB 兼容 MySQL,支持無限的水平擴展,具備強一致性和高可用等特性。
並提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案
2、TiDB的組成
TiDB主要包括三個核心組件:TiDB Server,PD Server和TiKV Server。下面簡單給大傢介紹一下。
2.1 TiDB Server
屬於SQL 層,是對外暴露 MySQL 協議的連接 endpoint,主要 負責接受客戶端的連接,執行 SQL 解析和優化,最終生成分佈式執行計劃。TiDB 層本身是無狀態的,可以啟動多個 TiDB 實例,通過負載均衡組件(如 LVS、HAProxy 或 F5)對外提供統一的接入地址,客戶端的連接可以均勻地分攤在多個 TiDB 實例上以達到負載均衡的效果。TiDB Server 本身並不存儲數據,隻負責解析SQL,將實際的數據讀取請求轉發給底層的存儲節點 TiKV(或 TiFlash)
2.2 PD Server(PD)
PD主要負責整個 TiDB 集群的元信息管理模塊。
- 負責存儲每個 TiKV 節點實時的數據分佈情況和集群的整體拓撲結構,提供 TiDB Dashboard 管控界面,並為分佈式事務分配事務 ID。
- PD 不僅存儲元信息,同時還會根據 TiKV 節點實時上報的數據分佈狀態,下發數據調度命令給具體的 TiKV 節點。
- PD 由至少3個節點構成,擁有高可用的能力。PD 通過 Raft 協議保證數據的安全性。一般建議部署奇數個 PD 節點。
2.3 TiKV Server
TiKV Server 主要負責存儲數據,從外部看 TiKV 是一個分佈式的提供事務的 Key-Value 存儲引擎。
存儲數據的基本單位是 Region,每個 Region 負責存儲一個 Key Range (從 StartKey 到EndKey 的左閉右開區間)的數據,每個 TiKV 節點會負責多個 Region 。TiKV 使用 Raft協議做復制,保持數據的一致性和容災。
3、TiDB的關鍵特性
3.1 高度兼容 MySQL
大部分情況下,不需要調整代碼就可以輕松從MySQL遷移至TiDB數據庫,分庫分表後的MySQL集群也可以通過TiDB工具進行實時遷移。
3.2 水平彈性擴展
通過簡單地增加新節點就可以實現TiDB的水平擴展,按業務需要擴展吞吐量或存儲,輕松應對高並發、海量數據場景,按需的方式也可以節約不少的成本。
3.3 分佈式事務
TiDB完全支持標準的 ACID 事務。
3.4 金融級別高可用
相比於傳統主從復制方案,基於Raft的多數派選舉協議可以提供金融級的 100% 數據強一致性保證,且在不丟失大多數副本的前提下,可以實現故障的自動恢復,不需要認為的介入處理。
3.5 一站式 HTAP 解決方案
TiDB 作為典型的 OLTP 行存數據庫,同時兼具強大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP解決方案,一份存儲同時處理OLTP & OLAP(OLAP、OLTP的介紹和比較 )無需傳統繁瑣的 ETL 過程。
3.6 雲原生 SQL 數據庫
TiDB是為雲服務而設計的數據庫,可以同 Kubernetes 容器化技術深度耦合,支持公有雲、私有雲和混合雲。使安裝部署、配置和維護變得十分簡單。
4、適用場景
4.1 千萬級以上數據存儲
針對至少有千萬行級別的大表,或者數據庫schema的占空空間有T級別的數據量比較適合TiDB;如果數據存儲規模少於500G且每秒查詢量少或並發量小則建議使用mysql。
4.2 高並發
如果你的並發量高達十萬以上,可以實用TiDB,省去瞭中間件和分庫分表的麻煩。
4.3 運維人員不足
TiDB可以自動維護數據的強一致性和高可用,大大減少瞭數據庫運維的工作。