CN112579556A - 日切数据卸载方法、装置、设备及介质 - Google Patents
日切数据卸载方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112579556A CN112579556A CN201910925714.6A CN201910925714A CN112579556A CN 112579556 A CN112579556 A CN 112579556A CN 201910925714 A CN201910925714 A CN 201910925714A CN 112579556 A CN112579556 A CN 112579556A
- Authority
- CN
- China
- Prior art keywords
- data
- transaction
- daily
- log
- unloading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
- G06F16/212—Schema design and management with details for data modelling support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/12—Accounting
Abstract
本申请提出一种日切数据卸载方法、装置、设备及介质。所述日切数据卸载方法包括:根据卸数命令获取匹配的数据表基础数据;根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;将所述数据表回滚后数据和所述跨天事务数据进行合并处理,得到所述日切数据。
Description
技术领域
本申请涉及数据库技术领域,具体涉及一种日切数据卸载方法、装置、设备及介质。
背景技术
日切,通俗的来说就是更换系统记账的时间,也即会计日期切换。正常情况下,一个交易事务在同一个会计日期内完成,但在会计日期切换时,存在一些交易事务,在会计日期变化前启动(其会计日期为T+0),在会计日期变化后(也即会计日期为T+1)提交,称其为跨天事务。虽然跨天事务在第二天才提交的,但在数据统计时,依然算作前一天的交易,日切数据要包含这些跨天事务。
日切后,即刻有第二天(也即会计日期为T+1)的交易事务开始并且立即完成,可能会出现T+1事务完成比T+0事务更早的现象,因此,在对外联机交易服务24小时不间断运行的前提下,无法在数据库系统中找到一个满足卸载日切数据的时间点(该时间点下所有T+0事务已经提交,而所有T+1事务尚未提交),进而无法从数据库中简单地导出日切数据。然而,利用增订表或增订字段等对基础表数据进行清洗以得到日切数据,也会增加业务系统的逻辑复杂度,使得开发难度加大。
发明内容
本申请提供一种日切数据卸载方法、装置、设备及介质,以在对外交易服务不间断运行的前提下,直接从数据库中卸载满足要求的日切数据。
第一方面,本申请实施例提供一种日切数据卸载方法,应用于关系型数据库,包括:
根据卸数命令获取匹配的数据表基础数据;
根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
将所述数据表回滚后数据和所述跨天事务数据进行合并处理,得到所述日切数据。
第二方面,本申请实施例提供一种日切数据卸载方法,应用于分布式数据库,包括:
通过数据分片所在机器上部署的卸数代理服务,根据卸数命令获取本地匹配的数据表基础数据;
通过所述卸数代理服务,根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
通过所述卸数代理服务,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
通过所述卸数代理服务,将所述跨天事务数据和所述数据表回滚后数据进行合并处理,得到日切分片数据,并发送至卸数控制模块;
通过所述卸数控制模块,在接收到各个所述卸数代理服务发送的所述日切分片数据后,进行数据合并处理,生成与所述分布式数据库对应的所述日切数据。
第三方面,本申请实施例提供一种日切数据卸载装置,应用于关系型数据库,包括:
第一数据表基础数据获取模块,用于根据卸数命令获取匹配的数据表基础数据;
第一数据回滚模块,用于根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
第一跨天数据补充模块,用于根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
第一日切数据生成模块,用于将所述数据表回滚后数据和所述跨天事务数据进行合并处理,得到所述日切数据。
第四方面,本申请实施例提供一种日切数据卸载装置,应用于分布式数据库,包括:
第二数据表基础数据获取模块,用于通过数据分片所在机器上部署的卸数代理服务,根据卸数命令获取本地匹配的数据表基础数据;
第二数据回滚模块,用于通过所述卸数代理服务,根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
第二跨天数据补充模块,用于通过所述卸数代理服务,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
日切分片数据生成模块,用于通过所述卸数代理服务,将所述跨天事务数据和所述数据表回滚后数据进行合并处理,得到日切分片数据,并发送至卸数控制模块;
第二日切数据生成模块,用于通过所述卸数控制模块,在接收到各个所述卸数代理服务发送的所述日切分片数据后,进行数据合并处理,生成与所述分布式数据库对应的所述日切数据。
第五方面,本申请实施例提供一种计算机设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本申请任意实施例所述的应用于关系型数据库的日切数据卸载方法。
第六方面,本申请实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本申请任意实施例所述的应用于关系型数据库的日切数据卸载方法。
第七方面,本申请实施例提供一种计算机设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本申请任意实施例所述的应用于分布式数据库的日切数据卸载方法。
第八方面,本申请实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本申请任意实施例所述的应用于分布式数据库的日切数据卸载方法。
本实施例提供的技术方案,在对外交易业务系统二十四小时持续服务的过程中,能够直接从数据库中卸载出完整的日切数据,并且数据库上游应用系统无需进行额外的业务处理,数据库下游系统也无需进行数据清洗操作,简化了业务开发逻辑,也缩短了日切数据卸载的整体时间开销。
关于本申请的以上实施例和其他方面以及其实现方式,在附图说明、具体实施方式和权利要求中提供更多说明。
附图说明
图1为7*24小时不间断联机交易中事务提交时刻示意图;
图2为本申请提供的一种日切数据卸载方法的流程示意图;
图3为本申请提供的一种适用于关系型数据库的日切数据卸载方案示意图;
图4为本申请提供的日切窗口期内在线事务添加会计日期Hint标记示意图;
图5为本申请提供的一种日切数据卸载步骤示意图;
图6为本申请提供的一种日切数据卸载步骤中数据文件变化示意图;
图7为本申请提供的一种增补跨天事务的流程示意图;
图8为本申请提供的一种日切数据卸载方法的流程示意图;
图9为本申请提供的一种适用于分布式数据库的日切数据卸载方案示意图;
图10为本申请提供的一种日切数据卸载装置的结构示意图;
图11为本申请提供的一种日切数据卸载装置的结构示意图;
图12为本申请提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在描述本申请提供的实施方式之前,对日切数据相关概念进行详细解释。
以分布式数据库为例,分布式数据库作为OLTP(On-Line TransactionProcessing,在线交易系统),需要定期将数据卸载到分析系统(例如数据仓库)中,以供其他系统进行后续数据分析处理。特别地,当天业务运营结束后,要将截止到当天的业务数据卸载到分析系统中,以便在分析系统中对业务情况进行多角度分析。其中,分析系统可能不需要卸载整个系统的所有数据,而是根据分析需要过滤出其中部分数据进行卸载。
在线交易系统严格遵照会计准则处理交易业务。在线交易发生时,应用系统首先获取数据库系统的当前日期,然后向数据库发起增删改查操作,最后在数据库上提交,整个过程称为一个事务(或称交易事务)。每个交易事务确切记录交易发生的日期,进而可以依此进行例如利息计算、业务统计、报表审计等数据计算,这个交易发生的日期称为会计日期。会计日期每天会发生一次变化(通常在凌晨00:00时刻,由前一天切换到第二天),称为会计日期切换(或简称日切)。日切后,要完整地卸载所有会计日期为T+0的交易事务(典型为日切时间点之前启动的交易事务)的数据,而不包含任何会计日期为T+1的交易事务的数据,这些数据称为日切数据。
正常情况下,一个交易事务在同一个会计日期内完成,但在会计日期切换时,会存在一些交易事务,在会计日期变化前启动(也即查询得到其会计日期为T+0),在会计日期变化后(也即会计日期为T+1时)提交,这种交易事务称为跨天事务。虽然跨天事务在第二天才提交的,但在数据统计时,依然算作前一天的交易事务,故日切数据是要包含跨天事务数据的。另外,关键的交易系统需要二十四小时不停机地对外服务,日切后,即刻会有第二天(也即会计日期为T+1)的交易事务启动并立即完成,进而就会出现一种情况,会计日期为T+1的事务会比会计日期为T+0的事务更早完成,如图1所示,若在所有会计日期为T+0的事务完成之后开始卸载数据,则卸载的日切数据中可能包含会计日期为T+1的事务数据,故在数据库系统中无法找到一个明确的时间点,到该时间点时所有会计日期为T+0的事务已经提交,而所有会计日期为T+1事务均尚未提交。因此,无法从数据库中简单地导出需要的日切数据。
在一个示例性实施方式中,图2为本申请提供的一种日切数据卸载方法的流程示意图。该方法适用于在关系型数据库(包括集中式数据库和分布式数据库)中卸载日切数据。该方法可以由本申请提供的应用于关系型数据库的日切数据卸载装置执行,该日切数据卸载装置可以由软件和/或硬件实现,并集成在计算机设备中。
如图2所示,本申请提供的应用于关系型数据库的日切数据卸载方法,包括:
S110、根据卸数命令获取匹配的数据表基础数据。
卸数命令,指的是用于指示开始卸数操作的指令。当接收到卸数命令之后,获取与卸数命令的内容匹配的数据表基础数据。具体的,数据表基础数据为当前时刻数据库中与卸数命令的内容匹配的相关数据表中的基础数据。
在一示例中,所述卸数命令包括:需要卸数的表信息、过滤条件以及过滤字段。
其中,需要卸数的表信息指的是需要进行卸载数据处理的数据表的基本信息,例如可以是数据表表名等;过滤条件指的是需要进行卸载数据处理的数据表中设定数据应该满足的条件,例如是可以是数值范围等;过滤字段指的是需要进行卸载数据处理的数据表中设定数据应该符合的字段信息,例如可以是字段名称等。
假设数据库中包括100个数据表,需要卸载数据的至少其中部分数据表中的全部或部分数据,则可以通过卸数命令来实现。
在一示例中,卸数命令可以通过命令行来实现。
S120、根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据。
日切时间点指的是会计日期切换的时间点。其中,日切时间点之前启动的事务数据(包括日切时间点之前启动、日切时间点之后完成的事务数据)属于日切数据,日切时间点之后启动的事务数据不属于日切数据。
获取数据库日志,数据库日志中包括事务完成的时间戳、事务操作的数据表以及事务完成前后相应数据表中对应的旧行记录值和新行记录值。根据数据库日志,将数据表基础数据中日切时间点之后的数据进行回滚操作,也即回滚至相应事务完成前的记录值。进而,数据表回滚后数据为日切时间点时刻数据库中与卸数命令的内容匹配的相关数据表中的基础数据。
S130、根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据。
获取数据库日志中的时间戳在日切时间点之后的各条日志,根据添加会计日期的事务记录分别查询这些日志对应事务的会计日期,如果查询到的会计日期为会计日期切换之前的日期(也即日切时间点的),则确定该事务为跨天事务,进而可以根据数据库日志获取与跨天事务对应的跨天事务数据。具体的,跨天事务数据为日切时间点之前发起改动、日切时间点之后改动完成的数据,该数据为改动后的新记录值。
S140、将所述数据表回滚后数据和所述跨天事务数据进行合并处理,得到所述日切数据。
在数据表回滚后数据的基础上,补充跨天事务数据,即可得到完整的日切数据。具体的,所述数据表回滚后数据与所述跨天事务数据的合并处理,可以是将跨天事务数据对应追加在数据表回滚后数据之后,也可以是使用跨天事务数据去替换数据表回滚后数据对应的记录值。
现有技术中,一种方法是在会计日期切换期间,对外停止联机交易服务,等待所有会计日期为T+0的事务完成后,再继续对外提供服务。这种方法能够找到一个满足卸载日切数据的时间点,但要求对外停止服务,不满足二十四小时不间断运行的要求。相对于此种实现方法,本实施例提供的技术方案,在对外交易业务系统二十四小时持续服务的过程中,能够直接从数据库中卸载出完整的日切数据。
现有技术中,另一种方法是由数据库的上游应用系统来处理,在会计日期切换前后,将这段时间发生的数据库变化额外地记录在增订表中(增订表里有会计日期字段)。数据库的下游系统卸载数据时,先卸载基础表和增订表,再用增订表对基础表数据进行清洗,将会计日期为T+1的事务数据从基础表里剔除出去,或者是,不采用单独的增订表,而是在基础表里扩展增订字段,会计日期改变后,将需要卸载的字段从基础表里复制到增订字段中。这种方法可以满足二十四小时业务不停机要求,但应用系统在会计日期切换时刻需要做大量的特殊处理,增加了业务逻辑的复杂性,使得应用系统开发的难度加大,同时下游系统做数据清洗不仅复杂,而且对数据做清洗本身也增加了时间开销。相对于此种实现方法,本实施例提供的技术方案,在对外交易业务系统二十四小时持续服务的过程中,不仅能够直接从数据库中卸载出完整的日切数据,而且数据库上游应用系统无需进行额外的业务处理,数据库下游系统也无需进行数据清洗操作,简化了业务开发逻辑,也缩短了日切数据卸载的整体时间开销。
在上述实施例的基础上,提出了上述实施例的变型实施例,在此需要说明的是,为了使描述简要,在变型实施例中仅描述与上述实施例的不同之处。
在一示例中,在S110之前还包括:接收通过卸数客户端模块发送的命令行形式的所述卸数命令。
如图3所示,应用系统是数据库的上层应用,通过数据库接口(例如是SQL接口)向数据库发起增删改查操作,应用系统调用卸数客户端模块,其中,卸数客户端模块可以是一个命令行。卸数客户端模块通过本地命令或者远程接口向数据库服务器中的卸数服务器模块发起卸数请求。卸数服务器模块接收到卸数命令之后,首先根据卸数命令获取匹配的数据表基础数据,其次访问数据库中的数据库日志,根据数据库日志对数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据,再次访问数据库中的添加会计日期的事务记录,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据,最后将所述数据表回滚后数据和所述跨天事务数据进行合并处理,得到所述日切数据。
在一示例中,可以将根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据,具体为:
根据所述数据库日志确定与日切事务对应的日切事务日志;
根据所述数据库日志,将所述数据表基础数据回滚至所述日切事务日志对应时刻,得到所述数据表回滚后数据。
日切事务,指的是应用系统本身的一个操作事务,应用系统在该事务中向数据库的一个业务表(该表由应用系统创建)修改会计日期字段(该字段由应用系统创建)。
具体的,本申请中针对一些特定事务,会在事务请求中的增加预设标记,以使数据库服务器可以根据事务请求中携带的预设标记识别出事务类型。
在一示例中,在应用系统向数据库发起增删改查操作的SQL接口上扩展一个接口字段(例如为Hint),通过Hint向数据库传递事务的特定含义。
具体的,在与日切事务对应的事务请求中增加Hint标记,在Hint标记中携带被切换的会计日期,例如“SET@SWITCHED_ACDATE=2018-04-25;”,其中@SWITCHED_ACDATE为切换会计日期标记,其值为被切换的会计日期,例如是“2018-04-25”,日期事务完成后,会计日期切换成“2018-04-26”。
举例说明,原日切事务的SQL语句为:
SELECT CUR_ACDATE FROM SYSTEM_TABLE;
--当前会计日期为IS 2018-04-25
UPDATE SYSTEM_TABLE SET CUR_ACDATE=CUR_ACDATE+1;
COMMIT;
增加Hint标记后的日切事务的SQL语句为:
SELECT CUR_ACDATE FROM SYSTEM_TABLE;
--当前会计日期为2018-04-25
UPDATE SYSTEM_TABLE SET CUR_ACDATE=CUR_ACDATE+1;
--数据库根据该Hint语句识别日切卸数请求
SET@SWITCHED_ACDATE=2018-04-25;
COMMIT;
在一示例中,在根据所述数据库日志确定与日切事务对应的日切事务日志之前,还包括:
如果接收到的事务请求中包括会计日期切换标记,则确定所述事务请求为日切事务请求;根据所述日切事务请求更新日切事务表,并生成与所述日切事务对应的日切事务日志。
数据库内部维护一张系统表,具体为日切事务表,该表记录了被切换的会计日期(SWITCHED_ACDATE)。数据库服务在解析SQL请求时,遇到会计日期切换标记SET@SWITCHED_ACDATE时,会在上下文中记录该事务的会计日期,当该事务被提交时,数据库将被切换的会计日期更新到日切事务表中,并生成对应的日切事务日志。其中,日切事务表的字段说明如表1所示。
表1日切事务表的字段说明
字段 | 类型 | 说明 |
SWITCHED_ACDATE | DATE | 被切换的会计日期 |
访问数据库中的数据库日志,首先确定与日切事务对应的日切事务日志,然后将数据表基础数据回滚至所述日切事务日志位置,即可得到所述数据表回滚后数据。
在一示例中,可以将根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据,具体为:
获取所述数据库日志中所述日切事务日志时刻之后的目标日志;
根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志,并根据所述跨天事务日志确定与所述数据表基础数据对应的跨天事务数据,其中,所述跨天事务的会计日期为所述日切事务中被切换的会计日期。
访问数据库中的数据库日志,首先确定与日切事务对应的日切事务日志,然后获取数据库日志中所述日切事务日志时刻之后的所有日志(将这些日志称之为目标日志),根据添加会计日期的事务记录分别查询这些目标日志对应事务的会计日期,会计日期为被切换的会计日期的事务即为跨天事务,对应的目标日志即为跨天事务日志,进而查询跨天事务日志即可得到与数据表基础数据对应的跨天事务数据。
在一示例中,可以将根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志,具体为:
依次获取所述目标日志中的一条日志作为当前处理日志;
在事务会计日表中查询所述当前处理日志对应事务的会计日期,如果所述会计日期为所述日切事务中被切换的会计日期,则所述当前处理日志为跨天事务日志,直至遍历完成所述目标日志;其中,所述事务会计日表中存储有事务的会计日期。
数据库内部还维护一张系统表,具体为事务会计日表,该表记录了每个事务对应的会计日期。典型的,事务会计表中记录每个事务的事务编号和会计日期,事务编号为TID(Transaction ID,事务标识)或者是GTID(Global Transaction ID,全局事务标识)。如果事务仅仅是查询操作而没有任何变更操作,则无需将该事务记录在事务会计表中。其中,事务会计日表的字段说明如表2所示。
表2事务会计日表的字段说明
字段 | 类型 | 说明 |
TID/GTID | INT8 | 事务编号 |
ACDATE | DATE | 会计日期 |
在判断目标日志是否是跨天日志时,可以在事务会计表中查询目标日志对应事务的会计日期,如查询到的会计日期为被切换的会计日期,则可确定目标日志对应事务为跨天事务,目标日志为跨天日志。
在一示例中,在根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志之前,还包括:
如果接收到的事务请求中包括会计日期标记,则将所述事务请求的事务编号以及会计日期作为一条事务记录添加至所述事务会计表中。
具体的,应用系统向数据库发起的每个在线事务,可以增加Hint标记,在Hint标记中携带会计日期。例如“SET@ACDATE=2018-04-25;”,其中@ACDATE为事务会计日期标记,其值为该事务开始时向数据库查询的会计日期值,例如“2018-04-25”。
举例说明,原在线事务的SQL语句为:
SELECT CUR_ACDATE FROM SYSTEM_TABLE;
--当前会计日期为2018-04-25
SELECT...;
--当前会计日期为2018-04-26,但业务SQL使用的是2018-04-25
UPDATE ACCOUNT SET BAL=BAL+100,ACDATE=2018-04-25WHERE...;
COMMIT;
增加Hint标记后的在线事务的SQL语句为:
SELECT CUR_ACDATE FROM SYSTEM_TABLE;
--当前会计日期为2018-04-25
SELECT...;
UPDATE ACCOUNT SET BAL=BAL+100,ACDATE=2018-04-25WHERE...;
--数据库根据该Hint语句记录事务会计日期
SET@ACDATE=2018-04-25;
COMMIT;
数据库服务在解析SQL请求时,遇到SET@ACDATE时,会在执行上下文中记录该事务的的会计日期。该事务提交时刻,数据库会将该事务的事务编号(TID/GTID)与会计日期(ACDATE)作为一条记录插入到事务会计日表。如果该事务只做了查询操作而没有变更操作,则无需登记。
在一示例中,如果所述事务请求的请求时间位于日切窗口期内,则所述事务请求中包括会计日期标记;其中,所述日切窗口期为包括所述日切时间点的设定时间段。
在线交易时长一般都比较短,普遍不超过1s。在日切前后预留一个足够长的时间窗口,使得跨天交易事务只会在这个窗口期内开始,并且在这个窗口期内完成,该窗口期称为日切窗口期。日切窗口期由应用系统控制,根据应用对数据库事务最大长度控制,一般要超过交易事务的最大长度,例如将日切窗口期设置为日切前后各5分钟。
典型的,为了明确跨天交易事务,应用系统仅在日切窗口期内为每个事务标记会计日期,事务提交时,在数据库中会记录该会计日期。
具体的,如图4所示,日切窗口期开始后,应用系统向数据库发起的每个在线事务,增加Hint标记,在Hint标记中携带会计日期,例如“SET@ACDATE=2018-04-25;”,直至日切窗口期结束。
对应的,事务会计日表中记录了日切窗口期内所有在线交易事务对应的会计日期。日切窗口期结束后,该事务会计日表已完整登记所有跨天事务。其中,事务会计日表中包含日切窗口期内所有发起并提交完成的会计日期为T+0事务,以及日切窗口期内所有发起并提交完成的会计日期为T+1事务,日切窗口期内所有发起并提交完成的会计日期为T+0事务中的部分事务即为跨天事务。进而,使用该事务会计日表可以过滤出所有的跨天事务。
在一示例中,如图3所示,日切窗口期结束时,应用系统调用卸数客户端模块,由卸数客户端模块将卸数命令通知给卸数服务器模块,卸数服务器模块根据卸数命令获取匹配的数据表基础数据,访问数据库中的数据库日志、日切事务表以及事务会计日表,并根据这些数据,生成对应的日切数据文件。
卸数服务器模块是数据库内部的一个子模块,可以与数据库服务部署在同一台机器里。卸数服务器模块收到卸数命令后,导出数据表基础数据,并根据日切事务表、事务会计日表进行数据回滚和数据补齐,期间需要使用到数据库日志(binlog)。
如图5所示,日切数据卸载由三个步骤构成:第一步,导出数据表基础数据,形成表原始数据文件;第二步,基于日切事务表和数据库日志,将表原始数据文件回滚到日切时刻点,得到剔除T+1事务后的数据文件,此时所有的会计日期为T+1的事务全部被清除;第三步,基于日切事务表和数据库日志,将跨天事务补回到剔除T+1事务后的数据文件中,得到日切数据文件。
如图6所示,数据文件在上述三个步骤发生的变化为:第一步,数据文件中包括会计日期为T+0的事务和会计日期为T+1的事务;第二步,数据文件中会计日期为T+1的事务全部被清除,但跨天事务也一同被清除掉;第三步,跨天事务被回补到数据文件中。
卸数服务器模块收到卸数命令后,开始导出数据表基础数据。根据过滤条件,拼装多条SELECT INTO FILE WHERE...语句,执行批量操作,将对应表的数据导出到数据文件。数据文件通常是CSV格式,每个表一个文件,具有可以以表名作为文件名。当多个表需要导出时,通过预先配置的并发数并行导出N个表,其余表排队等待,直到所有表均完成导出。
数据库日志binlog记录了数据库事务提交时,该事务涉及的表记录发生的变化,包含该记录修改前的行值(old-row-value)和修改后的行值(new-row-value)。另外,由于binlog是按照数据库事务提交的先后顺序写入的,即先提交的事务对应的binlog总是比后提交的事务更早写入日志文件,因此可以依据binlog将数据库回滚到任意时刻。
在本申请中,导出的数据需要先回滚到日切事务提交的时刻。这个时刻的数据不包含任何会计日期为T+1的事务,但是缺少跨天事务。回滚操作从数据导出时刻开始,一直到binlog中日切事务对应的日志(也即日切事务表的SWITCHED_ACDATE字段被更新的日志)。如表3中示例,将导出的数据按binlog日志,反向回滚到日切事务表被更新的位置,也即Timestamp11对应的位置,此时日切之后发生的数据变化都会被回滚还原。
由于跨天事务在会计日期切换之后才提交的,所以回滚会计日期为T+1的事务后得到的数据文件中,还缺少跨天事务的数据,需要将跨天事务增回补到数据文件中。具体的,可以将事务会计日表中属于会计日期为T+0的所有事务,从binlog日志中找出对应的日志,并根据这些日志将回滚后的数据文件中再重新处理一次。
表3 binlog示意表
在一示例中,卸数服务器模块顺序解析binlog,解析的开始位置是日切事务所在的位置,解析的结束位置是导出时刻所在的位置,得到日志解析列表。在日志解析列表中顺序选取一个事务进行解析,首先获取每个事务的TID/GTID,然后判断该TID/GTID在事务会计日表中对应的ACDATE是否为T+0(也即被切换的会计日期),若是,则从binlog中抽取该事务的记录新值,并插入到T+0增补表中,其中,该T+0增补表可以是个内存结构体,也即存储于内存中的一张表,若否,则丢弃,直至将日志解析列表中的各个事务均解析完。最后,使用T+0增补表中的记录行替换之前回滚到日切点的数据文件对应的记录,这里实际是追加操作,至此得到日切数据文件。
如表4所示,假设binlog中日切事务所在位置至导出时刻之间包括两条事务日志,表5所示为事务会计日表示例。
表4 binlog中日切事务所在位置至导出时刻之间的日志示例
主键ID | 时戳序号 | 原TID/GTID | 新TID/GTID | 记录原值 | 记录新值 |
1234 | 1 | 101 | 102 | A,1 | A,2 |
5678 | 2 | 102 | 103 | A,2 | A,3 |
表5事务会计日表示例
TID/GTID | ACDATE |
102 | 4-25 |
103 | 4-26 |
参照图7所示的流程图,开始解析这两条事务日志:时戳序号为1的日志对应事务的新TID/GTID为102,查询事务会计表获知TID/GTID 102对应的ACDATE为4-25,是被切换的会计日期T+0,获取binlog中该事务的最新记录(具体为主键ID以及记录新值)并添加至T+0增补表中;时戳序号为2的日志对应事务的新TID/GTID为103,查询事务会计表获知TID/GTID 103对应的ACDATE为4-26,不是被切换的会计日期T+0,丢弃该事务日志。此时,T+0增补表如表6所示。
表6 T+0增补表示例
主键ID | 最新序号 | 记录新值 |
1234 | 1 | A,2 |
假设回滚至日切点的数据文件如表7所示,将T+0增补表中的数据增补到回滚至日切点的数据文件中。
表7回滚至日切点的数据文件示例
主键ID | 记录值 |
1234 | A,1 |
如果回滚至日切点的数据文件中包括与T+0增补表中数据匹配的记录,则使用T+0增补表中数据去替换匹配的记录值,如果回滚至日切点的数据文件中不包括与T+0增补表中数据匹配的记录,则将T+0增补表中数据添加至回滚至日切点的数据文件中,以此得到日切数据文件。
如表7所示,回滚至日切点的数据文件中包括与T+0增补表中数据匹配(主键ID为5678)的记录,则使用T+0增补表中数据去替换匹配的记录值,得到日切数据文件如表8所示,其中,表8中只示出增补的数据,其余数据未具体示出。
表8日切数据文件示例
主键ID | 记录值 |
1234 | A,2 |
在一个示例性实施方式中,图8为本申请提供的一种日切数据卸载方法的流程示意图。该方法适用于在分布式数据库中卸载日切数据。该方法可以由本申请提供的应用于分布式数据库的日切数据卸载装置执行,该日切数据卸载装置可以由软件和/或硬件实现,并集成在计算机设备中。
如图8所示,本申请提供的应用于分布式数据库的日切数据卸载方法,包括:
S210、通过数据分片所在机器上部署的卸数代理服务,根据卸数命令获取本地匹配的数据表基础数据。
S220、通过所述卸数代理服务,根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据。
S230、通过所述卸数代理服务,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据。
S240、通过所述卸数代理服务,将所述跨天事务数据和所述数据表回滚后数据进行合并处理,得到日切分片数据,并发送至卸数控制模块。
S250、通过所述卸数控制模块,在接收到各个所述卸数代理服务发送的所述日切分片数据后,进行数据合并处理,生成与所述分布式数据库对应的所述日切数据。
针对分布式数据库的日切数据卸载方案总体与上述针对关系型数据库的日切数据卸载方案类似,具体将卸数服务器模块的功能分拆成卸数控制模块和卸数代理两部分,如图9所示,在每个数据分片所在的机器上部署一个卸数代理服务,数据分片1/2/.../n分片对应部署卸数代理1/2/.../n,日切卸数的主要过程由卸数代理服务完成。
具体的,日切数据卸载过程由卸数控制模块统一控制,协调每个卸数代理服务执行导出数据表基础数据、回滚日切事务之后的事务、追补跨天事务等过程。卸数代理服务在本地完成具体的数据表基础数据导出、回滚事务、追补跨天事务的过程,形成各分片对应的日切分片数据文件,处理过程同关系型数据库。各卸数代理服务将本地的日切分片数据文件通过FTP(File Transfer Protocol,文件传输协议)等传送协议发送给卸数控制模块。卸数控制模块将所有日切分片数据文件合并,最后得到分布式数据库的日切数据文件。
本实施例提供的技术方案,在分布式数据库底层记录每个交易事务的会计日期,卸载数据时,在每个数据节点上并行卸载数据,再基于数据库日志回滚机制,回滚会计日期为T+1的分布式事务,从而在分布式数据库上直接卸载得到日切数据。通过在每个数据分片所在的机器上部署卸数代理服务,实现本地卸数操作,减少了数据文件、日志文件在节点之间搬迁的开销。
在一示例中,通过所述卸数代理服务,根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据,包括:
通过所述卸数代理服务,根据所述数据库日志确定与日切事务对应的日切事务日志;根据所述数据库日志,将所述数据表基础数据回滚至所述日切事务日志对应时刻,得到所述数据表回滚后数据。
在一示例中,在通过所述卸数代理服务,根据所述数据库日志确定与日切事务对应的日切事务日志之前,还包括:通过数据库服务,如果接收到的事务请求中包括会计日期切换标记,则确定所述事务请求为日切事务请求;根据所述日切事务请求更新日切事务表,并生成与所述日切事务对应的日切事务日志。
在一示例中,通过所述卸数代理服务,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据,包括:
通过所述卸数代理服务,获取所述数据库日志中所述日切事务日志时刻之后的目标日志;根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志,并根据所述跨天事务日志确定与所述数据表基础数据对应的跨天事务数据,其中,所述跨天事务的会计日期为所述日切事务中被切换的会计日期。
在一示例中,通过所述卸数代理服务,根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志,包括:
通过所述卸数代理服务,依次获取所述目标日志中的一条日志作为当前处理日志;在事务会计日表中查询所述当前处理日志对应事务的会计日期,如果所述会计日期为所述日切事务中被切换的会计日期,则所述当前处理日志为跨天事务日志,直至遍历完成所述目标日志;其中,所述事务会计日表中存储有事务的会计日期。
在一示例中,通过所述卸数代理服务,根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志之前,还包括:
通过数据库服务,如果接收到的事务请求中包括会计日期标记,则将所述事务请求的事务编号以及会计日期作为一条事务记录添加至所述事务会计表中。
在一示例中,如果所述事务请求的请求时间位于日切窗口期内,则所述事务请求中包括会计日期标记;其中,所述日切窗口期为包括所述日切时间点的设定时间段。
在一示例中,通过数据分片所在机器上部署的卸数代理服务,根据卸数命令获取本地匹配的数据表基础数据之前,还包括:
通过数据分片所在机器上部署的卸数代理服务,接收通过所述卸数控制模块发送的所述卸数命令,其中,所述卸数命令是通过卸数客户端模块以命令行形式发送给所述卸数控制模块的。
在一示例中,所述卸数命令包括:需要卸数的表信息、过滤条件以及过滤字段。
本实施方式未尽详细解释之处,请参见前述针对关系型数据库的实施方式,在此不再赘述。
本实施例还提供了日切数据卸载装置,图10为本申请提供的一种日切数据卸载装置的结构示意图。如图10所示,本申请实施例提供的一种应用于关系型数据库的日切数据卸载装置,该日切数据卸载装置可以由软件和/或硬件实现,并集成在计算机设备中,该装置包括:第一数据表基础数据获取模块310、第一数据回滚模块320、第一跨天数据补充模块330和第一日切数据生成模块340。
其中,
第一数据表基础数据获取模块310,用于根据卸数命令获取匹配的数据表基础数据;
第一数据回滚模块320,用于根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
第一跨天数据补充模块330,用于根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
第一日切数据生成模块340,用于将所述数据表回滚后数据和所述跨天事务数据进行合并处理,得到所述日切数据。
本实施例提供的技术方案,在对外交易业务系统二十四小时持续服务的过程中,能够直接从数据库中卸载出完整的日切数据,并且数据库上游应用系统无需进行额外的业务处理,数据库下游系统也无需进行数据清洗操作,简化了业务开发逻辑,也缩短了日切数据卸载的整体时间开销。
在一示例中,第一数据回滚模块320,具体包括:
日切事务日志确定单元,用于根据所述数据库日志确定与日切事务对应的日切事务日志;
第一数据回滚单元,用于根据所述数据库日志,将所述数据表基础数据回滚至所述日切事务日志对应时刻,得到所述数据表回滚后数据。
在一示例中,第一数据回滚模块320,还包括:
日切事务日志生成单元,用于在根据所述数据库日志确定与日切事务对应的日切事务日志之前,如果接收到的事务请求中包括会计日期切换标记,则确定所述事务请求为日切事务请求;根据所述日切事务请求更新日切事务表,并生成与所述日切事务对应的日切事务日志。
在一示例中,第一跨天数据补充模块330,包括:
目标日志模块单元,用于获取所述数据库日志中所述日切事务日志时刻之后的目标日志;
跨天事务确定单元,用于根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志,并根据所述跨天事务日志确定与所述数据表基础数据对应的跨天事务数据,其中,所述跨天事务的会计日期为所述日切事务中被切换的会计日期。
在一示例中,跨天事务确定单元,具体用于依次获取所述目标日志中的一条日志作为当前处理日志;在事务会计日表中查询所述当前处理日志对应事务的会计日期,如果所述会计日期为所述日切事务中被切换的会计日期,则所述当前处理日志为跨天事务日志,直至遍历完成所述目标日志;其中,所述事务会计日表中存储有事务的会计日期。
在一示例中,第一跨天数据补充模块330,还包括:
事务会计表生成单元,用于在根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志之前,如果接收到的事务请求中包括会计日期标记,则将所述事务请求的事务编号以及会计日期作为一条事务记录添加至所述事务会计表中。
在一示例中,如果所述事务请求的请求时间位于日切窗口期内,则所述事务请求中包括会计日期标记;其中,所述日切窗口期为包括所述日切时间点的设定时间段。
在一示例中,上述装置还包括:卸数命令接收模块,用于在根据卸数命令获取匹配的数据表基础数据之前,接收通过卸数客户端模块发送的命令行形式的所述卸数命令。
在一示例中,所述卸数命令包括:需要卸数的表信息、过滤条件以及过滤字段。
本实施例提供的应用于关系型数据库的日切数据卸载装置用于实现如本申请实施例所述的应用于关系型数据库的日切数据卸载方法,本实施例提供的应用于关系型数据库的日切数据卸载装置实现原理和技术效果与本申请实施例所述的应用于关系型数据库的日切数据卸载方法类似,此处不再赘述。
本实施例还提供了日切数据卸载装置,图11为本申请提供的一种日切数据卸载装置的结构示意图。如图11所示,本申请实施例提供的一种应用于分布式数据库的日切数据卸载装置,该日切数据卸载装置可以由软件和/或硬件实现,并集成在计算机设备中,该装置包括:第二数据表基础数据获取模块410、第二数据回滚模块420、第二跨天数据补充模块430、日切分片数据生成模块440和第二日切数据生成模块450。其中,
第二数据表基础数据获取模块410,用于通过数据分片所在机器上部署的卸数代理服务,根据卸数命令获取本地匹配的数据表基础数据;
第二数据回滚模块420,用于通过所述卸数代理服务,根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
第二跨天数据补充模块430,用于通过所述卸数代理服务,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
日切分片数据生成模块440,用于通过所述卸数代理服务,将所述跨天事务数据和所述数据表回滚后数据进行合并处理,得到日切分片数据,并发送至卸数控制模块;
第二日切数据生成模块450,用于通过所述卸数控制模块,在接收到各个所述卸数代理服务发送的所述日切分片数据后,进行数据合并处理,生成与所述分布式数据库对应的所述日切数据。
本实施例提供的技术方案,在分布式数据库底层记录每个交易事务的会计日期,卸载数据时,在每个数据节点上并行卸载数据,再基于数据库日志回滚机制,回滚会计日期为T+1的分布式事务,从而在分布式数据库上直接卸载得到日切数据。通过在每个数据分片所在的机器上部署卸数代理服务,实现本地卸数操作,减少了数据文件、日志文件在节点之间搬迁的开销。
本实施例提供的应用于分布式数据库的日切数据卸载装置用于实现如本申请实施例所述的应用于分布式数据库的日切数据卸载方法,本实施例提供的应用于分布式数据库的日切数据卸载装置实现原理和技术效果与本申请实施例所述的应用于分布式数据库的日切数据卸载方法类似,此处不再赘述。
本申请实施例提供了一种计算机设备,图12为本申请提供的一种计算机设备的结构示意图。如图12所示,本申请提供的计算机设备,包括:一个或多个处理器510和存储装置520;该计算机设备的处理器510可以是一个或多个,图12中以一个处理器510为例;存储装置520用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器510执行,使得所述一个或多个处理器510实现如本申请实施例中所述的应用于关系型数据库的日切数据卸载方法或者应用于分布式数据库的日切数据卸载方法。
计算机设备中的处理器510、存储装置520可以通过总线或其他方式连接,图12中以通过总线连接为例。
存储装置520作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序以及模块,如本申请实施例所述应用于关系型数据库的日切数据卸载方法对应的程序指令/模块(例如,应用于关系型数据库的日切数据卸载装置中的第一数据表基础数据获取模块310、第一数据回滚模块320、第一跨天数据补充模块330和第一日切数据生成模块340),又如本申请实施例所述应用于分布式数据库的日切数据卸载方法对应的程序指令/模块(例如,应用于分布式数据库的日切数据卸载装置中的第二数据表基础数据获取模块410、第二数据回滚模块420、第二跨天数据补充模块430、日切分片数据生成模块440和第二日切数据生成模块450)。存储装置520可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储装置520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
本申请实施例还提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例中任一所述的应用于关系型数据库的日切数据卸载方法或本申请实施例中任一所述的应用于分布式数据库的日切数据卸载方法。
其中,应用于关系型数据库的日切数据卸载方法包括:
根据卸数命令获取匹配的数据表基础数据;
根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
将所述数据表回滚后数据和所述跨天事务数据进行合并处理,得到所述日切数据。
应用于分布式数据库的日切数据卸载方法包括:
通过数据分片所在机器上部署的卸数代理服务,根据卸数命令获取本地匹配的数据表基础数据;
通过所述卸数代理服务,根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
通过所述卸数代理服务,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
通过所述卸数代理服务,将所述跨天事务数据和所述数据表回滚后数据进行合并处理,得到日切分片数据,并发送至卸数控制模块;
通过所述卸数控制模块,在接收到各个所述卸数代理服务发送的所述日切分片数据后,进行数据合并处理,生成与所述分布式数据库对应的所述日切数据。
可选的,该计算机可执行指令在由计算机处理器执行时还可以用于执行本申请实施例中任一所述的应用于关系型数据库的日切数据卸载方法或本申请实施例中任一所述的应用于分布式数据库的日切数据卸载方法。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
值得注意的是,上述应用于关系型数据库的日切数据卸载装置或者应用于分布式数据库的日切数据卸载装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
以上所述,仅为本申请的示例性实施例而已,并非用于限定本申请的保护范围。
本领域内的技术人员应明白,术语用户终端涵盖任何适合类型的无线用户设备,例如移动电话、便携数据处理装置、便携网络浏览器或车载移动台。
一般来说,本申请的多种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实现。例如,一些方面可以被实现在硬件中,而其它方面可以被实现在可以被控制器、微处理器或其它计算装置执行的固件或软件中,尽管本申请不限于此。
本申请的实施例可以通过移动装置的数据处理器执行计算机程序指令来实现,例如在处理器实体中,或者通过硬件,或者通过软件和硬件的组合。计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。
本申请附图中的任何逻辑流程的框图可以表示程序步骤,或者可以表示相互连接的逻辑电路、模块和功能,或者可以表示程序步骤与逻辑电路、模块和功能的组合。计算机程序可以存储在存储器上。存储器可以具有任何适合于本地技术环境的类型并且可以使用任何适合的数据存储技术实现,例如但不限于只读存储器(ROM)、随机访问存储器(RAM)、光存储器装置和系统(数码多功能光碟DVD或CD光盘)等。计算机可读介质可以包括非瞬时性存储介质。数据处理器可以是任何适合于本地技术环境的类型,例如但不限于通用计算机、专用计算机、微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、可编程逻辑器件(FGPA)以及基于多核处理器架构的处理器。
通过示范性和非限制性的示例,上文已提供了对本申请的示范实施例的详细描述。但结合附图和权利要求来考虑,对以上实施例的多种修改和调整对本领域技术人员来说是显而易见的,但不偏离本发明的范围。因此,本发明的恰当范围将根据权利要求确定。
Claims (14)
1.一种日切数据卸载方法,其特征在于,应用于关系型数据库,包括:
根据卸数命令获取匹配的数据表基础数据;
根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
将所述数据表回滚后数据和所述跨天事务数据进行合并处理,得到所述日切数据。
2.根据权利要求1所述的方法,其特征在于,根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据,包括:
根据所述数据库日志确定与日切事务对应的日切事务日志;
根据所述数据库日志,将所述数据表基础数据回滚至所述日切事务日志对应时刻,得到所述数据表回滚后数据。
3.根据权利要求2所述的方法,其特征在于,在根据所述数据库日志确定与日切事务对应的日切事务日志之前,还包括:
如果接收到的事务请求中包括会计日期切换标记,则确定所述事务请求为日切事务请求;
根据所述日切事务请求更新日切事务表,并生成与所述日切事务对应的日切事务日志。
4.根据权利要求2或3所述的方法,其特征在于,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据,包括:
获取所述数据库日志中所述日切事务日志时刻之后的目标日志;
根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志,并根据所述跨天事务日志确定与所述数据表基础数据对应的跨天事务数据,其中,所述跨天事务的会计日期为所述日切事务中被切换的会计日期。
5.根据权利要求4所述的方法,其特征在于,根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志,包括:
依次获取所述目标日志中的一条日志作为当前处理日志;
在事务会计日表中查询所述当前处理日志对应事务的会计日期,如果所述会计日期为所述日切事务中被切换的会计日期,则所述当前处理日志为跨天事务日志,直至遍历完成所述目标日志;
其中,所述事务会计日表中存储有事务的会计日期。
6.根据权利要求5所述的方法,其特征在于,在根据所述添加会计日期的事务记录,在所述目标日志中确定与跨天事务对应的跨天事务日志之前,还包括:
如果接收到的事务请求中包括会计日期标记,则将所述事务请求的事务编号以及会计日期作为一条事务记录添加至所述事务会计表中。
7.根据权利要求6所述的方法,其特征在于,还包括:
如果所述事务请求的请求时间位于日切窗口期内,则所述事务请求中包括会计日期标记;其中,所述日切窗口期为包括所述日切时间点的设定时间段。
8.根据权利要求1所述的方法,其特征在于,在根据卸数命令获取匹配的数据表基础数据之前,还包括:
接收通过卸数客户端模块发送的命令行形式的所述卸数命令。
9.根据权利要求1或8所述的方法,其特征在于,所述卸数命令包括:需要卸数的表信息、过滤条件以及过滤字段。
10.一种日切数据卸载方法,其特征在于,应用于分布式数据库,包括:
通过数据分片所在机器上部署的卸数代理服务,根据卸数命令获取本地匹配的数据表基础数据;
通过所述卸数代理服务,根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
通过所述卸数代理服务,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
通过所述卸数代理服务,将所述跨天事务数据和所述数据表回滚后数据进行合并处理,得到日切分片数据,并发送至卸数控制模块;
通过所述卸数控制模块,在接收到各个所述卸数代理服务发送的所述日切分片数据后,进行数据合并处理,生成与所述分布式数据库对应的所述日切数据。
11.一种日切数据卸载装置,其特征在于,应用于关系型数据库,包括:
第一数据表基础数据获取模块,用于根据卸数命令获取匹配的数据表基础数据;
第一数据回滚模块,用于根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
第一跨天数据补充模块,用于根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
第一日切数据生成模块,用于将所述数据表回滚后数据和所述跨天事务数据进行合并处理,得到所述日切数据。
12.一种日切数据卸载装置,其特征在于,应用于分布式数据库,包括:
第二数据表基础数据获取模块,用于通过数据分片所在机器上部署的卸数代理服务,根据卸数命令获取本地匹配的数据表基础数据;
第二数据回滚模块,用于通过所述卸数代理服务,根据数据库日志对所述数据表基础数据中日切时间点之后的数据进行回滚操作,得到数据表回滚后数据;
第二跨天数据补充模块,用于通过所述卸数代理服务,根据所述数据库日志以及添加会计日期的事务记录,得到与所述数据表基础数据对应的跨天事务数据;
日切分片数据生成模块,用于通过所述卸数代理服务,将所述跨天事务数据和所述数据表回滚后数据进行合并处理,得到日切分片数据,并发送至卸数控制模块;
第二日切数据生成模块,用于通过所述卸数控制模块,在接收到各个所述卸数代理服务发送的所述日切分片数据后,进行数据合并处理,生成与所述分布式数据库对应的所述日切数据。
13.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9任一所述的日切数据卸载方法,或者如权利要求10所述的日切数据卸载方法。
14.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-9任一所述的日切数据卸载方法,或者如权利要求10所述的日切数据卸载方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910925714.6A CN112579556A (zh) | 2019-09-27 | 2019-09-27 | 日切数据卸载方法、装置、设备及介质 |
PCT/CN2020/114819 WO2021057515A1 (zh) | 2019-09-27 | 2020-09-11 | 日切数据卸载方法、装置、设备及介质 |
EP20867264.2A EP4036749A4 (en) | 2019-09-27 | 2020-09-11 | METHOD, APPARATUS, DEVICE FOR DATE SWITCHING DATA OFFLOADING AND MEDIUM |
JP2022519553A JP7341330B2 (ja) | 2019-09-27 | 2020-09-11 | 日付切替データオフロード方法、装置、設備及び媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910925714.6A CN112579556A (zh) | 2019-09-27 | 2019-09-27 | 日切数据卸载方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112579556A true CN112579556A (zh) | 2021-03-30 |
Family
ID=75110472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910925714.6A Pending CN112579556A (zh) | 2019-09-27 | 2019-09-27 | 日切数据卸载方法、装置、设备及介质 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP4036749A4 (zh) |
JP (1) | JP7341330B2 (zh) |
CN (1) | CN112579556A (zh) |
WO (1) | WO2021057515A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113505110A (zh) * | 2021-07-08 | 2021-10-15 | 中国工商银行股份有限公司 | 双日志面跨日切期间的防重方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113806454B (zh) * | 2021-09-24 | 2023-06-06 | 四川新网银行股份有限公司 | 一种解决数据仓库账务日切测试数据采集的方法及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7143099B2 (en) * | 2001-02-08 | 2006-11-28 | Amdocs Software Systems Limited | Historical data warehousing system |
JP3914026B2 (ja) | 2001-11-01 | 2007-05-16 | グローリー株式会社 | デビット端末装置、デビット集計方法およびプログラム |
CN1210669C (zh) * | 2003-12-29 | 2005-07-13 | 兴业银行股份有限公司 | 实现不间断服务的数据处理方法和系统 |
JP4575762B2 (ja) | 2004-06-03 | 2010-11-04 | 株式会社日立製作所 | データ処理方法および装置並びにストレージ装置およびその処理プログラム |
CN101620703B (zh) * | 2008-07-04 | 2013-10-16 | 阿里巴巴集团控股有限公司 | 一种缓冲记账方法及装置 |
CN102567912A (zh) * | 2010-12-14 | 2012-07-11 | 中国移动通信集团湖南有限公司 | 一种会计日期的切换方法及业务清结算系统 |
US20120191583A1 (en) * | 2011-01-21 | 2012-07-26 | Bank Of America Corporation | Virtual transaction cutoff |
CN106981021A (zh) * | 2017-03-28 | 2017-07-25 | 中国工商银行股份有限公司 | 一种实现连续服务的数据处理方法及装置 |
CN109146653B (zh) * | 2018-07-06 | 2022-11-22 | 南京星云数字技术有限公司 | 一种基于分布式环境的用于账务日切的核对方法及装置 |
-
2019
- 2019-09-27 CN CN201910925714.6A patent/CN112579556A/zh active Pending
-
2020
- 2020-09-11 WO PCT/CN2020/114819 patent/WO2021057515A1/zh active Application Filing
- 2020-09-11 JP JP2022519553A patent/JP7341330B2/ja active Active
- 2020-09-11 EP EP20867264.2A patent/EP4036749A4/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113505110A (zh) * | 2021-07-08 | 2021-10-15 | 中国工商银行股份有限公司 | 双日志面跨日切期间的防重方法及装置 |
CN113505110B (zh) * | 2021-07-08 | 2024-03-15 | 中国工商银行股份有限公司 | 双日志面跨日切期间的防重方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
JP7341330B2 (ja) | 2023-09-08 |
EP4036749A4 (en) | 2023-01-04 |
JP2022550380A (ja) | 2022-12-01 |
EP4036749A1 (en) | 2022-08-03 |
WO2021057515A1 (zh) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321387B (zh) | 数据同步方法、设备及终端设备 | |
CN110727727B (zh) | 一种数据库的统计方法及装置 | |
CN108875077B (zh) | 数据库的列存储方法、装置、服务器及存储介质 | |
US10409800B2 (en) | Priority queue for exclusive locks | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
US9659021B1 (en) | Client based backups and backup indexing | |
CN113420026B (zh) | 数据库表结构变更方法、装置、设备及存储介质 | |
WO2021057515A1 (zh) | 日切数据卸载方法、装置、设备及介质 | |
US10545988B2 (en) | System and method for data synchronization using revision control | |
CN105138691A (zh) | 分析用户业务量的方法和系统 | |
US10241716B2 (en) | Global occupancy aggregator for global garbage collection scheduling | |
CN113256355B (zh) | 一种积分权益实时确定方法、装置、介质、设备和系统 | |
US11455286B2 (en) | History of slowly changing dimensions | |
CN114416703A (zh) | 数据完整性自动监控方法、装置、设备及介质 | |
CN104317820A (zh) | 报表的统计方法和装置 | |
CN108121514B (zh) | 元信息更新方法、装置、计算设备及计算机存储介质 | |
US10255237B2 (en) | Isolation level support in distributed database system | |
CN111061719B (zh) | 数据收集方法、装置、设备和存储介质 | |
CN113986941A (zh) | 事务批量处理方法及装置 | |
CN113127056B (zh) | 一种信息处理方法、装置、设备及可读存储介质 | |
CN111240891A (zh) | 基于数据库多表间数据一致性的数据恢复方法及装置 | |
US11132225B2 (en) | System and method for management of processing task across plurality of processors | |
CN113704284A (zh) | 一种基于数据模型查询数据的方法及装置 | |
CN114328498A (zh) | 一种流数据存储方法及装置 | |
CN117609708A (zh) | 分布式全局逻辑日志生成方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210427 Address after: 518057 Nanshan District science and Technology Industrial Park, Guangdong high tech Industrial Park, ZTE building Applicant after: ZTE Corp. Applicant after: CHINA CITIC BANK Co.,Ltd. Address before: 518057 Nanshan District science and Technology Industrial Park, Guangdong high tech Industrial Park, ZTE building Applicant before: ZTE Corp. |
|
TA01 | Transfer of patent application right | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |