腾讯对分布式数据库技术的深度思考与实践

核心提示以下文章来源于腾讯技术工程 ,作者李海翔作者:李海翔,网名“那海蓝蓝”,腾讯金融云数据库技术专家。中国人民大学信息学院工程硕士企业导师。著有《数据库事务处理的艺术:事务管理和并发访问控制》、《数据库查询优化器的艺术:原理解析与SQL性能优化

以下文章来源于腾讯技术工程 ,作者李海翔作者:李海翔,网名“那海蓝蓝”,腾讯金融云数据库技术专家。中国人民大学信息学院工程硕士企业导师。

著有《数据库事务处理的艺术:事务管理和并发访问控制》、《数据库查询优化器的艺术:原理解析与SQL性能优化》、《大数据管理》。

前言2019年10月11日至13日,CCF数据库专委会在济南召开了国内规模最大的、每年一度的数据库学术盛会——第36届CCF中国数据库学术会议(NDBC 2019),腾讯TDSQL团队受邀在“数据库产学研合作论坛”,做了主题为“TDSQL对未来分布式数据库的技术研发思考与实践”的技术报告,与国内数据库学界与业界核心技术人员共同探讨国产数据库面临的基础问题和技术发展方向,助力推动我国数据库技术自主可控发展。 与此同时,本次会上,腾讯云数据库技术专家、金融级分布式数据库TDSQL团队专家工程师、中国人民大学信息学院工程硕士企业导师李海翔,当选成为了中国计算机学会(CCF)数据库专委会委员。未来,腾讯将加大投入,促进我国数据库产学研合作,推进数据库技术自主可控发展。

本次会议上,腾讯TDSQL团队带来了TDSQL对分布式数据库技术研发的深度思考与实践分享,主要包括三个方面:1) 分布式事务的效率与正确性,如何在保证双一致性(事务一致性、分布式一致性)的前提下,提高分布式事务型集群的处理效率?2) 新硬件和AI等技术,在云环境下,如何影响着数据库的架构?3)数据库各个模块间是否能解耦以降低研发的复杂度,同时缩短研发人才的培养周期?腾讯TDSQL数据库的发展历程TDSQL是腾讯打造的金融级分布式数据库,对内支撑腾讯公司近90%的金融、交易、计费类业务。

2007年,随着公司业务再一次腾飞,TDSQL团队启动了一个7*24高可用服务项目,以保障腾讯计费等公司级别敏感业务高可用、核心数据零丢失、核心交易零错账。这也是TDSQL的前身。 然而,考虑到当时选用的技术方案,技术层与业务层耦合较深。

于是,腾讯技术团队开始了研发一款金融级数据库的项目。实现让数据库来解决高可用、数据一致性、水平伸缩等问题,而让业务系统只需要关注业务逻辑。

2012年,标准化的金融级分布式关系型数据库产品TDSQL研发完成,并在腾讯内部大规模推广使用。

该问题,是业界一个难题。Google的Spanner系统实现了双一致,但事务处理的效率很低。TDSQL在深入研究分布式事务处理的技术时,不仅解决了全局一致性问题(2019DTCC大会分享:分布式数据库全局读一致性),而且提出了一个“统一致性模型”,不仅在正确性上实现了双一致的功能,而且高效地解决了该问题。

在TDSQL看来,双一致性的正确性相对容易实现(尽管这也是一个很难解决的问题),但分布式事务型数据库的性能难以有效提高。那么,有哪些因素,制约着分布式事务型数据库性能的提高呢? 如图2,一些研究者认为,是网络带宽限制了性能;一些研究者认为,制约分布式事务型数据库性能的提高有2个因素,一是“latency”本身,二是“latency”延长了事务的生命周期,而长的事务生命周期导致并发事务发生冲突的概率增大,进而引发事务回滚降低了性能。 但是,还有研究者对于多种并发访问控制算法进行了较验证,如图4,发现传统的OCC算法比很多种知名的改进的OCC算法(如知名的Tictoc、自适应的OCC等算法)更有效。这表明,不同人实现的不同的系统尽管采用了一样的算法思路,但是实际效果却大不相同(如Tictoc自身的测试结果表明其改进的OCC算法效率好于传统的OCC算法)。

所以,我们在思考,不同实验得到不同的结论,其背后,真的影响分布式事务的效率的因素究竟是什么?再对比图6,腾讯在MySQL上做了热点更新功能,发现在高并发高竞争同一个数据项的情况下,影响MySQL性能的,不是2PL这个算法本身,而是为解决死锁问题时死锁检测算法消耗的CPU资源,故MySQL的事务吞吐量近乎为0。禁止了死锁检测后,并用系统锁(非事务锁)互斥了在同一个数据项上的并发竞争后,MySQL系统事务处理吞吐量上升的万倍左右。 另外,解耦工作,其实无处不在。图10展示了算法与数据结构之间的解耦。

图10的左子图,是数据库的持久化部分和内存中数据之间的设计解耦。图10的右子图,是索引的数据结构与物理存储层之间的解耦。 图10的左子图,对应VLDB 2018的论文"FineLine: Log-structuredTransactional Storage and Recovery",提出了一种事务存储和恢复机制FineLine,舍弃了传统的WAL,把所有需要持久化的数据存储到一个单一的数据结构,希望将数据库的持久化部分和内存中数据存储之间达到设计解耦。FineLine无需将内存中数据落盘到DB,仅将内存中的log信息持久化到Indexed log中,然后通过fetch操作从Indexed log读取到数据的最新状态。

通过将内存中的数据结构与其持久性表示尽量地解耦,消除了与传统基于磁盘的RDBMS相关的许多开销。除此之外,这种单一的持久化存储架构带来的另一个好处是,在系统发生故障后恢复的开销很低。由于Indexed log保持了与原子操作的一致性,当发生故障并重启时,可以从Indexed log中读取到已提交的最新数据记录。

基于no-steal的策略,Undo操作,Checkpoint这些也都不需要。 结语数据库作为核心基础技术之一,在自主可控的时代发展潮流下,是我们必将要跨过的大山。路虽弥,不行则不至,历经十数年的研发演进,至少今天我们都已达成了许多重要的里程碑。

当下而言,国产数据库从技术、人才、工业生态等各方面,都有待完善和发展,而未来更紧密的产学研结合、科技与传统产业融合趋势下,将进一步促进数据库自主可控发展。江湖召集令9月27日-11月6日,腾讯云数据库王者挑战赛(点击查看详情) 等你挑战!花几分钟参加比赛免费将☟☟抱回家!

  • MacBook/iPhone 11/AirPods
  • 25台Kindle
  • 8万元腾讯云创业基金
  • MySQL之父 Michael Widenius 面对面交流
转发下方海报参与活动可以获得腾讯公仔和腾讯云数据库无门槛代金券,详情请扫描下方图片二维码咨询。疯狂11.1110月21-31日,腾讯云MySQL低至1.5折起,7元/月;SQL Server全场2折,91元/月,企业新用户及个人新用户可领取千元代金券。
 
友情链接
鄂ICP备19019357号-22