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