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