简介:李海翔,网名“那海蓝蓝”,腾讯金融云数据库技术专家。中国人民大学信息学院工程硕士企业导师。著有《数据库事务处理的艺术:事务管理和并发访问控制》、《数据库查询优化器的艺术:原理解析与SQL性能优化》,广受好评。
2018年5月11日,腾讯TDSQL团队为中国数据库技术大会DTCC带来了腾讯最新的数据库核心技术:TDSQL原创的全态数据的概念和基于历史态数据的可见性判断算法。
腾讯专家工程师李海翔在DTCC上做了主题为“为数据赋能---腾讯TDSQL分布式金融级数据库前沿技术”的技术内容分享。本次分享,基于数据库事务处理的核心技术并发访问控制技术,TDSQL原创性提出了全态数据的概念和基于历史态数据的可见性判断算法,并基于此实现了全时态数据库。
如下是本次分享的主要内容。主要包括:TDSQL背景介绍、T-TDSQL原创技术出发点、T-TDSQL核心技术点、T-TDSQL典型应用、T-TDSQL核心理念、项目致谢六个部分。
一、 TDSQL概述TDSQL是一个稳定运行了十年之久的分布式数据库,不仅支撑了腾讯公司的计费业务,而且还在微众银行等金融单位的核心业务系统稳定、高效地运行了四年之久。这几年,TDSQL在技术层面不断进步,研发了很多新特性,诸如多级分区、热点更新、隐含主键、分布式事务等,不仅有力的支撑了事务型的数据库应用,而且在体系结构上也朝Spanner架构上迈进,是一个名副其实的NewSQL系统。
TDSQL分布式事务处理技术,有了长足进步,不仅表现在基于XA实现了2PC以支持分布式事务的原子提交,而且在MVCC技术的基础上,做了创新,使得TDSQL的事务处理技术基于原创技术而不断发展。
二、原创技术的出发点TDSQL的原创技术,不是为技术而技术,而是基于业务的需求,为解决业务问题而进行的创新。
腾讯公司的计费业务系统,是世界上领先的金融云计费业务系统。这个系统包括SAAS、PAAS、IAAS三个层面。在SAAS层面,包括米大师、云商店、TDSQL等系统。
TDSQL托管账户近280亿,米大师依托TDSQL进行金融交易,腾讯充值及其相关合作伙伴的日流水量超过150亿条,每天处理的交易量超过100亿笔。金融数据在TDSQL数据库中进行结算、对账、审计、风控数据分析、构建用户画像等业务。如王者荣耀游戏点券的对账业务、用户账户消费充值变化审计与风控业务等。
要进行诸如对账、审计等业务,数据来源有两部分。一部分数据来源是从不同系统(关系数据库或NoSQL系统)的日志数据中来,称为流水日志。但某个这样的系统每天的日志流水数据近百G且从趋势看增量数据递增很快。另外,有些数据是在TDSQL中按时间分表,需在一段时间结束后对按时间分表的数据利用流水日志进行对账计算。
对账主要是解决几种异常情况:
系统存在BUG,或者在故障时,未表现出预期的情况。这可能导致发货成功扣款不成功,或者扣款成功未发货的情况。如腾讯视频VIP管理系统的充值、发货。
规避黑客/内部风险。例如不法人员绕过业务系统去给自己充值等舞弊行为。
这样的对账业务种类很多,不同的应用其日志流水格式不完全相同,TDSQL托管的账户需要定时对多级数千种业务和账户做数据一致性对账检验。
从技术的角度看,存在四个问题:
应用开发复杂:使用业务日志,需要业务系统不断产生日志信息,然后耗费计算资源对不同的日志格式进行解析,把日志信息存储到分析系统。由此带来了开发的负担和资源的浪费。
数据逻辑割裂:TDSQL中按时间分表,只能按确定的时间段进行结算,不能灵活、方便的计算。如计算任意时间段内的数据,按时间段的分表在物理上割裂了数据按时间的逻辑连续特性,需要指定若干个特定的分表才能进行计算。
实时特性丢失:如上两个问题,隐含地,意味着进行计算的数据需要导入到一个新的分析系统进行计算,导出/导入数据的过程也带来了资源和时间的消耗、使得分析系统难以具备实时计算特性。
数据管理复杂:另外,日志等信息,是历史态数据,需要长期保存。在腾讯公司每日对不同格式的、超过150亿条流水日志进行生成、存储、解析与管理等,这成为一个巨大的挑战。
现代的数据库系统只保留有数据的当前值,而因存储成本等原因,历史态数据被丢弃。而数据作为重要的资产,不管是当前数据,还是历史上曾经存在过的数据,都具有重要价值。因此,历史态数据存储、被分析、被挖掘、被反复使用,是当前互联网等企业的需求。尤其是金融类历史态数据,因为安全、需要被多次计算的原因,在腾讯公司的计费业务中,带有时态属性的数据被管理的需求日益旺盛。