作者简介:李海翔,网名“那海蓝蓝”,腾讯金融云数据库技术专家。中国人民大学信息学院工程硕士企业导师。著有《数据库事务处理的艺术:事务管理和并发访问控制》、《数据库查询优化器的艺术:原理解析与SQL性能优化》,广受好评。
2018年11月16日,中国数据技术嘉年华技术大会上,腾讯TDSQL团队带来腾讯最新的数据库核心技术课题:基于全时态数据库技术的数据闪回。腾讯专家工程师李海翔在大会上做了该课题的分享。
此次分享是基于腾讯研发的分布式全时态数据库系统和分布式事务处理的创新技术,TDSQL原创性研发了全时态数据的闪回功能,并提出一种基于全时态数据模型的新型架构—HTAC集群架构。主要内容包括:TDSQL概述、TDSQL全时态数据库核心理念、TDSQL分布式全时态数据库原理与架构、TDSQL基于HTAC的全闪回技术四个部分。
一、 TDSQL概述
TDSQL分布式数据库已稳定运行十年之久,不仅支撑了腾讯公司的计费业务,而且在微众银行、数字广东等金融、政务等领域有着广泛应用。这几年,TDSQL在技术层面不断进步,研发诸多新特性,如多级分区、热点更新、隐含主键、分布式事务等,不仅有力地支撑了事务型的数据库应用,而且在体系结构上也朝Spanner架构迈进,是一个名副其实的NewSQL系统。
TDSQL分布式事务处理技术,有了长足进步,不仅表现在支持分布式事务,而且在MVCC技术的基础上做了创新,使得TDSQL的事务处理技术基于原创技术不断发展。
腾讯数据库技术的发展始终把握两条线:一是从数据价值出发扩展数据库的能力为业务提供服务;二是从技术角度出发提升数据库的能力为数据处理提供服务。2018年,TDSQL提出全时态数据模型,对分布式全时态数据库进行研发,并推出处理全时态数据类型的HTAC(Hybrid Transaction /Analytical Cluster,混合事务/分析集群)架构。
二、TDSQL全时态数据库核心理念
TDSQL的原创技术,是基于业务的需求,为解决业务问题而进行的创新。腾讯公司基于TDSQL关系型数据库研发的时态数据库,由数据库系统统一管理海量的全时态数据、当前数据,解决了上述四个业务中的问题(应用开发复杂、数据逻辑割裂、实时特性丢失、数据管理复杂)。
因存储成本等原因,现代的数据库系统只保留有数据的当前值,历史态数据被丢弃。而数据作为重要的资产,不管是当前数据,还是历史数据,都具有重要价值。因此,历史态数据存储、被分析、被挖掘、被反复使用,是当前互联网企业的需求。尤其是金融类历史态数据,出于数据安全的原因,需要被多次计算验证,在腾讯公司的计费业务中,带有时态属性的数据被管理的需求日益旺盛。
“数据有价值,历史数据也富有价值”,这是TDSQL时态数据库的核心价值观。TDSQL团队认为:数据的状态属性,标识数据的生命周期轨迹。数据的生命周期分为三个阶段,每个阶段刻画数据的不同状态属性,以标识数据的生命周期轨迹中所处的状态。
- 当前态(Current State):数据项最新版本的数据,处于当前阶段称为当前态。
- 历史态(Historical State):数据项历史上的一个状态,其值是旧值,不是当前值,称为历史态。一个数据项的历史态,可以有多个,反映了数据的状态变迁的过程。处于历史态的数据,只能被读取不能再被修改或删除。
- 过渡态(Transitional State):处于从当前态向历史态转变的过程中。处于过渡态的数据,称为半衰数据。
这三个状态,涵盖了一个数据项的生命周期,合称为数据全态(full-state),或称为全态数据。在MVCC机制下,数据的三种状态均存在;在非MVCC机制下,数据只存在历史态和当前态。
- 当前态:MVCC或封锁并发访问控制机制下,事务提交后的数据的新值处于当前态。
- 历史态:MVCC机制下,当前活跃事务列表中最小的事务之前的事务生成的数据,其状态处于历史态。在封锁并发访问控制机制下,事务提交后,提交前的数据的值变为历史态的值,即数据项的旧值处于历史态。
- 过渡态:MVCC机制下,被读取的版本上尚有活跃事务(非最新相关事务)在使用,因最新相关事务修改了数据项的值,其最新值已经处于一个当前态,被读取到的值相对当前态已经处于一个历史状态,故其数据状态介于当前态和历史态之间,所以称为过渡态。
数据的双时态属性,分别为有效时间属性、事务时间属性。
基于上述内容,TDSQL构建了全时态数据模型,包括全态数据和时态数据,以及其操作语义。TDSQL全时态数据库,具备如下图所示的特性,能够涵盖双时态的数据应用、数据安全、数据分析、简化应用开发等四大方面的问题。
三 、TDSQL分布式全时态数据库原理与架构
TDSQL的核心技术之一,是数据模型的定义、全态数据模型和双时态数据模型的结合。
TDSQL的核心技术一:数据模型
TDSQL全时态数据库不仅支持全态和双时态数据的存储,还支持其他丰富操作。在这个模型中,全态数据体现在数据项的历史版本上,时态数据不仅有事务时间时态,还有有效时间时态。全态数据的历史态数据,可以追溯数据库系统的操作发生时间以及发生的操作类型。具备丰富的操作语义,是TDSQL全时态数据库的一个特色。
TDSQL的核心技术二:历史数据转储时机
历史数据的存储时机,是TDSQL的另外一个核心技术。TDSQL巧妙地利用MySQL的回滚段和Purge机制,实现了历史态数据的转储,原理图如下:
TDSQL的核心技术三:在全时态数据模型上的事务操作
数据存储之后,需要基于MVCC做历史态数据的可见性判断,原理如下:
TDSQL基于全时态数据模型,实现了新的数据一致性快照点的构建,可以获取任何时间段(包括历史发生过的时间)上的任何状态的数据。
作为原创技术,TDSQL的核心技术点及其思路,相关论文已经在World Wide Web journal上以题为《Efficienttime-interval data extraction in MVCC-based RDBMS》发表,详情可参见:https://link.springer.com/article/10.1007/s11280-018-0552-7
TDSQL分布式数据库系统的历史态数据的全局计算,依赖如下图所示的TDSQL分布式事务处理机制:
TDSQL的核心技术四:创新的HTAC架构
TDSQL既支持全时态数据的无限存储,同时实现了TDSQL对全时态数据的强大计算能力,这得益于创新的HTAC架构。此架构使得全时态数据模型在分布式数据库系统内做到了三个融合:全态数据融合、AP和TP处理融合、架构向数据模型融合。
如下图,数据库服务由HTAC提供:
HTAC是一个集群系统,分为TP集群和AP集群,TP提供事务处理业务,AP提供历史态数据的查询、分析功能。
SR,SQLRouter层,根据查询语句、查询操作的语义和元数据,路由查询到TP或AP子系统。
TP处理当前态数据,每份数据为一个SET,一个SET存在多个副本,副本间通过TDSQL的强同步技术实现数据强一致。SET中的数据可以线性扩容。节点失效通过ZooKeeper进行管理。跨节点的写事务通过2PC技术实现分布式事务对数据操作的原子性、一致性。
AP提供无限存储功能,保存历史态数据,并提供历史态数据的查询、分析业务。TP中定义历史态数据迁移策略,按策略把历史数据原子迁移到AP系统,并注册到MD元数据管理器。
极高的性能
实现数据库全时态能力之后,TDSQL全时态数据库依旧保持近乎原系统性能,这是一件不容易的事情。使用业界通用的sysbench测试工具进行OLTP测试,TDSQL全时态数据库的性能近乎完美。
四 、TDSQL全时态数据库的闪回
今天,我们分享基于全时态数据库基础构建的技术之一:闪回。这是非常酷的特性,用户在TDSQL系统中可以实现“一切过往兼可追溯”的梦想。闪回是DBA们特别欢迎的一个重要特性,TDSQL提供了任意时间点的任意数据的闪回能力,其他数据库诸如Oracle只具备阶段性数据的闪回能力。
一旦掌握了TDSQL全时态数据库系统的实现原理,基于此所做的闪回就能很容易理解。其核心问题就是:在全态的数据上,怎么做给定时间点的一致性查询。这个问题在第三节已经谈得十分充分了。接下来,我们来看看TDSQL全时态数据库系统的闪回的特点。可以用一个字概括“全”,称为“全闪回”。全的含义是多种层次的,一是在所有数据项的生命周期内可以进行任意时间点的闪回;二是TDSQL作为一个分布式系统,因为其创新的全局读一致性技术,做到了在分布式系统下的全局闪回;三是闪回可以在HTAC系统中的AC子系统完成,这不影响生成系统。可随时进行闪回,小伙伴们对此贴心的架构设计非常满意。
五、 结语 :TDSQL的核心理念,为数据赋能
数据的创造是由用户和其业务决定的,他们是创造数据的甲方。数据库承载了数据的管理职责,是否数据库系统也可以参与到数据的创造环节中来呢?
在TDSQL团队看来,全时态这一概念,正是数据库系统参与到数据创造环节的最佳契机。数据库系统为数据赋于了事务时态,赋于了DML操作过程中的事件源,甚至可能为数据之间赋于关联关系,使得数据库系统也成为了数据的创造者。
原创技术的背后,是“为数据赋能”的理念推动着TDSQL团队潜心钻研全时态数据库系统,从而让数据拥有更多的价值,数据库变成数据的生产者,参与数据的创造。