共计 2439 个字符,预计需要花费 7 分钟才能阅读完成。
TDSQL 的原创技术,不是为技术而技术,而是基于业务的需要,为解决业务问题而进行的翻新。
腾讯公司的计费业务零碎,是世界上当先的金融云计费业务零碎。这个零碎包含 SAAS、PAAS、IAAS 三个层面。在 SAAS 层面,包含米巨匠、云商店、TDSQL 等零碎。
TDSQL 托管账户近 280 亿,米巨匠依靠 TDSQL 进行金融交易, 腾讯充值及其相干合作伙伴的日流水量超过 150 亿条,每天解决的交易量超过 100 亿笔。金融数据在 TDSQL 数据库中进行结算、对账、审计、风控数据分析、构建用户画像等业务。如王者光荣游戏点券的对账业务、用户账户生产充值变动审计与风控业务等。
要进行诸如对账、审计等业务,数据起源有两局部。 一部分数据起源是从不同零碎(关系数据库或 NoSQL 零碎)的日志数据中来,称为流水日志。但某个这样的零碎每天的日志流水数据近百 G 且从趋势看增量数据递增很快。另外,有些数据是在 TDSQL 中按工夫分表,需在一段时间完结后对按工夫分表的数据利用流水日志进行对账计算。
对账次要是解决几种异常情况:
- 零碎存在 BUG,或者在故障时,未体现出预期的状况。这可能导致发货胜利扣款不胜利,或者扣款胜利未发货的状况。如腾讯视频 VIP 管理系统的充值、发货。
- 躲避黑客 / 外部危险。例如不法人员绕过业务零碎去给本人充值等舞弊行为。
这样的对账业务品种很多,不同的利用其日志流水格局不完全相同,TDSQL 托管的账户须要定时对多级数千种业务和账户做数据一致性对账测验。
从技术的角度看,存在四个问题:
- 利用开发简单:应用业务日志,须要业务零碎一直产生日志信息,而后消耗计算资源对不同的日志格局进行解析,把日志信息存储到剖析零碎。由此带来了开发的累赘和资源的节约。
- 数据逻辑割裂:TDSQL 中按工夫分表,只能按确定的时间段进行结算,不能灵便、不便的计算。如计算任意时间段内的数据,按时间段的分表在物理上割裂了数据按工夫的逻辑间断个性,须要指定若干个特定的分表能力进行计算。
- 实时个性失落:如上两个问题,隐含地,意味着进行计算的数据须要导入到一个新的剖析零碎进行计算,导出 / 导入数据的过程也带来了资源和工夫的耗费、使得剖析零碎难以具备实时计算个性。
- 数据管理简单:另外,日志等信息,是历史态数据,须要长期保留。在腾讯公司每日对不同格局的、超过 150 亿条流水日志进行生成、存储、解析与治理等,这成为一个微小的挑战。
古代的数据库系统只保留有数据的以后值,而因存储老本等起因,历史态数据被抛弃。而数据作为重要的资产,不论是以后数据,还是历史上已经存在过的数据,都具备重要价值。因而,历史态数据存储、被剖析、被开掘、被重复应用,是以后互联网等企业的需要。尤其是金融类历史态数据,因为平安、须要被屡次计算的起因,在腾讯公司的计费业务中,带有时态属性的数据被治理的需要日益旺盛。
基于上述起因,腾讯公司基于 TDSQL 关系型数据库研发了时态数据库 T-TDSQL,由数据库系统对立治理海量的全时态数据、以后数据,解决了上述四个业务中的问题。
业务痛点的解决,是基于数据库的特点和业务场景进行深入分析和思考而得以解决的。
因为数据有价值,所以 TDSQL 团队认为:历史数据富裕价值。这是 TDSQL 时态数据库 T -TDSQL 的外围价值观。 因而,咱们给出了 TDSQL 对于数据的新的意识。
TDSQL 认为:
数据的状态属性,标识数据的生命周期轨迹。数据的生命周期分为三个阶段,每个阶段刻画数据的不同状态属性,以标识数据的生命周期轨迹中所处的状态。
- 以后态(Current State):数据项的最新版本的数据,是处于以后阶段的数据。处于以后阶段的数据的状态,称为以后态。
- 历史态(Historical state):数据项在历史上的一个状态,其值是旧值,不是以后值。处于历史阶段的数据的状态,称为历史态。一个数据项的历史态,能够有多个,反映了数据的状态变迁的过程。处于历史态的数据,只能被读取不能再被批改或删除。
- 过渡态(Transitional State):不是数据项的最新的版本也不是历史态版本,处于从以后态向历史态转变的过程中。处于过渡态的数据,称为半衰数据。
这三个状态,涵盖了一个数据项的生命周期,合称为数据全态(full-state),或称为全态数据。在 MVCC 机制下,数据的三种状态均存在;在非 MVCC 机制下,数据只存在历史态和以后态。
- 以后态:MVCC 或封闭并发访问控制机制下,事务提交后的数据的新值处于以后态。
- 历史态:MVCC 机制下,以后沉闷事务列表中最小的事务之前的事务生成的数据,其状态处于历史态。在封闭并发访问控制机制下,事务提交后,提交前的数据的值变为历史态的值,即数据项的旧值处于历史态。
- 过渡态:MVCC 机制下,被读取的版本上尚有沉闷事务(非最新相干事务)在应用,因最新相干事务批改了数据项的值,其最新值曾经处于一个以后态,被读取到的值绝对以后态曾经处于一个历史状态,故其数据状态介于以后态和历史态之间,所以称为过渡态。
数据的双时态属性,别离为无效工夫属性、事务工夫属性。
无效工夫属性示意数据表示的对象在工夫属性上的状况。如 Kate 中学起止工夫是 2000-09-01 到 2003-07-30,而大学起止工夫是 2003-09-01 到 2007-07-30,这里的工夫就是无效工夫。
事务工夫属性示意数据的某个状态的工夫产生时刻。数据具备其时态属性,即在何时数据库系统进行了什么样的操作。某项操作在数据库系统内被封装为事务,而事务具备原子性。因而,咱们采纳了事务标记来标识一个数据的事务时态属性。
从模式上看,无效工夫属性和事务工夫属性,在数据模型中用一般的用户自定义字段进行示意,只是用特定的关键字加以形容,供数据库引擎进行束缚检查和赋值。
TDSQL 团队冀望,构建一个数据库系统,解决如上问题,新零碎应该提供的个性如下:
因而,基于 TDSQL 的 T -TDSQL 时态数据库,有了如下的个性,这些个性,可能涵盖双时态的数据利用、数据安全、数据分析、简化利用开发等四大方面的问题: