8 月 31 日 - 9 月 4 日,第 46 屆 VLDB 會議以線上直播的方式舉行(原定於日本東京召開),PingCAP 團隊的論文《TiDB: A Raft-based HTAP Database 》入選 VLDB 2020 ,成爲業界第一篇 Real-time HTAP 分佈式數據庫工業實現的論文。PingCAP 聯合創始人、CTO 黃東旭獲邀在會上進行演講,分享關於論文的深度解讀及在線答疑。
VLDB(International Conference on Very Large Databases)是數據庫領域頂尖的三大學術會議之一,於 1975 年在美國成立,由非盈利性機構 VLDB 基金會贊助和運營,以在全球普及數據庫技術研究和交流作爲使命。
在本篇論文中,PingCAP 重點介紹了其研發的 TiDB 作爲一款定位於在線事務處理和在線實時分析(HTAP)混合負載融合型分佈式數據庫產品的系統架構和核心特性。TiDB 受 Google 發佈的 Spanner / F1 論文 ,以及 2014 年 Stanford 工業級分佈式一致性協議算法 Raft 論文的啓發。經過 5 年多的產品研發、生產環境上線驗證,取得了一系列成果,此次被 VLDB 2020 收錄也是對學術界的反哺。
HTAP(Hybrid Transactional / Analytical Processing) 是近些年爲數據庫界所關注的研究方向。HTAP 數據庫需要能夠同時兼具處理交易以及分析兩種作業的能力,這使得交易數據能夠被實時分析,大大縮短決策的週期,同時大幅簡化平臺架構。
但是 HTAP 能力並不容易構建:交易業務需要行存,分析業務仰賴列存,且列存往往難於實時更新。以往的分析平臺往往需要將數據從行存的交易庫向列存的分析庫進行數據遷移,這使得我們的數據分析往往基於歷史數據。現今越來越多的用戶不再滿足於基於對歷史數據進行分析,而是希望能用更新鮮的數據支持決策。例如生鮮零售業,基於更新鮮的數據進行物流調度可以大大減少貨損。
技術上來說,Real-time HTAP 並不容易實現。首先,數據庫需要同時具備行存和列存兩種能力;並且列存需要能實時反映行存的變更;最後,兩種業務需要能互相之間無干擾運行。
TiDB 最新版本中引入了專爲 Real-time HTAP 場景設計的以 Raft 爲基礎的行列混合體系。本論文也是以這個架構爲主軸來闡述其獨特之處。
TiDB 爲支持 Real-time HTAP 架構實現了:
可實時更新的列存。與傳統的列存不同,TiDB 實現了一套可實時根據主鍵更新的列存引擎,並使用了與 TiKV 的 LSM 不同的 DeltaTree 設計,避免了範圍讀取下 LSM 多路歸併負擔過重的問題。
通過以 Raft Learner 角色加入 Multi-Raft 副本體系,以異步的方式進行從行到列的數據複製,以求盡最小化對在線交易業務的影響。同時,雖然是異步複製,通過共識協議的 Learner Read 算法,TiFlash 仍然可以提供一致性的讀取效果。
通過與行存一致的代價估算模型,TiDB 可以智能選取行存,列存或者混合的方式響應查詢,以期獲得最佳性能。
以上是 TiDB HTAP 架構圖,與以往不同的是,新的架構下增加了 TiFlash 列式存儲節點。通過 Raft 共識算法進行復制,每個 Region 可以擁有行存和列存兩種副本,而用戶查詢會根據統計信息和代價估算自動選擇副本類型。
TiDB 創新性地利用 Raft 共識協議同時實現了行列混合,負載隔離,以及異步複製下的一致性讀取,爲 HTAP 架構設計提供了新的思路。PingCAP 聯合創始人、CTO 黃東旭表示,我們相信,HTAP 將會隨着業務對實時決策的需求不斷增加而越來越普及,與此同時,希望我們的探索可以啓發其他數據庫開發者。
TiDB 目前已經有近 1000 家海內外頭部公司用戶將其用於線上生產環境,涉及互聯網、遊戲、銀行、保險、證券、航空、製造業、電信、新零售、政府等多個行業。包括國內的光大銀行、北京銀行、微衆銀行、美團點評、中通快遞、知乎、愛奇藝等;海外用戶如日本最大的支付公司 Paypay,視頻公司 U-Next, 越南的獨角獸 VNG,以及支付公司 ZaloPay,印度的 Zomato,BookMyShow,東南亞最大的電商 Shopee,法國視頻互聯網公司 Dailymotion 等,目前已經成爲業內的分佈式數據庫事實標準。
💡 本論文於 2020 年八月的 PVLDB, Volume 13, Issue 12 刊登。【點擊鏈接 】立即下載論文。