镁伽科技黄瑜清:智能自动化给生命科学带来巨大变革
06-18
简介:李海翔,网名“纳海兰兰”,腾讯金融云数据库技术专家。中国人民大学信息学院工程硕士企业导师。
《数据库事务处理的艺术:事务管理和并发访问控制》和《数据库查询优化器的艺术:原理解析与SQL性能优化》的作者受到了广泛的好评。 2020年5月11日,腾讯TDSQL团队在中国数据库技术大会DTCC上带来了腾讯最新的数据库核心技术:TDSQL独创的全状态数据理念和基于历史状态数据的可见性判断算法。
腾讯专家工程师李海翔以“赋能数据——腾讯TDSQL分布式金融级数据库前沿技术”为主题,分享了DTCC的技术内容。在本次分享中,TDSQL基于数据库事务处理的核心技术并发访问控制技术,独创性地提出了全状态数据的概念和基于历史数据的可见性判断算法,并在此基础上提出了全时态数据库。
实施的。以下是本次分享的主要内容。
主要包括TDSQL背景介绍、T-TDSQL原创技术起点、T-TDSQL核心技术要点、T-TDSQL典型应用、T-TDSQL核心概念、项目致谢六个部分。一、TDSQL概述 TDSQL是一个已经稳定运行了十年的分布式数据库。
不仅支持腾讯的账单业务,还在微众银行等金融机构核心业务系统中稳定高效运行四年。许久。
过去几年,TDSQL在技术层面不断进步,开发出许多新特性,如多级分区、热点更新、隐式主键、分布式事务等,不仅有效支持事务型数据库应用,而且还改进了架构。它也正在向Spanner架构迈进,是名副其实的NewSQL系统。
TDSQL分布式事务处理技术取得了长足的进步,不仅在XA的基础上实现了2PC来支持分布式事务的原子提交,而且还在MVCC技术的基础上进行了创新,使得TDSQL事务处理技术在原有技术的基础上并不断发展。 2、原创技术的出发点 TDSQL的原创技术不是为了技术而技术,而是基于业务需求、解决业务问题的创新。
腾讯计费业务系统是全球领先的金融云计费业务系统。该系统包括三个层次:SAAS、PAAS、IAAS。
SAAS层面包括小米大师、云存储、TDSQL等系统。 TDSQL托管账户近亿个。
米大师依靠TDSQL进行金融交易。腾讯充值及相关合作伙伴日流量超过1亿,日处理交易额超过1亿。
财务数据在TDSQL数据库中用于结算、对账、审计、风控数据分析、建立用户画像等。如王者荣耀游戏优惠券的对账业务、用户账户消费充值变动的审核及风控业务等。
为了执行对账和审计等服务,有两个数据源。有些数据源来自不同系统(关系数据库或NoSQL系统)的日志数据,称为流式日志。
但这样的系统每天的日志数据接近100G,并且增量数据按照趋势在快速增长。另外,TDSQL中有些数据是按照时间分表的。
经过一段时间后,按照时间分表的数据需要使用流日志进行对账和计算。对账主要解决几种异常情况: 1、系统存在BUG,或者系统出现故障时表现不符合预期。
这可能会导致发货成功但扣款不成功,或者扣款成功但发货失败。如腾讯视频VIP管理系统的充值、配送等。
2. 避免黑客/内部风险。例如,不法分子绕过业务系统进行自我充值等诈骗活动。
此类对账服务的类型有很多种,不同应用的日志流格式也不完全相同。 TDSQL托管的账户需要定期对数千个多级业务和账户进行数据一致性核对检查。
从技术角度来看,存在四个问题: 1、应用开发复杂:使用业务日志需要业务系统不断生成日志信息,然后消耗计算资源解析不同的日志格式并将日志信息存储在分析系统中。这带来了发展负担和资源浪费。
2、数据逻辑分离:TDSQL按照时间分表,只能按照一定的时间段进行结算,无法灵活方便的计算。例如,计算任意时间段的数据,按时间段的子表物理上分离了数据按时间的逻辑连续性特征,需要指定几个具体的子表来进行计算。
3、实时性的损失:上述两个问题隐含着需要将计算的数据导入到新的分析系统中进行计算。导出/导入数据的过程也带来了资源和时间的消耗,使得分析系统很难具备实时计算的特性。
4、数据管理复杂:另外,日志等信息属于历史数据,需要长期保存。腾讯每天生成、存储、解析和管理超过1亿条不同格式的日志,这已经成为一个巨大的挑战。
现代数据库系统只保留数据的当前值,而历史数据由于存储成本等原因而被丢弃。数据作为一种重要资产,无论是当前数据还是历史上已经存在的数据,都具有重要的价值。
因此,历史数据的存储、分析、挖掘、重复利用是当前互联网等企业的需求。尤其是金融历史数据,由于安全且需要多次计算,腾讯计费业务对具有时间属性的数据管理需求越来越强烈。
基于以上原因,腾讯在TDSQL关系型数据库的基础上开发了时态数据库T-TDSQL。数据库系统对海量的全时态数据和当前数据进行统一管理,解决了上述四个业务问题。
业务痛点的解决是基于数据库特点和业务场景的深入分析和思考。因为数据是有价值的,所以TDSQL团队认为历史数据是有价值的。
这就是TDSQL时态数据库T-TDSQL的核心价值。因此,我们让TDSQL对数据有了新的认识。
TDSQL认为数据的状态属性标识了数据的生命周期轨迹。数据的生命周期分为三个阶段。
每个阶段描述了数据的不同状态属性,以识别数据生命周期轨迹中的状态。 1. 当前状态:数据项的最新版本是当前阶段的数据。
当前阶段数据的状态称为当前状态。 2.历史状态:数据项在历史中的状态。
它的值是旧值,而不是当前值。历史阶段数据的状态称为历史状态。
一个数据项可以有多个历史状态,反映数据状态变化的过程。历史状态的数据只能读取,不能修改或删除。
3、过渡状态:既不是数据项的最新版本,也不是历史版本,正处于从当前状态过渡到历史状态的过程中。处于过渡态的数据称为半衰期数据。
这三种状态涵盖了数据项的生命周期,统称为全状态数据,或者全状态数据。 MVCC机制下,数据的三种状态都存在;在非MVCC机制下,数据只存在于历史状态和当前状态。
1、当前状态:在MVCC或者阻塞并发访问控制机制下,事务提交后数据的新值处于当前状态。 2、历史状态:MVCC机制下,当前活跃交易列表中最小交易之前的交易产生的数据处于历史状态。
在阻塞并发访问控制机制下,事务提交后,提交前的数据值变为历史状态的值,即数据项的旧值处于历史状态。 3. 过渡状态:在MVCC机制下,正在读取的版本上仍然有活动事务(非最新相关事务)正在使用。
由于最新的相关事务修改了该数据项的值,因此其最新值已经处于当前状态并且正在被读取。获得的值相对于当前状态已经处于历史状态,因此其数据状态介于当前状态和历史状态之间,因此称为过渡状态。
数据的双时态属性分别是有效时间属性和交易时间属性。有效时间属性表示数据所表示的对象的时间属性。
例如,凯特中学的起止时间为09-01至07-30,大学的起止时间为09-01至07-30。这里的时间就是有效时间。
事务时间属性表示数据某种状态发生的时间。数据有其时间属性,即数据库系统在什么时间执行了哪些操作。
操作在数据库系统中被封装为事务,并且事务是原子的。因此,我们使用事务标志来识别数据的事务时间属性。
从形式上看,有效时间属性和事务时间属性是用数据模型中普通的用户定义字段来表示的,仅用特定的关键字来描述,供数据库引擎进行约束检查和赋值。 TDSQL团队希望构建一个数据库系统来解决上述问题。
新系统应提供以下功能: 因此,基于TDSQL的T-TDSQL时态数据库具有以下功能。这些功能可以涵盖双时态数据应用。
、数据安全、数据分析、简化应用开发等四大方面: 三、T-TDSQL的核心技术 T-TDSQL的核心技术之一是数据模型、全状态数据模型和双时态数据模型的定义该组合创建了 T-TDSQL。一、T-TDSQL的核心技术 1、数据模型。
在该模型中,全状态数据反映在数据项的历史版本中;时态数据不仅具有交易时态,还具有有效时间时态。全状态数据的历史数据不仅可以追踪数据库系统的操作发生的时间,还可以追踪发生的操作的类型。
例如,在下图中的“操作”列中,可以知道对数据项发生的DML操作是UPDATE还是INSERT还是DELETE。这是一个非常酷的功能,它可以让用户在T-TDSQL系统中实现“一切皆可追溯”的梦想。
2、T-TDSQL的核心技术2:历史数据转储时序历史数据的存储时序是T-TDSQL的另一项核心技术。 T-TDSQL采用全状态数据的概念,巧妙地利用MySQL的回滚段和Purge机制来实现历史数据的转储。
示意图如下: 3、T-TDSQL 2的核心技术,一致性快照点在PostgreSQL。如果实现该技术,可以考虑结合多个版本的存储特性,实现当前状态数据、历史状态、过渡状态的存储分离。
,需要修改现有的数据可见性判断算法、页面存储格式、数据合并时序、缓冲区读写以及堆构建方法。更重要的是,需要实现一个新的数据一致性快照点。
T-TDSQL基于MySQL实现了新的数据一致性快照点的构建,因此可以获取任意时间段(包括历史时间)任意状态的数据。作为一项原创技术,T-TDSQL的核心技术点和思想已以《Efficienttime-interval data extraction in MVCC-based RDBMS》为题发表在万维网杂志上。
详情请参见: 、电子商务、数据仓库、地籍管理系统、土地利用规划系统和地理信息系统发挥着越来越重要的作用。在电子商务和金融业务系统中,存在大量的收入、支出、余额等数据,并且随着业务的推进,不断产生新的数据。
这些数据将在对账、审计、用户画像等业务中发挥重要作用。 。
通过实现事务时态功能,T-TDSQL可以快速、准确、实时地获取这些数据。在互联网金融业务中,对账业务是一项经典业务。
T-TDSQL为腾讯计费对账业务提供了完美的解决方案。 1、对账业务 互联网金融行业对数据准确性要求极高。
在互联网环境中,经常会出现数据不一致或者数据错误的情况。因此,通过对账来降低账户余额等数据错误带来的风险非常重要。
在腾讯的计费业务中,账户余额表(用户)和账户流量表(水)按小时/天进行比对,发现账户余额和交易流量不一致的情况,从而及时纠正错误交易。进行更正。
传统的对账基于固定的时间段(例如分钟/小时/天)。如果要对4月11日的交易进行对账,首先需要获取4月11日的期初余额表和期末余额表,以及当日的交易流量表;然后根据用户ID对账户表进行分组,计算每个用户的期末余额减去期初余额,记录为结果A。
流表根据用户ID分组,对交易金额进行分组求和,记录为结果B。 ,比较每个用户的结果A和结果B。
是的,如果A=B,那么交易就没有问题,否则当天用户的交易就有错误。基于固定时间段的对账,主要存在三个问题: 1、时效性差:错误的交易无法立即发现并反馈,需要延迟固定时间段后才能发现错误。
2.对账不准确:定位错误交易非常复杂。例如:如果用户一天内进行多笔交易,其中一笔交易出现错误,则通过每日对账无法直接定位到具体交易出现错误,而只能在用户层面进行定位,即仍然存在错误。
需要人工参与确认当天错误用户的交易,以查找具体的错误交易。 3、对账不灵活:对账是按照固定的时间段,比如天,当天内的增量数据结算后才能进行对账。
如果需要跨天对账(比如昨天下午截至今天上午),对账所用的数据需要跨多个表来执行,这可能会改变对账业务的流程。2、对账优化基于本文提出的数据模型和增量计算方法,可以很好地解决日常对账问题。
结合3.1.2中的例子,给出增量计算在互联网金融对账业务中的实际应用。 T-TDSQL基于增量计算功能,可以精准比对账户余额表(用户)和账户流量表(水),并在流量层面进行细粒度对账,从而即时发现交易错误,并立即定位出错的那笔交易,消除了定位错误交易的复杂过程。
优化对账的核心思想是:汇总总账,细化明细。优化后的对账效果是:总账快速对账、明细核算准确、无时间限制、任意对账[1]。
对账步骤1——总账对账:首先读取给定对账时间段[s_start,s_stop]内的所有账表数据块,并使用类似于传统对账方法的公式来确认每个数据块情况下的数据的账户,即试算“期末余额总额-期初余额总额=交易变动总额”[2]。期初余额总额表示 s_start 时的总余额,期末余额总额表示 s_stop 时的总余额,总交易变化表示每个区块内的总余额。
根据账户对应关系生成的流程,如果数据块中的总账参差不齐,则意味着存在明细账务错误,因此必须进行步骤2和步骤3所述的准确对账。对账步骤2——精准对账——对账流程:执行以下SQL,将账户余额块与对应的账户流水块进行“快照差异连接”。
返回结果集中的每条记录都会包含{交易前余额、交易后余额、交易变化}。对应的执行效果图如下所示: 精准对账图 对账步骤3 - 精准对账 - 准确含义:对步骤2结果中的每条返回记录进行“交易后余额-交易前余额=交易变化”试算【 3](After-Before=Change)可以用来确认交易是否错误。
如果有任何情况不满足这个等式,那就是错误交易。错误交易主要分为两种:账户报表错误和报表错误。
例如上图中,结果集中的第二个元组不满足试算公式,说明交易ID为2的交易账户余额更新不正确或者交易记录中的交易变动值不正确。在结果集中的第四个元组中,Change字段的值为NULL,这意味着事务流丢失。
通过上图中的表格,我们总结了各种错误情况。这些错误需要在对账过程中发出警报。
3.具有有效时间的时态应用基于T-TDSQL全时态核心技术。本次分享还从双时态角度介绍了典型应用。
如下图所示。4、数据安全应用基于历史状态查询功能。
T-TDSQL系统在数据修正、历史追踪等方面提供灵活、强大的数据安全功能,可以大大简化和加速审计、对账等服务。查询该时间段内插入的数据,进行数据统计和跟踪,比如统计什么时候新开户,什么时候添加异常记录等。
查询该时间段内删除的数据,对于安全和数据统计有很大的作用,如恢复误删除的数据、统计注销账户的人数等。查询时间段内更新的数据,可以追踪数据异常发生的时间以及异常发生前的数据,可用于修复数据异常。
全面查询各州历史数据。在数据回放方面,可以辅助灾后恢复或者用于离线演练;数据统计方面,支持任意时间、空间节点的数据计算,对于对账等业务有很大好处;安全保障方面,简化了错误数据和误删除数据的跟踪和恢复。
以下是一些安全示例:此外,基于全时态数据,可以实现数据回放,更有价值的数据分析和挖掘,并利用AI技术自动调优系统。 5、T-TDSQL核心理念,赋能数据。
为什么T-TDSQL要实现全时态数据库?最初的技术背后,是什么驱使T-TDSQL团队创建这样一个全时态数据库系统?这些问题其实更重要。深挖这些问题的原因,努力倡导原创,是TDSQL团队在致力于技术共享时更加看重的价值因素。
在TDSQL团队看来,“数据是有价值的,历史数据是有价值的”。在商业中,挖掘数据的价值是非常重要的一环。
这也是很多人都在思考的问题。认为任何数据都有价值是有道理的。
因此,思考T-TDSQL项目后的观点是“历史数据是有价值的,业务是剑,技术只是盾牌”。那么,什么是盾牌呢?什么是剑?盾和剑有什么关系?从TDSQL的角度来看,技术只是用来将梦想变成现实的防御工具。
梦想是技术人想要用各种高端尖端的技术解决现实生活中的问题的美好愿景,比如分布式、一致性、快照、RDMA、NVM、AI等各种技术的炫酷运用。完整的数据挖掘。
商业只是发现梦想的进攻性工具。 TDSQL并不提倡业务为王的观点,而是左手盾右手剑,双手都要坚强。
但行走在只有左手盾右手剑的科技世界里,只能圆一个技术人行侠仗义的梦想。其背后,还缺乏灵魂支撑。
历史数据充满价值,在(金融/腾讯/互联网/一切……)业务中,挖掘数据的价值更有意义。但更进一步。
数据的创建是由用户及其企业决定的,他们是数据的创建者。数据库承担着数据管理的职责。
数据库系统也能参与数据的创建吗?在TDSQL团队看来,全职的概念是数据库系统参与数据创建过程的最佳机会。数据库系统为数据分配事务时态,为DML操作时分配事件源,甚至可能分配数据之间的关联关系(5W,下图中的Lineage),这使得数据库系统也成为了数据的创造者。
这就是我们和TDSQL团队技术和业务背后的驱动因素:“为数据赋能”的理念。在“赋能数据”理念的支持下,基于TDSQL的T-TDSQL诞生了。
为数据赋能,让数据拥有更多价值,让数据库成为数据的生产者,参与数据的创造。下图所示,为了给数据赋能,T-TDSQL让数据有时间(双时态,WHEN)、地点(存储的历史表,WHERE)、人物(用户ID,WHO)、对象(所有(统计数据(WHAT)) 、原因(DML等操作,WHY)等元素,使数据不再仅仅是用户使用CREATETABLE语句创建的数据,而是包含了数据库系统创建的各种数据,并且在数据中。
生命周期融入了数据历史,使其对所有数据都具有丰富的深度和价值,通过这些,数据库系统可以更主动地追踪数据的历史,推断数据的变化,并预测数据的未来(世界)。致谢本项目由腾讯发起,研究内容和实施过程得到了中国人民大学数据工程与知识工程教育部重点实验室和腾讯公司的参与和支持。
和支持者。向从思维、理念、技术等多个角度为该项目做出贡献的人们致敬! [1]无时间限制,任意对账:只需在对账SQL语句中指定快照差异即可。
FROM子句涉及的表名不会改变,即对账时使用的数据源不会改变,因此不会影响对账。会计流程。
[2] 电子表格是会计程序中的流程之一。它的简单定义就是检查日记帐中所有交易分录的借方和贷方金额是否存在错误。
但是,在进行试算检查时,应在记录每个交易条目后执行此操作。 [3] 电子表格是会计程序中的流程之一。
它的简单定义就是检查日记帐中所有交易分录的借方和贷方金额是否存在错误。但是,在进行试算检查时,应在记录每个交易条目后执行此操作。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-18
06-17
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用