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 刊登。论文下载地址:http://www.vldb.org/pvldb/vol13/p3072-huang.pdf