为数据赋能:腾讯TDSQL分布式金融级数据库前沿技术 (3)

在PostgreSQL中,如果实现本技术,可以考虑结合多版本的存储特点,实现当前态数据与历史态、过渡态的存储分离,这需要修改已有的数据可见性判断算法、页面存储格式、数据的合并时机、缓冲区的读写和heap的构造方式等,更重要的是要实现新的数据一致性快照点。

而T-TDSQL基于MySQL实现了新的数据一致性快照点的构建,因而可以获取任何时间段(包括历史发生过的时间)上的任何状态的数据。

img

img

作为原创技术,T-TDSQL的核心技术点及其思路,相关论文已经在World Wide Web journal上以题为《Efficienttime-interval data extraction in MVCC-based RDBMS》发表,详情可参见:

*https://link.springer.com/article/10.1007/s11280-018-0552-7*

四、T-TDSQL的典型应用

时态信息处理已经成为许多新一代数据库与信息系统的关键技术,特别是在金融领域 、电子商务、数据仓库、地籍管理系统、土地利用规划系统、地理信息系统中扮演着日益重要的角色。

电子商务、金融业务系统中,存在大量的收入、支出、余额等数据,并且随着业务的推进,新数据源源不断地产生,这些数据将在对账、审计、用户画像等业务中发挥重要作用。通过实现事务时态功能,T-TDSQL能快速、精细、实时地获取这些数据。

在互联网金融业务中,对账业务是一个经典的业务。

T-TDSQL为腾讯的计费对账业务提供了完美的解决方案。

1.对账业务

互联网金融行业对数据的准确性要求极高,而在互联网环境中,数据不一致或数据错误时有发生,因此,通过对账来降低账户余额等数据错误造成的风险十分重要。

在腾讯计费业务中,采用将账户余额表(user)和账户流水表(water)按小时/天为周期进行比对的方式,来发现账户余额与交易流水的不一致现象,从而及时对错误交易进行修正。

传统的对账采用按固定时间段(如分钟/小时/天)为单位进行对账。如现对2018年4月11日的交易进行对账,首先需要得到4月11日期初账户余额表和期末账户余额表,以及当天的交易流水表;然后对账户表通过按用户ID分组,并计算每个用户的期末余额减去期初余额,记为结果A,对流水表按用户ID分组,并将交易金额分组求和,记为结果B;最后将每个用户的结果A和结果B进行比对,如果A=B,则交易没有问题,否则该用户在当天的交易存在错误。

对于按固定时间段对账,主要存在以下三个问题:

时效性差:对于错误交易,不能立即发现并反馈,延迟了以固定时间段为单位的一段时间后才能发现错误。

对账不精准:定位错误交易较复杂。例如:如果用户在一天内发生的多笔交易,其中一笔出现了错误,通过按天对账的方式不能直接定位到具体的哪条交易出现错误,而只能定位到用户级别,即仍然需要人工参与,将该错误用户的当天交易都确认一遍,才能找到具体的错误交易。

对账不灵活:按固定时间段对账,如以天为单位,则只能等这一天内的增量数据沉淀下来,才能进行对账,如果有跨天对账需求(如昨天下午至今天上午),对账所用数据需要跨多个表才能执行,这可能改变对账业务的流程。

2.对账优化

基于本文提出的数据模型和增量计算方法,可以很好的解决按天对账所存在的问题。结合3.1.2中的示例,我们给出在互联网金融的对账业务中,增量计算的实际应用。

T-TDSQL可以基于增量计算的功能将账户余额表(user)和账户流水表(water)进行精准比对,进行流水级别的细粒度对账,从而即时发现交易错误,并可以立即定位到错误的那一条交易,省去繁杂的错误交易定位过程。

优化后的对账的核心思想是:总账算摘要、细账笔笔精。

优化后的对账的效果是:总账快对、细账精确、不受时限、任意对账[1]。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzggg.html