#頭條創作挑戰賽#
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.1TiDB Server
屬于SQL 層,是對外暴露 MySQL 協定的連接配接 endpoint,主要 負責接受用戶端的連接配接,執行 SQL 解析和優化,最終生成分布式執行計劃。TiDB 層本身是無狀态的,可以啟動多個 TiDB 執行個體,通過負載均衡元件(如 LVS、HAProxy 或 F5)對外提供統一的接入位址,用戶端的連接配接可以均勻地分攤在多個 TiDB 執行個體上以達到負載均衡的效果。TiDB Server 本身并不存儲資料,隻負責解析SQL,将實際的資料讀取請求轉發給底層的存儲節點 TiKV(或 TiFlash)
2.2PD 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可以自動維護資料的強一緻性和高可用,大大減少了資料庫運維的工作。