HTAP是目前数据库领域比较热门的一个概念,它既能支持OLTP(在线事务处理),又能支持OLAP(在线分析处理),可以涵盖大部分企业级应用的需求,一站式解决他们的问题。本次,小编有幸采访到PingCAP分析型产品负责人马晓宇先生,就TiDB的HTAP之路作出分享。
▲PingCAP分析型产品负责人马晓宇
TiDB= X% TP+Y% AP =HTAP
TiDB是一个分布式NewSQL数据库,它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性,是一个不仅适合OLTP场景,还适合OLAP场景的混合数据库。
追溯TiDB的发展史,要从其“上古时代”说起。马晓宇表示,“起初,由于受到Google Spanner/F1的启发,PingCAP开始着手研发TiDB。”彼时国外已经出现了 CockroachDB(蟑螂数据库)等一系列解决TP问题的新兴数据库厂商,但国内研发这类数据库的公司寥寥无几,TiDB的出现填补了这块市场空白。
最开始,TiDB只是解决TP问题,但在实际应用过程中,用户对TiDB数据库的查询功能提出了更高的要求。为此,TiDB调整了自己的数据库执行器,增加了AP的功能拓展。如此以来,TiDB就同时具备TP和AP的功能。
马晓宇透露,“客户一直对‘TiDB适用于100%TP和80%AP场景’中的80%抱有怀疑态度,为什么是80%,不是75%,也不是85%?所以,后来我们就改用了一个比较精确(时髦)的说法:TiDB是一款HTAP数据库。”
TiDB数据库的架构优势
TiDB的整体架构分为TiDB和TiKV两层。TiDB是一层无状态的SQL Layer,对外暴露MySQL网络协议,负责解析用户的SQL语句,生成分布式的Query Plan,翻译成底层Key Value操作发送给TiKV。“通俗的讲,TiDB是XXXXXXXXXXXL版本的MySQL。”马晓宇说道。
▲TiDB数据库的原始架构
TiDB的关键立足点在于,它是一个能扩展的关系型数据库。马晓宇补充道,“除了可以替换分库分表MySQL做TP业务,TiDB也非常适合中台场景,可轻松同步MySQL生产库、透明无障碍的跨分片查询,实现数据实时落地、海量存储(TiKV)允许多数据源汇聚等。”
不仅如此,TiDB的代码全部开源。马晓宇表示,“我们本身是一家开源的公司,我们也会参与一些其他的开源社区,公司员工很多都是资深的开源社区的参与者和贡献者,我们希望和其他社区共赢,能有更多的小伙伴参加我们的开源。”
▲TiDB 1.0 vs 2.0
据悉,TiDB的更新换代速度非常快。TiDB自在2015年5月GitHub创建,而后于2016年6月发布Beta版,2017年3月发布RC2版本……2019年5月10日,TiDB 3.0.0-rc.1版本正式推出,相比 3.0.0 Beta.1,该版本对系统稳定性、易用性、功能、优化器、统计信息以及执行引擎都做了很多改进。
TiFlash项目正在进行中
2019年之后,PingCAP会有哪些大动作?马晓宇表示,“除了提升产品的性能、完善更多的功能之外,我们还会开展TiFlash项目。”据悉,TiFlash是一个相对独立完整的分析型数据库产品,通过Raft Learner独立同步一套列存,Label进行物理隔离,使AP/TP作业互相无影响,从而解决HTAP系统资源隔离的难题。
在对TP端极低的消耗下,Raft Learner接入配合 MVCC 事务模型可以提供一致性的数据读取,同时又兼顾了资源隔离。当读取数据时,TiFlash发送Raft索引校对请求。当数据同步到读取请求发送时间点的进度时,TiFlash才提供读取。马晓宇透露,“2019年将要发布GA版本,包含TiSpark以及TiDB双入口。”
马晓宇认为,“最开始在业界,HTAP其实是一个marketing slogan。如果一个数据库可以完美的融合TP和AP,那么在设计上来说,这将是一个非常干净漂亮的做法。”他还表示,“未来,HTAP还会有更多待开发的场景,值得我们去探索。”