CN116049142A - 数据处理方法、装置、电子设备及存储介质 - Google Patents
数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116049142A CN116049142A CN202310002866.5A CN202310002866A CN116049142A CN 116049142 A CN116049142 A CN 116049142A CN 202310002866 A CN202310002866 A CN 202310002866A CN 116049142 A CN116049142 A CN 116049142A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- file
- partition
- cleaning
- 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/214—Database migration 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据处理方法、装置、电子设备及存储介质。该方法应用于单元化架构,包括:响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,以根据导入或导出配置信息,执行将数据文件导入至数据库的文件列表中,或执行从该文件列表导出数据文件;响应于数据补偿请求,获取数据库的补偿数据表的表类型,根据表类型对数据库在迁移数据过程中缺失的待补偿数据进行补偿处理;响应于数据清理请求,获取数据库的数据清理配置信息;根据清理配置信息确定多个数据清理线程,多个数据清理线程各自对应的数据清理方式和数据清理任务;控制多个数据清理线程采用各自对应的数据清理方式执行各自的数据清理任务。
Description
技术领域
本申请涉及大数据处理技术,可用于金融科技领域或其他相关领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
目前,单元架构下的异构数据库,如Oracle数据库和MySQL数据库,涉及的数据处理量日益增大,数据表类型繁多,使得数据库执行数据的导入导出操作时,配置繁琐,实现复杂;执行数据迁移处理时,无法有效及时补偿缺失数据,无法有效维护数据一致性;还难以对数据库中历史数据进行清理或者备份。
发明内容
本申请提供一种数据处理方法、装置、电子设备及存储介质,用以实现对单元架构下的异构数据库的数据导入或导出处理,迁移数据的补偿处理,历史数据的清理处理。
一方面,本申请提供一种数据处理方法,应用于单元化架构,上述方法包括:
响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,以根据上述导入或导出配置信息,执行将数据文件导入至上述数据库的文件列表中的导入操作,或者执行从上述数据库的文件列表导出上述数据文件的导出操作;
响应于数据补偿请求,获取上述数据库的补偿数据表及补偿数据表的表类型,以上述根据上述补偿数据表的表类型,对上述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理;
响应于数据清理请求,获取上述数据库的数据清理配置信息;并根据上述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;以控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务。
进一步地,上述响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,包括:响应于上述数据导入请求获取到上述数据库的导入配置参数;
上述根据上述导入或导出配置信息,执行将数据文件导入至上述数据库的文件列表中的导入操作,包括:根据上述导入配置参数,获取待导入至上述数据库的上述数据文件,以及上述数据文件的文件名;若上述数据文件的文件名包含预定后缀名和统配符,则确定上述数据库中与上述数据文件匹配的文件列表;获取上述待导入的数据文件的文件结构和上述文件列表的列表结构,以创建文件导入器;采用上述文件导入器将上述数据文件导入至上述文件列表。
进一步地,上述响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,包括:响应于上述数据导出请求获取到上述数据库的导出配置参数;
上述根据上述导入或导出配置信息,执行从上述数据库的文件列表导出上述数据文件的导出操作,包括:根据上述导出配置参数,获取待导出上述数据库的数据文件所在的文件列表;获取待导出的数据文件的文件结构和上述文件列表的列表结构,以创建文件导出器;采用上述文件导出器确定上述数据文件的导出路径,以基于上述导出路径将上述数据文件导出至上述数据库,并在导出成功后为上述数据文件创建对应的校验文件。
进一步地,上述采用上述文件导入器将上述数据文件导入至上述文件列表,包括:
采用上述文件导入器对上述数据文件进行拆分,以得到多个拆分后子文件;
若确定上述数据文件需进行文件拆分入库,则遍历多个上述拆分后子文件,以将每个上述拆分后子文件导入到上述文件列表中;
若确定上述数据文件无需进行文件拆分入库,则直接将上述数据文件导入到上述文件列表中。
进一步地,上述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据,上述根据上述补偿数据表的表类型,对上述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理,包括:
若上述表类型指示上述补偿数据表为预定类数据表,则根据上述待补偿数据的数据编号查询上述目标数据库,以确定上述待补偿数据是否已存在于上述目标数据库中,其中,上述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据;
若上述待补偿数据已存在于上述目标数据库中,且上述待补偿数据在补偿数据表中的第一时间戳,大于上述待补偿数据在上述目标数据库中的第二时间戳,则更新上述目标数据库中包含有上述待补偿数据的第二数据表;
若上述待补偿数据未存在于上述目标数据库中,则将上述待补偿数据写入上述目标数据库的第二数据表中。
进一步地,上述获取补偿数据表及补偿数据表的表类型,包括:
获取预定时段内从上述数据库迁移至目标数据库的迁移数据,以得到第一数据表,其中,上述数据库和目标数据库为异构数据库;
获取上述第一数据表中预定个数的待补偿数据,以得到补偿数据表;
根据上述补偿数据表中的待补偿数据是否包含时间戳,确定上述补偿数据表的表类型,其中,包含有时间戳对应的表类型为上述预定类数据表,上述预定类数据表包括如下至少之一:客户表、协议表。
进一步地,上述数据清理方式包括:仅清理不备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:
若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区,则确定上述分区是否为空;
若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;
若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区;若上述数据库的当前版本不是上述目标版本,则将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。
进一步地,上述数据清理方式包括:清理且备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:
若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,则确定待清理的原数据表是否为分区表;
若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息,其中,上述原数据表异常信息包含:原数据表异常代码和原数据表异常描述信息;
若确定上述待清理的原数据表是上述分区表,则根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务。
进一步地,上述根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务,包括:
若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息,其中,上述历史数据表异常信息包含:历史数据表异常代码和历史数据表异常描述信息;
若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;
若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,且上述分区写入上述历史数据表的方式为插入方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表;若上述数据库的当前版本不是上述目标版本,且上述分区写入上述历史数据表的方式为交换方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。
另一方面,本申请提供一种数据处理装置,应用于单元化架构,上述装置包括:
导入或导出处理模块,用于响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,以根据上述导入或导出配置信息,执行将数据文件导入至上述数据库的文件列表中的导入操作,或者执行从上述数据库的文件列表导出上述数据文件的导出操作;
补偿处理模块,用于响应于数据补偿请求,获取补偿数据表及补偿数据表的表类型,以上述根据上述补偿数据表的表类型,对上述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理;
清理处理模块,用于响应于数据清理请求,获取上述数据库的数据清理配置信息;并根据上述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;以控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务。
进一步地,上述导入或导出处理模块,包括:第一获取子模块,用于响应于上述数据导入请求获取到上述数据库的导入配置参数;导入处理模块,用于根据上述导入配置参数,获取待导入至上述数据库的上述数据文件,以及上述数据文件的文件名;若上述数据文件的文件名包含预定后缀名和统配符,则确定上述数据库中与上述数据文件匹配的文件列表;获取上述待导入的数据文件的文件结构和上述文件列表的列表结构,以创建文件导入器;采用上述文件导入器将上述数据文件导入至上述文件列表。
进一步地,上述导入或导出处理模块,包括:第二获取子模块,用于响应于上述数据导出请求获取到上述数据库的导出配置参数;导出处理模块,用于根据上述导出配置参数,获取待导出上述数据库的数据文件所在的文件列表;获取待导出的数据文件的文件结构和上述文件列表的列表结构,以创建文件导出器;采用上述文件导出器确定上述数据文件的导出路径,以基于上述导出路径将上述数据文件导出至上述数据库,并在导出成功后为上述数据文件创建对应的校验文件。
进一步地,上述导入处理模块,包括:
拆分子模块,用于采用上述文件导入器对上述数据文件进行拆分,以得到多个拆分后子文件;
第一导入子模块,用于若确定上述数据文件需进行文件拆分入库,则遍历多个上述拆分后子文件,以将每个上述拆分后子文件导入到上述文件列表中;
第二导入子模块,用于若确定上述数据文件无需进行文件拆分入库,则直接将上述数据文件导入到上述文件列表中。
进一步地,上述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据,上述补偿处理模块,包括:
查询子模块,用于若上述表类型指示上述补偿数据表为预定类数据表,则根据上述待补偿数据的数据编号查询上述目标数据库,以确定上述待补偿数据是否已存在于上述目标数据库中,其中,上述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据;
第一补偿子模块,用于若上述待补偿数据已存在于上述目标数据库中,且上述待补偿数据在补偿数据表中的第一时间戳,大于上述待补偿数据在上述目标数据库中的第二时间戳,则更新上述目标数据库中包含有上述待补偿数据的第二数据表;
第二补偿子模块,用于若上述待补偿数据未存在于上述目标数据库中,则将上述待补偿数据写入上述目标数据库的第二数据表中。
进一步地,上述补偿处理模块,还包括:
第一获取子模块,用于获取预定时段内从上述数据库迁移至目标数据库的迁移数据,以得到第一数据表,其中,上述数据库和目标数据库为异构数据库;
第二获取子模块,用于获取上述第一数据表中预定个数的待补偿数据,以得到补偿数据表;
第一确定子模块,用于根据上述补偿数据表中的待补偿数据是否包含时间戳,确定上述补偿数据表的表类型,其中,包含有时间戳对应的表类型为上述预定类数据表,上述预定类数据表包括如下至少之一:客户表、协议表。
进一步地,上述数据清理方式包括:仅清理不备份方式,上述清理处理模块,包括:
第二确定子模块,用于若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区,则确定上述分区是否为空;
第一预警子模块,用于若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;
第一清理子模块,用于若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区;若上述数据库的当前版本不是上述目标版本,则将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。
进一步地,上述数据清理方式包括:清理且备份方式,上述清理处理模块,还包括:
第三确定子模块,用于若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,则确定待清理的原数据表是否为分区表;
第二预警子模块,用于若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息,其中,上述原数据表异常信息包含:原数据表异常代码和原数据表异常描述信息;
第二清理子模块,用于若确定上述待清理的原数据表是上述分区表,则根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务。
进一步地,上述第二清理子模块,包括:
第一预警单元,用于若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息,其中,上述历史数据表异常信息包含:历史数据表异常代码和历史数据表异常描述信息;
第二预警单元,用于若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;
清理单元,用于若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,且上述分区写入上述历史数据表的方式为插入方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表;若上述数据库的当前版本不是上述目标版本,且上述分区写入上述历史数据表的方式为交换方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。
另一方面,本申请提供一种电子设备,包括:处理器,以及与上述处理器连接的存储器;上述存储器存储计算机执行指令;上述处理器执行上述存储器存储的计算机执行指令,以实现如任一项上述的方法。
另一方面,本申请提供一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机执行指令,上述计算机执行指令被处理器执行时用于实现如任一项上述的方法。
另一方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现任一项上述的方法。
本申请提供的数据处理方法,响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,以根据上述导入或导出配置信息,执行将数据文件导入至上述数据库的文件列表中的导入操作,或者执行从上述数据库的文件列表导出上述数据文件的导出操作;响应于数据补偿请求,获取上述数据库的补偿数据表及补偿数据表的表类型,以上述根据上述补偿数据表的表类型,对上述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理;响应于数据清理请求,获取上述数据库的数据清理配置信息;并根据上述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;以控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务。
通过提供一种单元架构下数据库的数据处理方案,涉及数据导入或导出处理,迁移数据的补偿处理,历史数据的清理处理等,使得数据库执行数据的导入导出操作时,配置兼容,实现简单;执行数据迁移处理后及时补偿缺失数据,有效维护异构数据库之间的数据一致性;以及实现及时对数据库中历史数据进行清理或者备份。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种数据处理方法的流程示意图;
图2为本申请实施例提供的一种可选的数据处理方法的流程示意图;
图3是本申请实施例所提供的一种可选的数据处理方法的流程示意图;
图4是本申请实施例所提供的一种可选的数据处理方法的流程示意图;
图5是本申请实施例所提供的一种可选的数据处理方法的流程示意图;
图6为本申请实施例提供的一种数据处理装置的结构框图;
图7为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
首先对本申请所涉及的名词进行解释:
单元化:一种架构模式,单元是指一个能完成所有业务操作的自包含集合,在这个集合中包含了所有业务所需的所有服务,以及分配给这个单元的数据。单元化架构就是将单元作为部署的基本单位,在全站所有机房中部署多个单元,每个机房内单元数目不固定,任一单元均部署系统所需的全部应用,数据则是全量数据按照某种维度划分后的一部分。
异构数据库:是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,几个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的数据库管理系统、外构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍有自己的应用特性、完整性控制和安全性控制。
目前,例如,在Oracle数据库迁移存量数据至MySQL数据库的实现场景中,由于涉及的数据表类型繁多,不同类型数据表导入导出字段配置复杂,从Oracle数据库导出数据,以及向MySQL数据库导入数据,操作复杂,无法有效保证数据导入导出的完整性。
并且,在异构数据库之间进行数据迁移处理过程中,数据一致性的缺失可能会对交易产生不可预估的风险,例如,Oracle数据库迁移存量数据至MySQL数据库,考虑到从Oracle数据库迁移至MySQL过程中,对于7*24小时支付高敏应用,无间断的维护数据一致性,需要投入巨大的维护成本,而如果无法有效维护数据一致性,又会导致数据一致性缺失。
此外,随着单元架构下数据库的数据处理量日益增大,为提升数据库对数据处理的高可用性和数据可恢复性,需要对数据库中历史数据进行清理或者备份。
对于单元架构下多套数据库环境下的数据清除,存在难以兼容不同版本类型的数据库,数据清除参数配置繁琐,数据清除操作复杂等不利于实现清理历史数据的问题,难以确保数据的安全性和可靠性。
为解决上述技术问题,本公开实施例提供了一种数据处理方法,用以实现对单元架构下的异构数据库的数据导入或导出处理,迁移数据的补偿处理,历史数据的清理处理。
需要说明的是,本公开数据处理方法和装置可用于金融领域。也可用于除金融领域以外的任意领域。本公开数据处理方法和装置应用领域不作限定。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请实施例提供了一种数据处理方法,应用于单元化架构,图1是本申请实施例所提供的一种数据处理方法的流程示意图,如图1所示,该方法包括:
S101,响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,以根据上述导入或导出配置信息,执行将数据文件导入至上述数据库的文件列表中的导入操作,或者执行从上述数据库的文件列表导出上述数据文件的导出操作。
S102,响应于数据补偿请求,获取上述数据库的补偿数据表及补偿数据表的表类型,以上述根据上述补偿数据表的表类型,对上述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理。
S103,响应于数据清理请求,获取上述数据库的数据清理配置信息;并根据上述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;以控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务。
本公开实施例中,通过提供一种单元架构下数据库的数据处理方案,涉及数据导入或导出处理,迁移数据的补偿处理,历史数据的清理处理等,使得数据库执行数据的导入导出操作时,配置兼容,实现简单;执行数据迁移处理后及时补偿缺失数据,有效维护异构数据库之间的数据一致性;以及实现及时对数据库中历史数据进行清理或者备份。
本申请实施例可以应用于在一些应用程序进行单元化架构转型建设的场景中,以单元化架构下的异步数据库为例,从Oracle数据库中导出存量数据至MySQL数据库,即向MySQL数据库中导入存量数据。本公开实施例,通过提供一种对数据库执行数据文件的导入或导出操作的数据处理方案,以实现对数据库执行数据文件的导入或导出操作,实现简单,可以保证数据导入导出的完整性。
可选的,在本公开实施例中,上述导入或导出配置信息包含:对数据库执行导入操作或导出操作时的配置参数。
可选的,在本公开实施例中,上述操作处理方式包括:导入处理和导出处理,其中,导入处理即将数据文件导入至上述数据库的文件列表中,导出处理即从上述数据库的文件列表导出上述数据文件。
可选的,本公开实施例,可以结合数据处理过程中,所涉及到数据表以及开发规范,在应用侧预定制定数据导入导出配置模板,以实现应用侧仅需配置一个导入导出配置模板,即可简单便捷地实现数据文件的导入或导出操作。
例如,在实现本公开实施例的导入导出操作之前,本公开实施例中所提供的方法,响应于应用侧对上述数据库的导入导出配置指令,生成上述数据库的导入或导出配置信息,例如,应用侧可以是为该数据库提供一个导入导出配置模板,以基于该导入导出配置模板生成与该数据库匹配的导入或导出配置信息。
可选的,本公开实施例中,上述导入或导出配置信息至少包括:统一资源定位符dbUrl,用户名dbUsername,密码dbPassword(例如明文密码),数据文件的配置文件ConfigXml(不带XML后缀),配置文件所在目录ConfigPath,数据文件的所在目录FilePath,数据文件的文件名FileName(带后缀名),临时目录TempPath,失败目录SuccPath,成功目录FailPath,异常后处理标志FailContinueFlag(例如,前任务内导入失败是否继续处理,其中,true为是,false为否)。
本公开实施例中,为实现数据文件中字段与数据库表中字段映射,兼容导入定长和分隔符文件,兼容Windows及Unix/Linux平台,支持数据文件在导入至数据库的过程中,在数据文件中字段与数据库表中字段存在主键冲突时,由用户选择忽略还是覆盖;支持将数据文件从数据库中导出过程中,对字段做特殊处理;同时支持对字段设置格式及赋默认值,对特定字段执行相关数据处理,比如截位,补0操作等。
一种示例中,由于大型数据库系统,针对数据导入或导出处理涉及的数据表的类型繁多,如交易信息、客户协议、系统参数等类型,不同类型数据表导入导出字段配置有差别,在本公开实施例中,考虑主键冲突处理方式,可以兼容不同的数据表以及不同数据类型的操作,且规则格式一致,配置简单。
一种示例中,由于大型数据库系统的数据表中的数据量庞大,对于不同数据表的导入导出需要兼顾性能,本公开实施例,支持分片处理、串行处理、并行处理,满足灵活调用。同时支持目前业界内通用的文件后缀,且满足批量处理文件的规范。
一种示例中,对于导入或导出的数据文件,本公开实施例中,可以做到可感知,对于导入或导出处理完成或处理出现异常的情况,还可以及时通知到应用侧,以便于用户对导入或导出处理完成或处理出现异常的情况,及时针对性进行处理。
一种示例中,导出的数据文件不仅可以与数据库的下游应用,或数据湖执行数据交互,还具备对导出的数据文件生成校验文件(CHK文件)的功能,并且,支持多种CHK文件生成方式。
本公开实施例,还提供一种迁移数据的补偿处理方法,数据库迁移至目标数据库的迁移数据可以但不限于为交易过程中产生的存量数据,例如,交易信息、客户协议参数等。并且,迁移数据中包含迁移数据过程中缺失的待补偿数据。
针对这些不同类型的存量数据,可以采用不同类型的补偿数据表执行补偿处理操作,需要说明的是,在本公开实施例中,不同类型的补偿数据表配置的补偿规则有差别,且可以兼容不同的补偿以及数据基准规则,且规则格式一致,配置方便简单。
一种可选的实施例中,包含有时间戳对应的表类型为上述预定类数据表,上述预定类数据表包括如下至少之一:客户表、协议表。
对于预定类数据表,根据预定类数据表中待补偿数据的数据编号,查询MySQL数据库,以确定待补偿数据是否已存在于MySQL数据库中。
若查询到待补偿数据存在于MySQL数据库中,则比较待补偿数据在补偿数据表中的第一时间戳,和待补偿数据在MySQL数据库的第二时间戳,以确定补偿数据表中的待补偿数据是否为已更新后的数据。
为保证数据一致性,如果上述待补偿数据在补偿数据表中的第一时间戳,大于上述待补偿数据在MySQL数据库的第二时间戳,则采用补偿数据表中的待补偿数据,更新MySQL数据库中包含有上述待补偿数据的正式数据表。
若查询到待补偿数据未存在于MySQL数据库中,则表明该待补偿数据可能存在缺失或者丢失的情况,需要补偿处理,直接将上述待补偿数据写入至MySQL数据库中的正式数据表。
本公开实施例,还提供一种数据清理方法,可以在Oracle数据库、MySQL数据库上实现,并且可以兼容MySQL数据库的不同版本,例如,MySQL5.0版本,或者MySQL8.0版本,并且,本公开实施例可以基于MySQL8.0升级内容,对应提供不同数据清理的应用场景,涵盖所有数据清理相关操作,以针对不同的数据清理场景(或类型),采用对应不同的数据清理方式以执行对应的数据清理任务。
一种可选的示例中,本公开实施例的执行主体可以是服务器,也可以是具备数据处理功能的终端设备。本公开实施例可以用于单元化架构下的异步数据库进行数据清理的应用场景中,例如,以单元化架构下的异步数据库为例,Oracle数据库向MySQL数据库迁移数据之后,进行数据清理。通过响应于用户在客户端上的触控操作,触发对数据库(如MySQL数据库)进行清理的数据清理请求,以获取数据库的数据清理配置信息,例如,用于清理该数据库的多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务。之后,则可以控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务。
可选的,上述数据清理方式包括:仅清理不备份方式,清理且备份方式,对应的,多个数据清理线程各自对应的数据清理任务,与数据清理方式之间也存在对应关系,例如,可以是一对一,一对多,也可以是多对一,多对多的对应关系,以在执行不同的数据清理任务时,提供更加丰富的数据清理方式。
可选的,本公开实施例,可以预先配置数据清理周期,例如,可以为24小时,也可以为3*24小时,或者7*24小时等。
以数据清理周期为24小时为例,获取24小时内,即一个数据迁移的工5作日内,从Oracle数据库迁移到MySQL数据库的迁移数据中的待清理数据。
可选的,第一数据库迁移至第二数据库的迁移数据可以但不限于为交易过程中产生的存量数据,例如,交易信息、客户协议、系统参数等。
针对这些不同类型的待清理数据,可以采用不同的数据清理方式,以即
不同的数据清理任务执行对应的数据清理操作,需要说明的是,在本公开实0施例中,不同的数据清理任务,对应配置的数据清理周期和数据清理规则可
以存在差别,且可以兼容不同的数据库以及不同数据库版本。
此外,本公开实施例,还可以支持分片处理、串行处理、并行处理,以便于满足用户在数据清理过程中的灵活需求,并且为实现确保数据清理
过程中的可容灾性、可容错性,还可以对数据清理清理之前,进行备份处5理,当然,用户也可以选择不进行备份操作。
一种示例中,上述响应于数据导入或导出请求,获取单元化架构中的数
据库的导入或导出配置信息,包括:
S201,响应于上述数据导入请求获取到上述数据库的导入配置参数。
上述根据上述导入或导出配置信息,执行将数据文件导入至上述数据库0的文件列表中的导入操作,包括:
S202,根据上述导入配置参数,获取待导入至上述数据库的上述数据文件,以及上述数据文件的文件名;若上述数据文件的文件名包含预定后缀名和统配符,则确定上述数据库中与上述数据文件匹配的文件列表;获取上述
待导入的数据文件的文件结构和上述文件列表的列表结构,以创建文件导入5器;采用上述文件导入器将上述数据文件导入至上述文件列表。
作为一种可选的实施例,可选的,若上述操作处理方式为导入处理,则对应的导入配置参数,可以但不限于包含:统一资源定位符dbUrl,用户名dbUsername,密码dbPassword(例如明文密码),导入数据文件的配置文件
importConfigXml(不带XML后缀),配置文件所在目录importConfigPath,0导入数据文件的所在目录importFilePath,导入数据文件的文件名importFileName(带后缀名),临时目录importTempPath,失败目录importSuccPath,成功目录importFailPath,异常后处理标志importFailContinueFlag(例如,前任务内导入失败是否继续处理,其中,true为是,false为否)。
一种示例中,先判断导入配置参数的参数个数是否为预先配置的个数,例如,可以但不限于本公开实施例中的11个。如果确定是11个,则判断除导入配置参数外其他配置项是否成功。如果成功,根据上述其他配置项构造得到导入配置对象,以设置数据源,设置导入的临时目录。
之后,判断待导入的数据文件的后缀名是否为预定后缀名,例如:bin或者txt,如果是bin或者txt,则检查待导入的数据文件的文件名是否有统配符*,若存在统配符*,则找出与待导入的数据文件匹配的文件列表;获取文件列表下一条记录;获取导入配置参数中的导入成功目录和失败目录,获取当前日期,创建新目录。
本公开实施例中,获取导入或导出配置参数中的xml配置文件,通过xml配置文件,读取待导入的数据文件的文件结构和对应的数据列表的列表结构,以创建文件导入器,进而,采用文件导入器将数据文件导入至上述文件列表。
一种示例中,图2是本申请实施例所提供的一种可选的数据处理方法的流程示意图,如图2所示,上述采用上述文件导入器将上述数据文件导入至上述文件列表,包括:
S401,采用上述文件导入器对上述数据文件进行拆分,以得到多个拆分后子文件。
S402,若确定上述数据文件需进行文件拆分入库,则遍历多个上述拆分后子文件,以将每个上述拆分后子文件导入到上述文件列表中。
S403,若确定上述数据文件无需进行文件拆分入库,则直接将上述数据文件导入到上述文件列表中。
之后,对待导入的数据文件进行拆分,例如,将数据文件按照最大80000行一个,对待导入的数据文件进行拆分。如存在拆分异常,则输出的异常预警信息中包含的错误代码可以为90010003,错误描述信息可以但不限于为将数据文件拆分为子文件失败。
如不存在拆分异常,则判断该数据文件是否需要进行文件拆分入库,需要的话,则遍历多个拆分后子文件,以将每个拆分后子文件导入到文件列表中,并在确定导入成功时,将拆分后子文件移动到导入成功目录;判断对多个拆分后子文件遍历是否完成;否,返回执行将每个拆分后子文件导入到文件列表中。
若确定上述数据文件无需进行文件拆分入库,直接将上述数据文件下载到上述文件列表中,并判断是否下载成功;如果成功,则将数据文件及对应chk校验文件(如存在)移动到导入成功目录;如果失败,则将数据文件及对应chk校验文件(如存在)移动到导入失败目录,并输出异常报警信息,该异常信息中包含的错误代码可以为90010010,对应的错误描述:文件导入失败。
在本公开实施例中,若确定文件处理过程中存在异常,则获取导入配置参数中的导入异常后处理标志(即导入失败是否继续标志),判断导入异常后处理标志是否为true,如果导入异常后处理标志为true,则继续执行导入处理直至完成后,结束上述导入处理,如果该导入异常后处理标志为false,将文件列表中当前文件后的所有文件移动到导入失败目录,并输出处理过程中出现的异常信息和错误代码。
另一可选的示例中,在确定导入数据文件失败时,置导入标志位为false(初始为true),将拆分后子文件移动到导入失败目录,判断获取导入配置参数中的导入异常后处理标志,判断该导入异常后处理标志是否为true,如果导入异常后处理标志是ture,则执行上述判断子文件列表遍历是否完成,没有遍历完成的话,则将文件列表中当前子文件后的所有子文件移动到导入失败目录,跳出循环,并返回判断导入标志位是否为true。
若导入标志位为true,则将数据文件及对应chk校验文件(如存在)移动到导入成功目录;若导入标志位为false,则将数据文件及对应chk校验文件(如存在)移动到导入失败目录,并输出异常报警信息,该异常信息中包含的错误代码可以为90010010,对应的错误描述:文件导入失败。
作为一种可选的实施例,文件导入器或文件导出器的输入参数包括:操作类型1或2,其中1为导入,2为导出;导入导出任务和处理任务线程数。本公开实施例中,导入导出任务至少配置一组,支持多组,每组之间使用英文中括号分隔[],并且,多组间任务类型(导入/导出)可以不同,例如,一组导入配置多个参数,不同参数之间可以使用空格隔开。处理任务线程数是指多组任务配置并发处理线程数,未配置则为单线程处理。
一种示例中,本公开实施例中的调用文件导入器或文件导出器的示例可以但不限于为:java-jar xxx.jar 1[][]2。
通过命令行调用jar包,上传两至三个上述输入参数;获取第一个参数:5操作类型,判断是否为操作类型1或操作类型2;若不是,则输出异常信息,
即错误代码:90010002,错误描述:无效的操作类型。若是,获取第二个参数:导入导出任务,按[]解析,获取上送参数中的多组内容列表(列表为空,则确定失败,程序中断)。
之后,遍历内容列表,每一条内容根据空格拆成一个数组,放到一个数0组列表中,判断数组列表长度是否为1,数组列表长度是1,调用单个数据文
件的导入导出方法,返回处理结果,结束。数组列表长度不是1,则判断调用主方法参数的个数是否为2。
若个数是2,则遍历数组列表,逐个任务调用单个数据文件的导入导出
方法,获取返回结果,若返回结果为全部执行成功,则返回0,若返回结果5为未全部执行成功,则返回错误代码:90010014,错误描述:串行处理多任
务出现失败。
若个数不是2,则读取第三个参数:处理任务线程数,创建线程池,核心线程和最大线程为上送线程数,但最大为50,等待队列为100;遍历数组
列表,每个子线程处理一条记录,进行单个数据文件的导入导出;获取每个0子线程处理的结果,全部执行成功,则返回0,否则返回错误代码:90010012-并行处理多任务出现失败,结束。
另一种可选的示例中,
上述响应于数据导入或导出请求,获取单元化架构中的数据库的导入或
导出配置信息,包括:
5S301,响应于上述数据导出请求获取到上述数据库的导出配置参数。
上述根据上述导入或导出配置信息,执行从上述数据库的文件列表导出
上述数据文件的导出操作,包括:
S302,根据上述导出配置参数,获取待导出上述数据库的数据文件所在
的文件列表;获取待导出的数据文件的文件结构和上述文件列表的列表结构,0以创建文件导出器;采用上述文件导出器确定上述数据文件的导出路径,以基于上述导出路径将上述数据文件导出至上述数据库,并在导出成功后为上述数据文件创建对应的校验文件。
可选的,若上述操作处理方式为上述导出处理,则对应的导出配置参数,可以但不限于包含:统一资源定位符dbUrl,用户名dbUsername,密码dbPassword(例如明文密码),导出数据文件的配置文件exportConfigXml(不带XML后缀),导出数据文件的配置文件所在目录exportConfigPath,导出数据文件的所在目录exportFilePath,数据文件的文件名exportFileName(带后缀名),导出语句中的条件whereCondition,多个条件可以采用#@#隔开。
一种示例中,先判断导出配置参数的参数个数是否预先确定的7或8个,如果不是预先确定的7或8个,则输出异常信息:错误代码:90010015,错误描述:非法参数异常。如果是预先确定的7或8个,则初始化配置,读取数据库配置并判断是否创建数据源成功,若创建数据源失败,则输出异常信息:错误代码:90010000,错误描述:初始化数据源失败。
若确定创建数据源成功,则读取除数据库配置外其他配置项是否成功,失败则输出异常信息:错误代码:90010005,错误描述:非法参数异常;成功则将上述配置项构造导出配置对象,设置数据源,设置导出目录。
之后,获取导出配置参数中导出xml配置文件名,文件目录前缀,读取配置信息,结合数据库的数据列表,构建得到文件导出器;以通过文件导出器设置导出文件名和导出文件路径,导出数据文件,并判断数据文件是否导出成功。
若数据文件导出失败,则输出异常信息:错误代码:90010011,错误描述:文件导出失败后结束;若数据文件导出成功,则创建数据文件对应的CHK恢复文件后结束。其中,若CHK文件创建失败则输出异常信息:错误代码:90010111,错误描述:CHK文件创建失败。
本公开实施例中,若后续需要将数据文件与第三方下游或数据湖进行交互,则需要生成该数据文件的校验文件,例如,本公开实施例中校验文件分两种:对目录下所有数据文件生成一个总的校验文件;对目录下各个数据文件各生成一个对应的校验文件。
基于上述技术方案,本申请提供了一种单元化架构下异构数据库迁移数据导入导出方案,基于MySQL数据库Load Data File以及Fetch,执行数据文件的导入导出处理,可以解决异构数据库数据在迁移过程中完整性和准确性的相关问题。
另一种示例中,上述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据,图3是本申请实施例所提供的一种可选的数据处理方法的流程示意图,如图3所示,上述根据上述补偿数据表的表类型,对上述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理,包括:
S501,若上述表类型指示上述补偿数据表为预定类数据表,则根据上述待补偿数据的数据编号查询上述目标数据库,以确定上述待补偿数据是否已存在于上述目标数据库中。
S502,若上述待补偿数据已存在于上述目标数据库中,且上述待补偿数据在补偿数据表中的第一时间戳,大于上述待补偿数据在上述目标数据库中的第二时间戳,则更新上述目标数据库中包含有上述待补偿数据的第二数据表。
S503,若上述待补偿数据未存在于上述目标数据库中,则将上述待补偿数据写入上述目标数据库的第二数据表中。
可选的,上述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据。
在本公开实施例中,上述数据库和目标数据库为异构数据库,例如,数据库可以为Oracle数据库,目标数据库可以为MySQL数据库。
一种示例中,如果补偿数据表为协议表,则可以根据协议表中待补偿数据的协议编号,查询MySQL数据库,以确定待补偿数据是否已存在于MySQL数据库中。
如果不存在,则直接将协议表中的待补偿数据写入至MySQL数据库中的正式数据表。
如果存在,为保证数据一致性,且确定待补偿数据在协议表的第一时间戳,大于上述待补偿数据在MySQL数据库的第二时间戳,则采用协议表中的待补偿数据,更新MySQL数据库中包含有上述待补偿数据的正式数据表。
如果存在,且确定待补偿数据在客户表的第一时间戳,大于上述待补偿数据在MySQL数据库的第二时间戳,则直接忽略即可,无需继续处理。
再例如另一示例中,如果补偿数据表为客户表,则可以根据客户表中待补偿数据的客户编号查询MySQL数据库,以确定客户表中的待补偿数据是否已存在于MySQL数据库中。
如果不存在,则直接将客户表中的待补偿数据写入至MySQL数据库中的正式数据表。
如果存在,为保证数据一致性,且确定待补偿数据在协议表的第一时间戳,大于上述待补偿数据在MySQL数据库的第二时间戳,则采用客户表中的待补偿数据,更新MySQL数据库中包含有上述待补偿数据的正式数据表。
如果存在,且确定待补偿数据在协议表的第一时间戳,大于上述待补偿数据在MySQL数据库的第二时间戳,则直接忽略即可,无需继续处理。
一种可选的实施例中,补偿处理完成后更新临时数据表的处理结果为处理成功,其他异常情况则将临时数据表的处理结果更新为处理失败,并记录失败信息,所有记录处理完成后则确定补偿流程结束。
本公开实施例中,记录处理结果是以便于对补偿流程进行数据验证,可以对临时数据表与正式数据表进行双向核对,核对完成需进行处理结果的记录,同步更新正式数据表(数据补偿)以及临时数据表(更新状态及补偿处理结果),可以有效维护异构数据库之间的数据一致性。
由此,本申请提供的数据处理方法,通过提供一种迁移数据的补偿方案,针对数据迁移过程中导致的数据丢失或缺失,以进行数据补偿处理;针对Oracle数据库的数据更新后没有及时同步到MySQL数据库,进行数据更新处理,可以保证异构数据库之间的数据一致性,且实现简单。
另一种示例中,图4是本申请实施例所提供的一种可选的数据处理方法的流程示意图,如图4所示,上述获取补偿数据表及补偿数据表的表类型,包括:
S601,获取预定时段内从上述数据库迁移至目标数据库的迁移数据,以得到第一数据表,其中,上述数据库和目标数据库为异构数据库;
S602,获取上述第一数据表中预定个数的待补偿数据,以得到补偿数据表;
S603,根据上述补偿数据表中的待补偿数据是否包含时间戳,确定上述补偿数据表的表类型,其中,包含有时间戳对应的表类型为上述预定类数据表,上述预定类数据表包括如下至少之一:客户表、协议表。
可选的,上述预定时间段可以根据预定迁移周期确定,例如,可以为24小时,也可以为3*24小时,或者7*24小时等。
以预定时间段为24小时为例,获取24小时内,即一个数据迁移的工作日内,从Oracle数据库迁移到MySQL数据库的迁移数据,以得到第一数据表。可以理解的是,本公开实施例中,该第一数据表是用于实现数据补偿的临时数据表,例如,以单元化架构下的异步数据库为例,可以先从Oracle数据库中导出存量数据表到一个文件,再采用单元化架构的文件导入导出构件,将该文件导入至该临时数据表中。
本公开实施例,通过设置临时数据表,可以一次性获取24小时内,数据库迁移至目标数据库的所有迁移数据,避免重复进行数据拉取,导致的数据丢失和繁琐操作。
可选的,在本次数据补偿流程执行完毕之后,或者在预定次数的数据补偿流程执行完毕之后,可以删除该临时数据表。
一种示例中,每次补偿的数据的个数和类型是可以预先设定的,为了便于对不同类型的待补偿数据进行串行或并行进行补偿处理,可以根据预先确定的补偿规则,根据每次补偿的预定个数和待补偿数据的数据类型,获取临时数据表中预定个数的待补偿数据,以得到补偿数据表。
例如,本公开实施例中,还可以根据预先确定的补偿配置参数中预定单次处理个数和待补偿数据的数据类型,获取临时数据表中预定个数的待补偿数据,以得到补偿数据表。
这样,由于该补偿数据表中的待补偿数据的数据类型是一致的,共同确定了该补偿数据表的表类型。并且,该补偿数据表中的待补偿数据的个数是确定的,可以保证补偿过程中的数据一致性和数据安全,避免待补偿数据的丢失。
之后,再根据上述补偿数据表中的待补偿数据是否包含时间戳,确定上述补偿数据表的表类型。
一种可选的实施例中,包含有时间戳对应的表类型为上述预定类数据表,上述预定类数据表包括如下至少之一:客户表、协议表。
此外,需要说明的是,其他数据中包含有时间戳的补偿数据表,也可以确定是预定类数据表,同样可以采用本申请实施例所提供的针对该预定类数据表的数据补偿机制,本申请实施例对预定类数据表的数量和种类不具体限定。
另一种示例中,上述方法还包括:
获取预先确定的补偿配置参数,其中,上述补偿配置参数包括:预定单次处理个数。
若上述补偿数据列表中的待补偿数据小于上述预定单次处理个数,则将数据补偿循环流程的标志位标记为结束。
若上述补偿数据列表中的待补偿数据大于或等于上述预定单次处理个数,则创建预定大小的多个线程,以并行处理上述待补偿数据列表。
可选的,上述补偿配置参数还可以但不限于包括:统一资源定位URL地址、用户名、密码、临时数据表的表名、正式数据表的表名。
一种可选的实施例中,如果确定补偿数据列表中的待补偿数据小于预定单次处理个数,表明待补偿数据的数据量小于最小单次补偿处理数,则无需继续补偿处理,可以直接将数据补偿循环流程的标志位标记为结束。
由于大型数据库系统的交易表数据的数量很大,往往都是亿级,对于不同数据表的补偿处理,本公开实施例中,如果确定补偿数据列表中的待补偿数据大于或等于上述预定单次处理个数,则创建预定大小的多个线程,以并行处理上述待补偿数据列表。
此外,本公开实施例,还可以支持分片处理、串行处理、并行处理,以便于满足用户在补偿处理过程中的灵活调用需求。
另一种示例中,在获取上述第一数据表中预定个数的待补偿数据,以得到补偿数据表之前,上述方法还包括:
获取数据补偿循环流程的标志位,以确定数据补偿循环流程是否结束。
如果确定上述数据补偿循环流程已结束,且如果确定上述数据补偿循环流程未结束,则执行获取上述第一数据表中预定个数的待补偿数据,以得到补偿数据表的步骤。
在上述第一数据表中记录上述多个线程各自对应的补偿处理结果,以得到处理日志。其中,上述处理日志未报错则表明数据补偿成功。
在获取上述第一数据表中预定个数的待补偿数据,以得到补偿数据表之前,可以先根据数据补偿循环流程的标志位,来确定数据补偿循环流程是否结束,如果确定数据补偿循环流程未结束,则执行上述获取上述第一数据表中预定个数的待补偿数据,以得到补偿数据表的步骤。
如果确定上述数据补偿循环流程已结束,则在上述第一数据表中记录上述多个线程各自对应的补偿处理结果,以得到处理日志。
在得到处理日志之后,可以输出展示该处理日志,上述处理日志未报错则表明数据补偿成功,处理日志报错则表明数据补偿失败,需要根据处理日志查询补偿处理的线程或者出现错误的线程,以继续进行数据补偿处理,以保证迁移数据的一致性。
一种示例中,在根据上述补偿数据表中待补偿数据的数据编号查询上述目标数据库之前,上述方法还包括:
判断上述补偿数据表中待补偿数据的数据编号是否为空值。
若上述数据编号为空值,则确定上述补偿数据表对应的补偿处理结果为补偿处理失败。
若上述数据编号为非空值,则确定执行上述根据上述数据编号查询上述目标数据库的步骤。
可选的,在根据上述补偿数据表中待补偿数据的数据编号查询上述目标数据库之前,可以先判断上述补偿数据表中待补偿数据的数据编号是否为空值,若确定所有待补偿数据的数据编号为空值,则直接记录补偿数据表对应的补偿处理结果为补偿处理失败,在数据编号为非空值的情况下,才继续执行上述根据上述数据编号查询上述目标数据库的步骤。
一种示例中,上述方法还包括:
若上述表类型指示上述补偿数据表为除上述预定类数据表外的其他类数据表,则获取上述第一数据表插入或更新的字符串。
判断上述字符串是否已存在于上述第二数据表。
若上述字符串已存在于上述第二数据表,则基于上述字符串更新上述第二数据表,若上述字符串未存在于上述第二数据表,则将上述字符串插入上述第二数据表。
在一种可选的实施中,若上述表类型指示上述补偿数据表为除上述预定类数据表外的其他类数据表,即不包含时间戳的数据表,如系统参数表等,则可以获取该临时数据表插入或更新的字符串,以通过将该临时数据表插入或更新的字符串,同样插入或更新到目标数据库的方式,判断上述字符串是否已存在于上述第二数据表。
若上述字符串已存在于上述第二数据表,则基于上述字符串更新上述第二数据表,若上述字符串未存在于上述第二数据表,则将上述字符串插入上述第二数据表。
此外,对于目标数据库的正式数据表中存在且临时数据表中不存在的数据,则直接删除掉即可,不需要继续更新或同步处理。
通过本公开实施例,针对不同类型数据表,对应配置不同的数据补偿规则,并且本公开实施例中,单元架构下的异构数据库,可以兼容异构数据库之间不同的数据补偿规则,且相同类型数据表的数补偿规则格式一致,配置简单实现方便。
一种可选的示例中,上述数据清理方式包括:仅清理不备份方式,图5是本申请实施例所提供的一种可选的数据处理方法的流程示意图,如图5所示,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:
S701,若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区,则确定上述分区是否为空;
S702,若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;
S703,若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区;若上述数据库的当前版本不是上述目标版本,则将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。
可选的,根据数据清理方式的不同,可以将数据清理任务划分为两大类,在讨论数据清理方式为仅清理不备份方式的场景下,将若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区作为第一清理类型1,则先判断清理的原数据表是否为分区表,如果清理的原数据表不为分区表,则输出分区表分区号异常信息,包含:分区表分区号错误代码(例如,90010001)和分区表分区号错误描述信息。
如果清理的原数据表是分区表,则继续判断该分区表内的分区是否为空,其中,为空表示不合法分区,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码(例如,90010002)和分区异常描述信息。
若确定分区不为空,不为空表示该分区为合法分区,则确定上述数据库的当前版本是否为目标版本;可选的,数据库的目标版本为MySQL8.0版本。
若上述数据库的当前版本是MySQL8.0版本,则查询本次需要清理的记录数,并直接删除/截断分区,即查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区。
若上述数据库的当前版本不是MySQL8.0版本,将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。具体是将原数据表名和新临时文件赋值得到新建临时数据表名,先删除需要新建的临时数据表,再创建临时数据表,之后,新临时数据表移除分区,进行分区数据交换之后,删除新建的临时数据表。
一种示例中,上述数据清理方式包括:仅清理不备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:
若上述数据清理任务指示上述数据清理线程清理上述数据库中的分区表,则确定上述分区表是否为空,查询语句的条件表达式是否为空。
若确定上述分区表为空,或上述查询语句的条件表达式为空,则输出分区表异常信息。
其中,上述分区表异常信息包含:分区表异常代码和分区表异常描述信息。
若确定上述分区表不为空,且上述查询语句的条件表达式不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表,以删除与上述本次待清理分区表对应的上述分区表;若上述数据库的当前版本不是上述目标版本,则基于上述分区表新建临时数据表,以删除上述临时数据表。
可选地,针对分区表的清理处理方法步骤,还可以用于执行清理上述数据库中的非分区表,与分区表的清理处理的实现方式相同或相似。
可选的,上述查询语句的条件表达式为where条件表达式。
本公开实施例中,在讨论数据清理方式为仅清理不备份方式的场景下,将若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表,作为第二清理类型2,则先判断原数据表分区是否为空,where条件是否为空。若确定上述分区表为空,或上述查询语句的条件表达式为空,则输出分区表异常信息,上述分区表异常信息包含:分区表异常代码(例如,90010003)和分区表异常描述信息(例如:原数据表分区不为空,where条件不为空)。
若确定上述分区表不为空,且上述查询语句的条件表达式不为空,则确定上述数据库的当前版本是否为目标版本;可选的,数据库的目标版本为MySQL8.0版本。
一种示例中,若上述数据库的当前版本不是MySQL8.0版本,则基于上述分区表新建临时数据表,以删除上述临时数据表。具体可以将新建临时数据表名=原数据表名+新临时文件,之后先删除需要新建的临时数据表,再创建临时数据表,对于原数据表,命名为原数据表名+旧临时文件,对临时数据表,命名为原数据表名,以删除新建的临时数据表。
另一示例中,若上述数据库的当前版本是MySQL8.0版本,则查询上述数据库的本次待清理分区表,以删除与上述本次待清理分区表对应的上述分区表。
一种示例中,上述数据清理方式包括:仅清理不备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:
若上述数据清理任务指示上述数据清理线程清理上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空。
若确定上述清理条件为空,则输出清理条件异常信息。
其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息。
若确定上述清理条件不为空,则查询满足上述清理条件的本次待清理数据,以根据上述清理条件删除上述分区表中的本次待清理数据。
本公开实施例中,在讨论数据清理方式为仅清理不备份方式的场景下,将若上述数据清理任务指示上述数据清理线程,清理上述数据库的分区表中满足清理条件的数据,作为第三清理类型3,则先确定上述清理条件是否为空。
若确定上述清理条件为空,则输出清理条件异常信息,该上述清理条件异常信息包含:清理条件异常代码(例如,90010004)和清理条件异常描述信息(例如,清理条件为空)。
若确定上述清理条件不为空,则查询本次需要清理的记录数,固定每次清理的记录数,计算需要清理的次数;根据清理条件循环执行数据清理任务,并按照自增主键升序删除原数据表数据,每次最多删除固定记录数,以得到记录日志。
另一种可选的示例中,上述数据清理方式包括:清理且备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:
S801,若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,则确定待清理的原数据表是否为分区表;
S802,若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息,其中,上述原数据表异常信息包含:原数据表异常代码和原数据表异常描述信息;
S803,若确定上述待清理的原数据表是上述分区表,则根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务。
本公开实施例中,在讨论数据清理方式为清理且备份方式的场景下,先确定历史数据表名是否为空,若历史数据表名为空,则生成对应的历史数据表异常信息,历史数据表错误代码(例如,90010005)和历史数据表错误描述信息(例如,历史数据表为空)。
若历史数据表名为空,则继续根据数据清理方式,并确定不同的数据清理任务或数据清理类型,以并行执行数据清理任务,例如,将若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,作为第四清理类型4,则先判断待清理的原数据表是否为分区表。
一种示例中,若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息,该原数据表异常信息包含:原数据表异常代码(例如,90010001)和原数据表异常描述信息(例如,清理的原数据表或历史数据表为非分区表)。
若确定上述待清理的原数据表是上述分区表,则确定清理的历史数据表是否为分区表,以根据待清理的历史数据表是否为上述分区表,确定后续如何执行上述数据清理任务。
一种可选的示例中,上述根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务,包括:
S901,若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息,其中,上述历史数据表异常信息包含:历史数据表异常代码和历史数据表异常描述信息;
S902,若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;
S903,若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,且上述分区写入上述历史数据表的方式为插入方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表;若上述数据库的当前版本不是上述目标版本,且上述分区写入上述历史数据表的方式为交换方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。
本公开实施例中,若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息,该历史数据表异常信息包含:历史数据表异常代码(例如,90010001)和历史数据表异常描述信息(例如,清理的原数据表或历史数据表为非分区表)。若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;若确定上述分区为空,则输出分区异常信息,该其中,上述分区异常信息包含:分区异常代码(例如,90010002)和分区异常描述信息(例如,分区表分区号错误)。
若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本,可选地,数据库的目标版本是MySQL8.0版本。
一种示例中,若上述数据库的当前版本是MySQL8.0版本,且上述分区写入上述历史数据表的方式为插入insert方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表,即通过则查询本次需要清理备份的记录数,固定每次需要清理的记录数,计算需要清理备份的次数;循环带条件查询原数据表指定记录数并(带条件且主键升序)插入到历史数据表,并记录日志,并直接删除(截断分区)。
另一种示例中,若上述数据库的当前版本是MySQL8.0版本,上述分区写入上述历史数据表的方式不是插入insert方式,则生成对应的写入方式异常信息,写入方式错误代码(例如,90010006)和写入方式错误描述信息(例如,插入历史数据表方式配置错误)。
另一种示例中,若上述数据库的当前版本不是MySQL8.0版本,且上述分区写入上述历史数据表的方式为交换exchange方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。例如,具体可以新建临时数据表名=原数据表名+新临时文件,之后先删除需要新建的临时数据表,创建临时数据表,再新临时数据表移除分区,之后进行分区数据交换,即临时数据表和历史数据表分区交换后,删除新建的临时数据表。
另一种示例中,若上述数据库的当前版本不是MySQL8.0版本,且上述分区写入上述历史数据表的方式不是交换exchange方式,则生成对应的写入方式异常信息,写入方式错误代码(例如,90010006)和写入方式错误描述信息(例如,插入历史数据表方式配置错误)。
一种示例中,上述数据清理方式包括:清理且备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:
若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的非分区表,则确定上述非分区表对应的原数据表是否为空,查询语句的条件表达式是否为空。
若确定上述原数据表为空,或上述查询语句的条件表达式为空,则输出写入方式异常信息。
其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息。
若确定上述原数据表不为空,上述查询语句的条件表达式不为空,且上述非分区表写入历史数据表的方式为插入方式,则确定上述数据库的当前版本是否为目标版本。
若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表对应的原数据表,将上述原数据表插入至上述历史数据表之后,删除上述原数据表;若上述数据库的当前版本不是上述目标版本,则基于上述原数据表新建临时数据表,并将上述临时数据表插入至上述历史数据表之后,删除上述临时数据表。
本公开实施例中,在讨论数据清理方式为清理且备份方式的场景下,例如,若将上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的非分区表,作为第五清理类型5,则先判断上述非分区表对应的原数据表是否为空,查询语句的条件表达式是否为空。
若确定上述原数据表为空,或上述查询语句的条件表达式为空,则输出写入方式异常信息(例如,插入历史数据表的配置方式错误)。
其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息。
一种示例中,若确定上述原数据表不为空,上述查询语句的条件表达式不为空,上述非分区表写入历史数据表的方式不是插入insert方式,则生成对应的写入方式异常信息,写入方式错误代码(例如,90010006)和写入方式错误描述信息(例如,插入历史数据表方式配置错误)。
另一种示例中,若确定上述原数据表为空,上述查询语句的条件表达式为空,且上述非分区表写入历史数据表的方式为插入insert方式,则确定上述数据库的当前版本是否为目标版本,例如,MySQL8.0版本。
若上述数据库的当前版本是MySQL8.0版本,则查询上述数据库的本次待清理分区表对应的原数据表,将上述原数据表插入至上述历史数据表之后,删除上述原数据表,例如,查询本次需要清理备份的记录数,固定每次需要清理的记录数,计算需要清理备份的次数;循环带条件查询原数据表指定记录数并(带条件且主键升序)插入到历史数据表,并记录日志,并直接删除(截断分区)。
若上述数据库的当前版本不是MySQL8.0版本,则基于上述原数据表新建临时数据表,并将上述临时数据表插入至上述历史数据表之后,删除上述临时数据表。例如,新建临时数据表名=原数据表名+新临时文件之后,先删除需要新建的临时数据表,再创建临时数据表,对于原数据表,命名为原数据表名+旧临时文件,针对临时数据表,命名为原数据表名。删除新建的临时数据表。从临时数据表查询后插入历史数据表(带条件),删除新建的临时数据表。
一种示例中,上述数据清理方式包括:清理且备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:
若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空。
若确定上述清理条件为空,则输出清理条件异常信息。
其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息。
若确定上述清理条件不为空,则确定上述数据库的分区表中满足清理条件的数据写入历史数据表的方式是否为插入方式。
若不是上述插入方式,则查询满足清理条件的数据所在的原数据表,将上述原数据表插入至历史数据表之后,删除上述原数据表;若是上述插入方式,则输出写入方式异常信息。
其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息。
本公开实施例中,在讨论数据清理方式为清理且备份方式的场景下,若将上述数据清理任务指示上述数据清理线程,清理且备份上述数据库的分区表中满足清理条件的数据,作为第六清理类型6,则判断上述清理条件是否为空。
若确定上述清理条件为空,则输出清理条件异常信息,该清理条件异常信息包含:清理条件异常代码(例如,90010004)和清理条件异常描述信息(例如,清理条件为空)。
若确定上述清理条件不为空,则上述数据库的分区表中满足清理条件的数据写入历史数据表的方式是否为插入insert方式。
一种示例中,若是上述插入方式,则输出写入方式异常信息,上述写入方式异常信息包含:写入配置异常代码(例如,90010006)和写入配置异常描述信息(例如,插入历史数据表方式配置错误)。
另一种示例中,若不是上述插入方式,则查询满足清理条件的数据所在的原数据表,将上述原数据表插入至历史数据表之后,删除上述原数据表;例如,具体可以通过查询本次需要清理备份的记录数,固定每次需要清理的记录数,计算需要清理备份的次数;循环带条件查询原数据表指定记录数并(带条件且主键升序)插入到历史数据表,并记录日志。
可选的,本公开实施例中,通过以上各实施例,可以实现简化数据清理和数据备份的配置项,制定统一的应用与清理构件间交互的配置项规范,可以实现通配所有数据清理场景或数据清理类型,具备对接行内元数据及软件管理系统的前景,可推广至其他各应用场景。
根据本申请的一个或多个实施例,提供了一种数据处理装置,应用于单元化架构,图6为本申请实施例提供的一种数据处理装置的结构框图,如图6所示,上述装置包括:
导入或导出处理模块600,用于响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,以根据上述导入或导出配置信息,执行将数据文件导入至上述数据库的文件列表中的导入操作,或者执行从上述数据库的文件列表导出上述数据文件的导出操作;
补偿处理模块601,用于响应于数据补偿请求,获取补偿数据表及补偿数据表的表类型,以上述根据上述补偿数据表的表类型,对上述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理;
清理处理模块602,用于响应于数据清理请求,获取上述数据库的数据清理配置信息;并根据上述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;以控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务。
进一步地,上述导入或导出处理模块,包括:第一获取子模块,用于响应于上述数据导入请求获取到上述数据库的导入配置参数;导入处理模块,用于根据上述导入配置参数,获取待导入至上述数据库的上述数据文件,以及上述数据文件的文件名;若上述数据文件的文件名包含预定后缀名和统配符,则确定上述数据库中与上述数据文件匹配的文件列表;获取上述待导入的数据文件的文件结构和上述文件列表的列表结构,以创建文件导入器;采用上述文件导入器将上述数据文件导入至上述文件列表。
进一步地,上述导入或导出处理模块,包括:第二获取子模块,用于响应于上述数据导出请求获取到上述数据库的导出配置参数;导出处理模块,用于根据上述导出配置参数,获取待导出上述数据库的数据文件所在的文件列表;获取待导出的数据文件的文件结构和上述文件列表的列表结构,以创建文件导出器;采用上述文件导出器确定上述数据文件的导出路径,以基于上述导出路径将上述数据文件导出至上述数据库,并在导出成功后为上述数据文件创建对应的校验文件。
进一步地,上述导入处理模块,包括:
拆分子模块,用于采用上述文件导入器对上述数据文件进行拆分,以得到多个拆分后子文件;
第一导入子模块,用于若确定上述数据文件需进行文件拆分入库,则遍历多个上述拆分后子文件,以将每个上述拆分后子文件导入到上述文件列表中;
第二导入子模块,用于若确定上述数据文件无需进行文件拆分入库,则直接将上述数据文件导入到上述文件列表中。
进一步地,上述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据,上述补偿处理模块,包括:
查询子模块,用于若上述表类型指示上述补偿数据表为预定类数据表,则根据上述待补偿数据的数据编号查询上述目标数据库,以确定上述待补偿数据是否已存在于上述目标数据库中,其中,上述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据;
第一补偿子模块,用于若上述待补偿数据已存在于上述目标数据库中,且上述待补偿数据在补偿数据表中的第一时间戳,大于上述待补偿数据在上述目标数据库中的第二时间戳,则更新上述目标数据库中包含有上述待补偿数据的第二数据表;
第二补偿子模块,用于若上述待补偿数据未存在于上述目标数据库中,则将上述待补偿数据写入上述目标数据库的第二数据表中。
进一步地,上述补偿处理模块,还包括:
第一获取子模块,用于获取预定时段内从上述数据库迁移至目标数据库的迁移数据,以得到第一数据表,其中,上述数据库和目标数据库为异构数据库;
第二获取子模块,用于获取上述第一数据表中预定个数的待补偿数据,以得到补偿数据表;
第一确定子模块,用于根据上述补偿数据表中的待补偿数据是否包含时间戳,确定上述补偿数据表的表类型,其中,包含有时间戳对应的表类型为上述预定类数据表,上述预定类数据表包括如下至少之一:客户表、协议表。
进一步地,上述数据清理方式包括:仅清理不备份方式,上述清理处理模块,包括:
第二确定子模块,用于若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区,则确定上述分区是否为空;
第一预警子模块,用于若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;
第一清理子模块,用于若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区;若上述数据库的当前版本不是上述目标版本,则将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。
进一步地,上述数据清理方式包括:清理且备份方式,上述清理处理模块,还包括:
第三确定子模块,用于若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,则确定待清理的原数据表是否为分区表;
第二预警子模块,用于若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息,其中,上述原数据表异常信息包含:原数据表异常代码和原数据表异常描述信息;
第二清理子模块,用于若确定上述待清理的原数据表是上述分区表,则根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务。
进一步地,上述第二清理子模块,包括:
第一预警单元,用于若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息,其中,上述历史数据表异常信息包含:历史数据表异常代码和历史数据表异常描述信息;
第二预警单元,用于若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;
清理单元,用于若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,且上述分区写入上述历史数据表的方式为插入方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表;若上述数据库的当前版本不是上述目标版本,且上述分区写入上述历史数据表的方式为交换方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。
在示例性实施例中,本申请实施例还提供了一种电子设备,包括:处理器,以及与上述处理器连接的存储器;
上述存储器存储计算机执行指令;
上述处理器执行上述存储器存储的计算机执行指令,以实现如任一项上述的方法。
在示例性实施例中,本申请实施例还提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机执行指令,上述计算机执行指令被处理器执行时用于实现如任一项上述的方法。
在示例性实施例中,本申请实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现任一项上述的方法。
为了实现上述实施例,本申请实施例还提供了一种电子设备。
参考图7,其示出了适于用来实现本申请实施例的电子设备700的结构示意图,该电子设备700可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,其示出了适于用来实现本申请实施例的电子设备700的结构示意图,该电子设备700可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(PortableMedia Player,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(Read Only Memory,简称ROM)702中的程序或者从存储装置708加载到随机访问存储器(Random Access Memory,简称RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有电子设备700操作所需的各种程序和数据。处理装置701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
通常,以下装置可以连接至I/O接口705:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从ROM 702被安装。在该计算机程序被处理装置701执行时,执行本申请实施例的方法中限定的上述功能。
需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
Claims (13)
1.一种数据处理方法,其特征在于,应用于单元化架构,所述方法包括:
响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,以根据所述导入或导出配置信息,执行将数据文件导入至所述数据库的文件列表中的导入操作,或者执行从所述数据库的文件列表导出所述数据文件的导出操作;
响应于数据补偿请求,获取所述数据库的补偿数据表及补偿数据表的表类型,以所述根据所述补偿数据表的表类型,对所述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理;
响应于数据清理请求,获取所述数据库的数据清理配置信息;并根据所述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;以控制多个所述数据清理线程采用各自对应的所述数据清理方式,执行各自的数据清理任务。
2.根据权利要求1所述的方法,其特征在于,
所述响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,包括:
响应于所述数据导入请求获取到所述数据库的导入配置参数;
所述根据所述导入或导出配置信息,执行将数据文件导入至所述数据库的文件列表中的导入操作,包括:
根据所述导入配置参数,获取待导入至所述数据库的所述数据文件,以及所述数据文件的文件名;若所述数据文件的文件名包含预定后缀名和统配符,则确定所述数据库中与所述数据文件匹配的文件列表;获取所述待导入的数据文件的文件结构和所述文件列表的列表结构,以创建文件导入器;采用所述文件导入器将所述数据文件导入至所述文件列表。
3.根据权利要求1所述的方法,其特征在于,
所述响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,包括:
响应于所述数据导出请求获取到所述数据库的导出配置参数;
所述根据所述导入或导出配置信息,执行从所述数据库的文件列表导出所述数据文件的导出操作,包括:
根据所述导出配置参数,获取待导出所述数据库的数据文件所在的文件列表;
获取待导出的数据文件的文件结构和所述文件列表的列表结构,以创建文件导出器;
采用所述文件导出器确定所述数据文件的导出路径,以基于所述导出路径将所述数据文件导出至所述数据库,并在导出成功后为所述数据文件创建对应的校验文件。
4.根据权利要求2所述的方法,其特征在于,所述采用所述文件导入器将所述数据文件导入至所述文件列表,包括:
采用所述文件导入器对所述数据文件进行拆分,以得到多个拆分后子文件;
若确定所述数据文件需进行文件拆分入库,则遍历多个所述拆分后子文件,以将每个所述拆分后子文件导入到所述文件列表中;
若确定所述数据文件无需进行文件拆分入库,则直接将所述数据文件导入到所述文件列表中。
5.根据权利要求1所述的方法,其特征在于,所述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据,所述根据所述补偿数据表的表类型,对所述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理,包括:
若所述表类型指示所述补偿数据表为预定类数据表,则根据所述待补偿数据的数据编号查询所述目标数据库,以确定所述待补偿数据是否已存在于所述目标数据库中,其中,所述补偿数据表包含从数据库向目标数据库迁移数据过程中缺失的待补偿数据;
若所述待补偿数据已存在于所述目标数据库中,且所述待补偿数据在补偿数据表中的第一时间戳,大于所述待补偿数据在所述目标数据库中的第二时间戳,则更新所述目标数据库中包含有所述待补偿数据的第二数据表;
若所述待补偿数据未存在于所述目标数据库中,则将所述待补偿数据写入所述目标数据库的第二数据表中。
6.根据权利要求1或5所述的方法,其特征在于,所述获取补偿数据表及补偿数据表的表类型,包括:
获取预定时段内从所述数据库迁移至目标数据库的迁移数据,以得到第一数据表,其中,所述数据库和目标数据库为异构数据库;
获取所述第一数据表中预定个数的待补偿数据,以得到补偿数据表;
根据所述补偿数据表中的待补偿数据是否包含时间戳,确定所述补偿数据表的表类型,其中,包含有时间戳对应的表类型为所述预定类数据表,所述预定类数据表包括如下至少之一:客户表、协议表。
7.根据权利要求1所述的方法,其特征在于,所述数据清理方式包括:仅清理不备份方式,所述控制多个所述数据清理线程采用各自对应的所述数据清理方式,执行各自的数据清理任务,包括:
若所述数据清理任务指示所述数据清理线程,清理所述数据库中的分区表内的分区,则确定所述分区是否为空;
若确定所述分区为空,则输出分区异常信息,其中,所述分区异常信息包含:分区异常代码和分区异常描述信息;
若确定所述分区不为空,则确定所述数据库的当前版本是否为目标版本;若所述数据库的当前版本是所述目标版本,则查询所述数据库的本次待清理分区,以删除与所述本次待清理分区对应的所述分区;若所述数据库的当前版本不是所述目标版本,则将所述分区中的分区数据交换到临时数据表,以删除所述临时数据表。
8.根据权利要求1所述的方法,其特征在于,所述数据清理方式包括:清理且备份方式,所述控制多个所述数据清理线程采用各自对应的所述数据清理方式,执行各自的数据清理任务,包括:
若所述数据清理任务指示所述数据清理线程,清理且备份所述数据库中的分区表内的分区,则确定待清理的原数据表是否为分区表;
若确定所述待清理的原数据表不是所述分区表,则输出原数据表异常信息,其中,所述原数据表异常信息包含:原数据表异常代码和原数据表异常描述信息;
若确定所述待清理的原数据表是所述分区表,则根据待清理的历史数据表是否为所述分区表,以继续执行所述数据清理任务。
9.根据权利要求8所述的方法,其特征在于,所述根据待清理的历史数据表是否为所述分区表,以继续执行所述数据清理任务,包括:
若确定所述待清理的历史数据表不是所述分区表,则输出历史数据表异常信息,其中,所述历史数据表异常信息包含:历史数据表异常代码和历史数据表异常描述信息;
若确定所述待清理的历史数据表是所述分区表,则确定所述分区表内的分区是否为空;若确定所述分区为空,则输出分区异常信息,其中,所述分区异常信息包含:分区异常代码和分区异常描述信息;
若确定所述分区不为空,则确定所述数据库的当前版本是否为目标版本;若所述数据库的当前版本是所述目标版本,且所述分区写入所述历史数据表的方式为插入方式,则将所述原数据表命名为临时数据表,将所述临时数据表中查询到的所述分区插入历史数据表,以删除所述临时数据表;若所述数据库的当前版本不是所述目标版本,且所述分区写入所述历史数据表的方式为交换方式,将所述临时数据表中的分区交换到所述历史数据表,以删除所述临时数据表。
10.一种数据处理装置,其特征在于,应用于单元化架构,所述装置包括:
导入或导出处理模块,用于响应于数据导入或导出请求,获取单元化架构中的数据库的导入或导出配置信息,以根据所述导入或导出配置信息,执行将数据文件导入至所述数据库的文件列表中的导入操作,或者执行从所述数据库的文件列表导出所述数据文件的导出操作;
补偿处理模块,用于响应于数据补偿请求,获取补偿数据表及补偿数据表的表类型,以所述根据所述补偿数据表的表类型,对所述数据库在迁移数据过程中缺失的待补偿数据进行补偿处理;
清理处理模块,用于响应于数据清理请求,获取所述数据库的数据清理配置信息;并根据所述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;以控制多个所述数据清理线程采用各自对应的所述数据清理方式,执行各自的数据清理任务。
11.一种电子设备,其特征在于,包括:处理器,以及与所述处理器连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至9中任一项所述的方法。
13.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310002866.5A CN116049142A (zh) | 2023-01-03 | 2023-01-03 | 数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310002866.5A CN116049142A (zh) | 2023-01-03 | 2023-01-03 | 数据处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116049142A true CN116049142A (zh) | 2023-05-02 |
Family
ID=86119517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310002866.5A Pending CN116049142A (zh) | 2023-01-03 | 2023-01-03 | 数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116049142A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116881051A (zh) * | 2023-09-06 | 2023-10-13 | 天津神舟通用数据技术有限公司 | 一种数据备份与恢复方法、装置、电子设备和存储介质 |
-
2023
- 2023-01-03 CN CN202310002866.5A patent/CN116049142A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116881051A (zh) * | 2023-09-06 | 2023-10-13 | 天津神舟通用数据技术有限公司 | 一种数据备份与恢复方法、装置、电子设备和存储介质 |
CN116881051B (zh) * | 2023-09-06 | 2023-12-08 | 天津神舟通用数据技术有限公司 | 一种数据备份与恢复方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077483B (zh) | 共享文件夹和文件的同步 | |
US10235244B2 (en) | Block level backup of virtual machines for file name level based file search and restoration | |
US10585760B2 (en) | File name level based file search and restoration from block level backups of virtual machines | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
CN112965761B (zh) | 一种数据处理方法、系统、电子设备及存储介质 | |
CN112199048B (zh) | 数据读取方法、系统、设备及介质 | |
CN111857720B (zh) | 用户界面状态信息的生成方法、装置、电子设备及介质 | |
US20230259358A1 (en) | Documentation enforcement during compilation | |
CN116049142A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113127430B (zh) | 镜像信息处理方法、装置、计算机可读介质及电子设备 | |
CN102867029A (zh) | 一种管理分布式文件系统目录的方法及分布式文件系统 | |
CN113761075A (zh) | 切换数据库的方法、装置、设备和计算机可读介质 | |
CN115017149A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN113761053A (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
CN113760861A (zh) | 一种数据迁移的方法和装置 | |
CN113760600A (zh) | 一种数据库备份方法、数据库还原方法和相关装置 | |
CN113779048A (zh) | 一种数据处理方法和装置 | |
CN116257501A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111984686A (zh) | 一种数据处理的方法和装置 | |
CN113760860B (zh) | 一种数据读取方法和装置 | |
CN117112500B (zh) | 一种资源管理方法、装置、设备和存储介质 | |
US11327802B2 (en) | System and method for exporting logical object metadata | |
CN113535478B (zh) | 数据备份方法及装置、存储介质及电子设备 | |
CN115982129A (zh) | 数据迁移方法、装置、电子设备及存储介质 | |
CN113779082A (zh) | 一种更新数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |