揭秘腾讯 TDSQL 全时态数据库系统
结合 TDSQL 系统的特点,研究团队提出并实现了一个轻量且高效的全时态数据库系统,该系统可以在保留原有 TDSQL 强劲的 OLTP 处理性能的同时,通过巧妙的系统设计,提供了内建的时态数据管理能力。
存储
**TDSQL 全时态数据库系统创新性地采用了一种混合存储模式,来对时态数据进行管理。**系统将时态数据拆分为当前数据和历史数据,针对不同的数据类型,分别采用不同的存储策略。当前数据管理模块,采用了基于 MVCC(多版本并发访问控制协议)设计的数据库所普遍采用的段页式结构,并且专门开辟回滚段,来对更新或删除操作产生的旧版本进行暂存。在回滚段中暂存的数据会在数据库进行资源回收操作(如 MySQL 中的 Purge 和 PostgreSQL 中的 VACUUM 等)时,迁移到历史数据管理模块,这个过程被称为数据转储。**这是一种异步的转储策略,因而几乎不会造成性能损耗。历史数据存储模块,通过 k-v 格式来进行组织,可以大幅度缩小存储开销。**由于一个数据项会存在多个历史版本,而这些历史版本会在某些属性上存在一样的值,例如表一中的 James 被重复四次。因此,在历史数据存储模块中,系统将每一个版本转化为一条 k-v,并且只存储相较于上一个版本发生变化的属性值。
查询与事务处理
**系统对时态查询处理逻辑进行了针对性设计与优化。**通过专门的时态查询编译器,部分时态查询条件(如有效时间查询)会被重写并拼接到 WHERE 条件中。而对于事务时间查询,系统将其查询条件转化为了内嵌的可见性判断过程,从而使得时态查询所获取的数据满足事务一致性的要求,保证数据的准确性,这点在金融场景下显得尤为重要。另外,**通过持久维护事务状态,系统可以快速获取到事务的执行状态,结合时态数据,即可原生支持事务级数据闪回等实用操作。**对于历史数据,系统利用 k-v 存储的特性,可以根据时间条件快速定位到所需数据版本,具备了较好的时态查询性能,且在 SQL 语句的写法上方便用户直接使用 SQL 语句进行查询。
架构设计
系统体现了 HTAC(Hybrid Transaction / Analytical Cluster,混合事务/分析集群)这一新型的系统架构设计理念。TDSQL 全时态数据库系统分为 OLTP 集群和 OLAP 集群,OLTP 集群负责事务型业务,OLAP 系统处理分析型业务,提供历史数据的查询分析等功能。通过统一路由模块根据查询语句、查询操作的语义将 SQL 发送到对应集群进行处理。由于时态数据查询等负载需要占用大量系统资源,这种拆分的系统设计可以尽量影响减小生产系统受到的性能影响。其次**,历史数据量级较大,OLAP 集群通过扩展存储的方式,即可实现历史数据的无限存储。**
论文贡献
1. 论文提出了一种拓展的时态数据模型。 除了在 SQL:2011 中定义的有效/事务时间属性外,本模型通过新引入的事务 ID 属性描述时间。 MIN_ID 与创建记录的事务相对应,MAX_ID 对应于删除/更新记录的事务。 事务 ID 能够识别在同一事务中插入/更新/删除的所有记录,从而实现由于业务逻辑破坏数据的修复。
**2. 论文提出了一种内建的时态数据库解决方案,**并针对 TDSQL 进行了大量优化,最终实现了 TDSQL 全时态数据库系统。同时,该解决方案具有很强的通用性,可以方便的引入到其他数据库系统中。通过引入异步数据迁移、增量历史数据管理、原生时态查询执行器等策略,该解决方案具有轻量且高效的特点。
**3. 通过在真实场景和 TPC 基准负载下的大量实验,**TDSQL 全时态数据库系统具有非常小的性能损失(相较于原始 TDSQL 系统),并且能够快速响应时态查询,与其他现有的时态数据库系统相比具有较好的性能。
系统测试
**通过 TPCC 测试基准,论文展示了时态数据管理对原有系统性能的影响情况。**在 256、512、1024 个数据仓库的场景下,基于 TDSQL 实现的全时态数据库系统的系统性能相较于原始 TDSQL 下降率不到 10%,领先于其他基于传统关系数据库实现的时态数据库系统。
**另外,基于真实的批处理业务场景,论文展示了系统在实际业务场景下的表现。**通过连续 30 天对比原始系统和新型全时态数据库系统(T-TDSQL)在处理该业务时所需的执行时间,实验结果展示腾讯全时态数据库系统在简化业务应用开发的同时,可以缩短近一半的业务执行时间。
对于该论文,VLDB 评审委员会做出如下点评:This paper extends the TDSQL system from Tencent for temporal data management. A new temporal data model is proposed with optimized implementation. Extensive experimental study has been conducted to compare the performance with existing temporal database systems over benchmarks and real data.
评论