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