背景
随着社會數字化程度的加深,網絡逐漸成為了社會的基礎設施。随着網際網路滲透程度的不斷深入和網際網路的進一步下沉,人們會在網際網路上面 花費更多的時間,産生更多的資料。作為資料存儲基石的DB面臨着新的挑戰和發展空間,由于數量的增長,之前的單機DB将面臨越來越多的挑戰,此時就出現資料庫擴充的多種方案以滿足海量資料的存儲。目前主流的應對方案主要是分庫分表,但是也存在着分布式事務,跨節點 join,擴容複雜等局限。
分布式資料TIDB簡介
TIDB是一款同時支援線上事務處理和線上分析處理資料(Hybrid Transactional and Analytical Processing, HTAP)的關系性分布式資料庫。線上事務處理,一般日常的事務處理資料庫類型。線上分析處理,指由于資料分析的資料庫類型,側重于資料分析與決策,大多是基于MR模型的分布式存儲系統或者是列式存儲,例如clickhouse。
- 一鍵水準擴容或者縮容
由于采用計算與存儲分離,可針對不同場景對計算子產品或者存儲子產品快速透明化擴容。
- 金融級高可用
多副本存儲,基于raft協定的事務日志
- 實時 HTAP
通過基于兩種不同的存儲模型TIKV和列式存儲TiFlash,同時支援OLTP和OLAP,通過raft協定保持兩者資料的強一緻性。
- 雲原生的分布式資料庫
可以基于TIDB生态的 TI oprator,在私有雲、公有雲或者混合雲實作工具化部署。
- 相容 MySQL 5.7 協定和 MySQL 生态
相容大部分Mysql 5.7協定,使用者可以在原有代碼不做變更的基礎上,在Mysql和TIDB之間實作透明化遷移。
架構

(圖檔來自Pingcap官網)
TIDB整個叢集主要分為TIDB Server、PD Server、TIKV Server 、TIFlash(可選)
TIDB Server:這部分主要負責Sql 解析、優化,生成執行計劃,此部分是無狀态的。TIDB 還扮演着計算下推的角色,
同步對SQL的解析和分析,推斷是适用TIKV還是TIFlash,将資料計算下推到資料存儲層。例如要按照某一個字段的一段範圍的内機關時間的度量,将會下推給TIflash引擎,利用列式存儲提高查詢性能。
PD Server:元資訊子產品。主要負責資料在TIKV的分布情況和叢集的拓撲情況,協調資料資料遷移。
并負責生成分布式事務的唯一ID。
TIKV:TIKV是基于rocksdb二次開發的KV存儲引擎。Region為最基本資料存儲單元,在每一個region中按序存儲一段資料,Region的遷移、合并、遷移受PDServer的調控。
TIFlash:列式存儲引擎、記得之前是基于clickhouse開發的存儲引擎。作為TIKV learner的角色送出資料。異步複制、一緻性(讀之前會校驗與Leader的資料同步狀态)。clickhouse特點,多線程并發查詢,海量資料情況下并能比較優異,确定就是并發度不高。
分布式事務
TIDB的分布式事務是基于Google 的
Percolator二階段送出算法實作的。從3.0開始預設實作是悲觀事務,參考
TiDB 新特性漫談:悲觀事務。并且基于MVCC多版本控制實作了事務的并發控制,詳細可以參考
TiKV 的 MVCC(Multi-Version Concurrency Control)機制。
Region存儲模型
大資料量的KV存儲目前有兩種存儲方案。
- 基于Hash 的 Map存儲方案,例如redis。
- 基于LSM Tree的有序分塊存儲的方案,例如mongodb,rocksdb。
TIDB的KV實作 是基于第二種的實作,Region是資料在TIKV中的存儲基本資料模型,為了友善資料在rocksdb的存儲和遷移,tidb将資料以region為機關組織存儲。在每一個region中資料均順序組織(startKey,endKey),友善PD的排程遷移與寫入。并且資料的複制與分發也已region為機關組織。
詳細可以參考
TIDB存儲-region性能分析
下面是之前做的一份壓測資料。
- 1 TIDBServer,3 TIKV,同城三機房部署。
- 并發10qps,同時查詢數8SQL。
- 工具Jemter
- 資料量200-300G
- TIDB 4.x版本
機器性能暫時沒有打滿,可以看到響應時間基本在15ms左右
除了這份資料和pingcap公布的官方tpc資料,還有其他部分公司DBA在自己測試環境做了壓測。得出結論,在資料量達到一定程度下,與mysql性能相比差距不大,并且在某些場景會超過mysql的性能。當然剛剛釋出的5.0版本性能又有了一定提升
其他以官方公布的資料為準
TiDB Sysbench 性能對比測試報告 - v5.1.0 對比 v5.0.2使用現狀
TIDB作為國内公司開發的分布式資料庫新秀,受到國内許多網際網路、金融、銀行等行業公司的關注,并投入了一定的資源參與到了TIDB的生态建設。例如美團、伴魚、bilibili等。
總結
随着數字化加深、資料量的暴增,分布式資料庫是未來解決海量資料的唯一途徑。同時随着雲原生基礎設施不斷地完善,作為整條鍊路的最後一塊單點陣地-資料庫,基于雲設施的分布式方案前景看好。并且随着國内技術行業的更新,相信會有更多像TIDB這種自研的優秀的基礎技術産品湧現。去探尋技術附加值更高的市場,打造資料我們自己的技術壁壘。支援國産!