T-TDSQL 的典型应用
时态信息处理已经成为许多新一代数据库与信息系统的关键技术,特别是在金融领域 、电子商务、数据仓库、地籍管理系统、土地利用规划系统、地理信息系统中扮演着日益重要的角色。
电子商务、金融业务系统中,存在大量的收入、支出、余额等数据,并且随着业务的推进,新数据源源不断地产生,这些数据将在对账、审计、用户画像等业务中发挥重要作用。通过实现事务时态功能,T-TDSQL 能快速、精细、实时地获取这些数据。
在互联网金融业务中,对账业务是一个经典的业务。
T-TDSQL 为腾讯的计费对账业务提供了完美的解决方案。
1.对账业务
互联网金融行业对数据的准确性要求极高,而在互联网环境中,数据不一致或数据错误时有发生,因此,通过对账来降低账户余额等数据错误造成的风险十分重要。
在腾讯计费业务中,采用将账户余额表(user)和账户流水表(water)按小时/天为周期进行比对的方式,来发现账户余额与交易流水的不一致现象,从而及时对错误交易进行修正。
传统的对账采用按固定时间段(如分钟/小时/天)为单位进行对账。如现对 2018 年 4 月 11 日的交易进行对账,首先需要得到 4 月 11 日期初账户余额表和期末账户余额表,以及当天的交易流水表;然后对账户表通过按用户 ID 分组,并计算每个用户的期末余额减去期初余额,记为结果 A,对流水表按用户 ID 分组,并将交易金额分组求和,记为结果 B;最后将每个用户的结果 A 和结果 B 进行比对,如果 A=B,则交易没有问题,否则该用户在当天的交易存在错误。
对于按固定时间段对账,主要存在以下三个问题:
**1. 时效性差:**对于错误交易,不能立即发现并反馈,延迟了以固定时间段为单位的一段时间后才能发现错误。
**2. 对账不精准:**定位错误交易较复杂。例如:如果用户在一天内发生的多笔交易,其中一笔出现了错误,通过按天对账的方式不能直接定位到具体的哪条交易出现错误,而只能定位到用户级别,即仍然需要人工参与,将该错误用户的当天交易都确认一遍,才能找到具体的错误交易。
**3. 对账不灵活:**按固定时间段对账,如以天为单位,则只能等这一天内的增量数据沉淀下来,才能进行对账,如果有跨天对账需求(如昨天下午至今天上午),对账所用数据需要跨多个表才能执行,这可能改变对账业务的流程。
2.对账优化
基于本文提出的数据模型和增量计算方法,可以很好的解决按天对账所存在的问题。结合 3.1.2 中的示例,我们给出在互联网金融的对账业务中,增量计算的实际应用。
T-TDSQL 可以基于增量计算的功能将账户余额表(user)和账户流水表(water)进行精准比对,进行流水级别的细粒度对账,从而即时发现交易错误,并可以立即定位到错误的那一条交易,省去繁杂的错误交易定位过程。
优化后的对账的核心思想是:总账算摘要、细账笔笔精。
优化后的对账的效果是:总账快对、细账精确、不受时限、任意对账[1]。
**对账步骤 1—总账对账:**首先读取给出对账时间段[s_start,s_stop]内的所有账户表数据块,对每个数据块内数据采用与传统对账方式类似的公式来确认账户情况,即进行“总期末余额-总期初余额=总交易变动”试算[2],总期初余额代表 s_start 时的总余额,总期末余额代表 s_stop 时的总余额,总交易变动代表每块内账户对应产生的流水,如果有数据块内的总账不平,意味着有细账错误,因此要进行步骤 2、3 所描述的精准对账。
**对账步骤 2—精准对账—对账过程:**执行如下 SQL,将账户余额块和对应账户流水块进行“快照差连接”,返回结果集中每条记录将含有{交易前余额,交易后余额,交易变动}。
**对账步骤 3—精准对账—精准之意:**对步骤 2 结果里的每一条返回记录进行“交易后余额-交易前余额=交易变动”的试算[3](After-Before=Change),即可确认交易是否有误。如果有不满足此等式的情况存在,即为错误交易。
错误交易主要分为账户表错误和流水表错误两种。例如,上图中,结果集中第 2 条元组,不满足试算公式,表明流水 ID 为 2 的交易进行了错误的帐户余额更新或流水记录的交易变动值出错。结果集中的第 4 条元组,Change 字段的值为 NULL,代表该条交易的流水缺失。通过上图中的表,我们对各种错误情况进行总结,这些错误,都需要在对账过程中进行报警。
3.有效时间的时态类应用
基于 T-TDSQL 的全时态核心技术,本次分享还从双时态的角度对典型应用做了介绍。
4.数据安全类应用
基于历史状态查询这一特性,T-TDSQL 系统在数据订正、历史追踪等方面,提供灵活强大的数据安全保障功能,可以大大简化和加快审计、对账等业务。
查询时间段内插入的数据,用于数据统计和追踪,如统计新开账户、异常记录何时被添加等。
查询时间段内删除的数据,在安全保障和数据统计等方面作用显著,如恢复误删的数据、统计销户人数等。
查询时间段内更新的数据,能够追踪数据异常的发生时间和发生异常前的数据,用于数据异常的修复。
综合查询所有状态的历史态数据,在数据重演方面,可以辅助灾后恢复,或用于线下演练;数据统计方面,因支持任意时空节点的数据计算,对对账等业务大有裨益;安全保障方面,简化了错误数据、误删数据的追踪和恢复。
除此之外,基于全时态态数据,实现数据重演、更有价值的数据分析和挖掘、使用 AI 技术对系统自动调优等成为可能。
评论