掌桥专利:专业的专利平台
掌桥专利
首页

数据库的数据清理方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 19:30:30


数据库的数据清理方法、装置、电子设备及存储介质

技术领域

本申请涉及大数据处理技术,可用于金融科技领域或其他相关领域,尤其涉及一种数据库的数据清理方法、装置、电子设备及存储介质。

背景技术

目前,随着单元架构下数据库的数据处理量日益增大,为提升数据库对数据处理的高可用性和数据可恢复性,需要对数据库中历史数据进行清理或者备份。

对于单元架构下多套数据库环境下的数据清除,存在难以兼容不同版本类型的数据库,数据清除参数配置繁琐,数据清除操作复杂等不利于实现清理历史数据的问题,难以确保数据的安全性和可靠性。

发明内容

本申请提供一种数据库的数据清理方法、装置、电子设备及存储介质,通过及时对数据库进行数据清理,以保证数据库中数据的安全性和可靠性。

一方面,本申请提供一种数据库的数据清理方法,应用于单元化架构,上述方法包括:

响应于数据清理请求,获取单元化架构中的数据库的数据清理配置信息;

根据上述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;

控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,其中,上述数据清理方式用于表征在执行上述数据清理任务前,是否对待清理数据进行备份处理。

进一步地,上述数据清理方式包括:仅清理不备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区,则确定上述分区是否为空;

若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;

若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区;若上述数据库的当前版本不是上述目标版本,则将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。

进一步地,上述数据清理方式包括:仅清理不备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

若上述数据清理任务指示上述数据清理线程清理上述数据库中的分区表,则确定上述分区表是否为空,查询语句的条件表达式是否为空;

若确定上述分区表不为空,或上述查询语句的条件表达式不为空,则输出分区表异常信息,其中,上述分区表异常信息包含:分区表异常代码和分区表异常描述信息;

若确定上述分区表为空,且上述查询语句的条件表达式为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表,以删除与上述本次待清理分区表对应的上述分区表;若上述数据库的当前版本不是上述目标版本,则基于上述分区表新建临时数据表,以删除上述临时数据表。

进一步地,上述数据清理方式包括:仅清理不备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

若上述数据清理任务指示上述数据清理线程清理上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空;

若确定上述清理条件为空,则输出清理条件异常信息,其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息;

若确定上述清理条件不为空,则查询满足上述清理条件的本次待清理数据,以根据上述清理条件删除上述分区表中的本次待清理数据。

进一步地,上述数据清理方式包括:清理且备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,则确定待清理的原数据表是否为分区表;

若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息,其中,上述原数据表异常信息包含:原数据表异常代码和原数据表异常描述信息;

若确定上述待清理的原数据表是上述分区表,则根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务。

进一步地,上述根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务,包括:

若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息,其中,上述历史数据表异常信息包含:历史数据表异常代码和历史数据表异常描述信息;

若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;

若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,且上述分区写入上述历史数据表的方式为插入方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表;若上述数据库的当前版本不是上述目标版本,且上述分区写入上述历史数据表的方式为交换方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。

进一步地,上述数据清理方式包括:清理且备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的非分区表,则确定上述非分区表对应的原数据表是否为空,查询语句的条件表达式是否为空;

若确定上述原数据表为空,或上述查询语句的条件表达式为空,则输出写入方式异常信息,其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息;

若确定上述原数据表不为空,上述查询语句的条件表达式不为空,且上述非分区表写入历史数据表的方式为插入方式,则确定上述数据库的当前版本是否为目标版本;

若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表对应的原数据表,将上述原数据表插入至上述历史数据表之后,删除上述原数据表;若上述数据库的当前版本不是上述目标版本,则基于上述原数据表新建临时数据表,并将上述临时数据表插入至上述历史数据表之后,删除上述临时数据表。

进一步地,上述数据清理方式包括:清理且备份方式,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空;

若确定上述清理条件为空,则输出清理条件异常信息,其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息;

若确定上述清理条件不为空,则确定上述数据库的分区表中满足清理条件的数据写入历史数据表的方式是否为插入方式;

若不是上述插入方式,则查询满足清理条件的数据所在的原数据表,将上述原数据表插入至历史数据表之后,删除上述原数据表;若是上述插入方式,则输出写入方式异常信息,其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息。

另一方面,本申请提供一种数据库的数据清理装置,应用于单元化架构,上述装置包括:

获取模块,用于响应于数据清理请求,获取上述单元化架构中的数据库的数据清理配置信息;

确定模块,用于根据上述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;

清理模块,用于控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,其中,上述数据清理方式用于表征在执行上述数据清理任务前,是否对待清理数据进行备份处理。

进一步地,上述数据清理方式包括:仅清理不备份方式,上述清理模块,包括:

第一确定单元,用于若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区,则确定上述分区是否为空;

第一输出单元,用于若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;

第一清理单元,用于若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区;若上述数据库的当前版本不是上述目标版本,则将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。

进一步地,上述数据清理方式包括:仅清理不备份方式,上述清理模块,包括:

第二确定单元,用于若上述数据清理任务指示上述数据清理线程清理上述数据库中的分区表,则确定上述分区表是否为空,查询语句的条件表达式是否为空;

第二输出单元,用于若确定上述分区表为空,或上述查询语句的条件表达式为空,则输出分区表异常信息,其中,上述分区表异常信息包含:分区表异常代码和分区表异常描述信息;

第二清理单元,用于若确定上述分区表不为空,且上述查询语句的条件表达式不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表,以删除与上述本次待清理分区表对应的上述分区表;若上述数据库的当前版本不是上述目标版本,则基于上述分区表新建临时数据表,以删除上述临时数据表。

进一步地,上述数据清理方式包括:仅清理不备份方式,上述清理模块,包括:

第三确定单元,用于若上述数据清理任务指示上述数据清理线程清理上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空;

若确定上述清理条件为空,则输出清理条件异常信息,其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息;

第三清理单元,用于若确定上述清理条件不为空,则查询满足上述清理条件的本次待清理数据,以根据上述清理条件删除上述分区表中的本次待清理数据。

进一步地,上述数据清理方式包括:清理且备份方式,上述清理模块,包括:

第四确定单元,用于若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,则确定待清理的原数据表是否为分区表;

第三输出单元,用于若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息,其中,上述原数据表异常信息包含:原数据表异常代码和原数据表异常描述信息;

第四清理单元,用于若确定上述待清理的原数据表是上述分区表,则根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务。

进一步地,上述第四清理单元,包括:

第四输出单元,用于若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息,其中,上述历史数据表异常信息包含:历史数据表异常代码和历史数据表异常描述信息;

第五输出单元,用于若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;

第五清理单元,用于若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,且上述分区写入上述历史数据表的方式为插入方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表;若上述数据库的当前版本不是上述目标版本,且上述分区写入上述历史数据表的方式为交换方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。

进一步地,上述数据清理方式包括:清理且备份方式,上述清理模块,包括:

第五确定单元,用于若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的非分区表,则确定上述非分区表对应的原数据表是否为空,查询语句的条件表达式是否为空;

第六输出单元,用于若确定上述原数据表为空,或上述查询语句的条件表达式为空,则输出写入方式异常信息,其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息;

第六确定单元,用于若确定上述原数据表为空,上述查询语句的条件表达式为空,且上述非分区表写入历史数据表的方式为插入方式,则确定上述数据库的当前版本是否为目标版本;

第六清理单元,用于若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表对应的原数据表,将上述原数据表插入至上述历史数据表之后,删除上述原数据表;若上述数据库的当前版本不是上述目标版本,则基于上述原数据表新建临时数据表,并将上述临时数据表插入至上述历史数据表之后,删除上述临时数据表。

进一步地,上述数据清理方式包括:清理且备份方式,上述清理模块,包括:

第七确定单元,用于若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空;

第七输出单元,用于若确定上述清理条件为空,则输出清理条件异常信息,其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息;

第八确定单元,用于若确定上述清理条件不为空,则确定上述数据库的分区表中满足清理条件的数据写入历史数据表的方式是否为插入方式;

第七清理单元,用于若不是上述插入方式,则查询满足清理条件的数据所在的原数据表,将上述原数据表插入至历史数据表之后,删除上述原数据表;若是上述插入方式,则输出写入方式异常信息,其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息。

另一方面,本申请提供一种电子设备,包括:处理器,以及与上述处理器连接的存储器;上述存储器存储计算机执行指令;上述处理器执行上述存储器存储的计算机执行指令,以实现如任一项上述的方法。

另一方面,本申请提供一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机执行指令,上述计算机执行指令被处理器执行时用于实现如任一项上述的方法。

另一方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现任一项上述的方法。

本申请提供的数据库的数据清理方法,应用于单元化架构,通过响应于用户在客户端上的触控操作,触发对单元化架构中的数据库(如MySQL数据库)进行清理的数据清理请求,以获取该数据库的数据清理配置信息,例如,用于清理该数据库的多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务。之后,则可以控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务。

通过提供一种迁数据库的数据清理方案,以便于满足单元化架构中数据库在数据清理过程中的灵活需求,并且为实现确保数据清理过程中的可容灾性、可容错性,实现简单。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例提供的一种数据库的数据清理方法的流程示意图;

图2为本申请实施例提供的一种可选的数据库的数据清理方法的流程示意图;

图3是本申请实施例所提供的一种可选的数据库的数据清理方法的流程示意图;

图4是本申请实施例所提供的一种可选的数据库的数据清理方法的流程示意图;

图5是本申请实施例所提供的一种可选的数据库的数据清理方法的流程示意图;

图6是本申请实施例所提供的一种可选的数据库的数据清理方法的流程示意图;

图7是本申请实施例所提供的一种可选的数据库的数据清理方法的流程示意图;

图8为本申请实施例提供的一种数据库的数据清理装置的结构框图;

图9为本申请实施例提供的一种电子设备的结构示意图。

通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

首先对本申请所涉及的名词进行解释:

单元化:一种架构模式,单元是指一个能完成所有业务操作的自包含集合,在这个集合中包含了所有业务所需的所有服务,以及分配给这个单元的数据。单元化架构就是将单元作为部署的基本单位,在全站所有机房中部署多个单元,每个机房内单元数目不固定,任一单元均部署系统所需的全部应用,数据则是全量数据按照某种维度划分后的一部分。

异构数据库:是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,几个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的数据库管理系统、外构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍有自己的应用特性、完整性控制和安全性控制。

分区表:采用数据分区技术,将一个数据表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的。

数据分区:是一种物理数据库的设计技术,它的目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中,实际上还是一张表。另外,分区可以做到将表的数据均衡到不同的地方,提高数据检索的效率,降低数据库的频繁IO压力值。

临时数据表:还可以称为版本由系统控制的临时数据表,是因为每一行的有效期由系统(即数据库引擎)管理。每当修改了某行后,系统将以独占方式使用这些期限列来记录每行的有效期。通过设置临时数据表,可以在必要时审核所有数据变更并执行数据取证,重构数据在过去任意时间之前的状态,计算各时间段的趋势,为决策支持应用程序保持一个慢速变化的维度,在发生意外的数据更改和应用程序错误后进行恢复。

原数据表:用于存储当前数据的主表称为原数据表,或简称为时态表,是用户表的一种类型,以数据库功能的形式引入了内置支持,可以提供表中存储的数据在任意时间点的相关信息,而不仅仅是数据在当前时刻正确的信息。旨在保留完整的数据更改历史记录,并轻松实现时间点分析。

历史数据表:又称为即为历史记录表,除了时间段列以外,时态表还包含对使用镜像架构的历史记录表的引用,每当更新或删除了时态表中的某行后,系统将使用历史记录表来自动存储该行的先前版本,在创建时态表期间,用户可以指定现有的或者让系统创建默认的历史记录表。

在一些应用程序进行单元化架构转型建设的过程中,以单元化架构下的异步数据库为例,目前现有的Orac l e数据库的清除方式结合Seas(元数据及软件管理系统),以配置数据清除周期,Seas提供了相关工具,可以对Orac l e表的数据生命周期配置并管理,但是,在MySQL环境中暂无该项支持,对于单元化中多套数据库环境的数据清除是一个难题,且存量应用中存在对于数据清除配置繁琐,操作复杂的问题。

而且,目前MySQL客户端的版本也陆续升级到8.0版本,对于新旧应用暂无统一的方案和构件支持相关清除的处理。

对于异构数据库迁移场景下的数据清除,暂未有相关的方案来保证数据的完整性以及验证正确性。

需要说明的是,本公开实施例的数据清理方法和装置可用于金融领域。也可用于除金融领域以外的任意领域。本公开数据库的数据清理方法和装置应用领域不作限定。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

本申请实施例提供了一种数据库的数据清理方法,应用于单元化架构,图1是本申请实施例所提供的一种数据库的数据清理方法的流程示意图,如图1所示,该方法包括:

S101,响应于数据清理请求,获取单元化架构中的数据库的数据清理配置信息。

S102,根据上述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务。

S103,控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务。

其中,上述数据清理方式用于表征在执行上述数据清理任务前,是否对待清理数据进行备份处理。

本公开实施例所提供的数据清理方法,可以在Orac l e数据库、MySQL数据库上实现,并且可以兼容MySQL数据库的不同版本,例如,MySQL5.0版本,或者MySQL8.0版本,并且,本公开实施例可以基于MySQL8.0升级内容,对应提供不同数据清理的应用场景,涵盖所有数据清理相关操作,以针对不同的数据清理场景(类型),采用对应不同的数据清理方式以执行对应的数据清理任务。

一种可选的示例中,本公开实施例的执行主体可以是服务器,也可以是具备数据处理功能的终端设备。本公开实施例可以用于单元化架构下的异步数据库进行数据清理的应用场景中。

例如,以单元化架构下的异步数据库为例,Orac l e数据库向MySQL数据库迁移数据之后,进行数据清理。通过响应于用户在客户端上的触控操作,触发对数据库(如MySQL数据库)进行清理的数据清理请求,以获取单元化架构中的数据库的数据清理配置信息,例如,用于清理该数据库的多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务。之后,则可以控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务。

可选的,上述数据清理方式包括:仅清理不备份方式,清理且备份方式,对应的,多个数据清理线程各自对应的数据清理任务,与数据清理方式之间也存在对应关系,例如,可以是一对一,一对多,也可以是多对一,多对多的对应关系,以在执行不同的数据清理任务时,提供更加丰富的数据清理方式。

可选的,本公开实施例,可以预先配置数据清理周期,例如,可以为24小时,也可以为3*24小时,或者7*24小时等。

以数据清理周期为24小时为例,获取24小时内,即一个数据迁移的工作日内,从Orac l e数据库迁移到MySQL数据库的迁移数据中的待清理数据。可选的,第一数据库迁移至第二数据库的迁移数据可以但不限于为交易过程中产生的存量数据,例如,交易信息、客户协议、系统参数等。

针对这些不同类型的待清理数据,可以采用不同的数据清理方式,以即不同的数据清理任务执行对应的数据清理操作,需要说明的是,在本公开实施例中,不同的数据清理任务,对应配置的数据清理周期和数据清理规则可以存在差别,且可以兼容不同的数据库以及不同数据库版本。

此外,本公开实施例,还可以支持分片处理、串行处理、并行处理,以便于满足用户在数据清理过程中的灵活需求,并且为实现确保数据清理过程中的可容灾性、可容错性,还可以对数据清理清理之前,进行备份处理,当然,用户也可以选择不进行备份操作。

一种示例中,上述数据清理方式包括:仅清理不备份方式,图2为本申请实施例提供的一种可选的数据库的数据清理方法的流程示意图,如图2所示,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

S201,若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区,则确定上述分区是否为空。

S202,若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息。

S203,若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区;若上述数据库的当前版本不是上述目标版本,则将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。

可选的,根据数据清理方式的不同,可以将数据清理任务划分为两大类,在讨论数据清理方式为仅清理不备份方式的场景下,将若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区作为第一清理类型1,则先判断清理的原数据表是否为分区表,如果清理的原数据表不为分区表,则输出分区表分区号异常信息,包含:分区表分区号错误代码(例如,90010001)和分区表分区号错误描述信息。

如果清理的原数据表是分区表,则继续判断该分区表内的分区是否为空,其中,为空表示不合法分区,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码(例如,90010002)和分区异常描述信息。

若确定分区不为空,不为空表示该分区为合法分区,则确定上述数据库的当前版本是否为目标版本;可选的,数据库的目标版本为MySQL8.0版本。

若上述数据库的当前版本是MySQL8.0版本,则查询本次需要清理的记录数,并直接删除/待清理分区表,即查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区。

若上述数据库的当前版本不是MySQL8.0版本,将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。具体是将原数据表名和新临时文件赋值得到新建临时数据表名,先删除需要新建的临时数据表,再创建临时数据表,之后,新临时数据表移除分区,进行分区数据交换之后,删除新建的临时数据表。

一种示例中,上述数据清理方式包括:仅清理不备份方式,图3为本申请实施例提供的一种可选的数据库的数据清理方法的流程示意图,如图3所示,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

S301,若上述数据清理任务指示上述数据清理线程清理上述数据库中的分区表,则确定上述分区表是否为空,查询语句的条件表达式是否为空。

S302,若确定上述分区表为空,或上述查询语句的条件表达式为空,则输出分区表异常信息。

其中,上述分区表异常信息包含:分区表异常代码和分区表异常描述信息。

S303,若确定上述分区表不为空,且上述查询语句的条件表达式不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表,以删除与上述本次待清理分区表对应的上述分区表;若上述数据库的当前版本不是上述目标版本,则基于上述分区表新建临时数据表,以删除上述临时数据表。

可选地,上述方法步骤S301至S303还可以用于执行清理上述数据库中的非分区表,执行步骤和实现方式与上述S301至S303相同或相似。

可选的,上述查询语句的条件表达式为where条件表达式。

本公开实施例中,在讨论数据清理方式为仅清理不备份方式的场景下,将若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表,作为第二清理类型2,则先判断原数据表分区是否为空,where条件是否为空。若确定上述分区表为空,或上述查询语句的条件表达式为空,则输出分区表异常信息,上述分区表异常信息包含:分区表异常代码(例如,90010003)和分区表异常描述信息(例如:原数据表分区不为空,where条件不为空)。

若确定上述分区表不为空,且上述查询语句的条件表达式不为空,则确定上述数据库的当前版本是否为目标版本;可选的,数据库的目标版本为MySQL8.0版本。

一种示例中,若上述数据库的当前版本不是MySQL8.0版本,则基于上述分区表新建临时数据表,以删除上述临时数据表。具体可以将新建临时数据表名=原数据表名+新临时文件,之后先删除需要新建的临时数据表,再创建临时数据表,对于原数据表,命名为原数据表名+旧临时文件,对临时数据表,命名为原数据表名,以删除新建的临时数据表。

另一示例中,若上述数据库的当前版本是MySQL8.0版本,则查询上述数据库的本次待清理分区表,以删除与上述本次待清理分区表对应的上述分区表。

一种示例中,上述数据清理方式包括:仅清理不备份方式,图4为本申请实施例提供的一种可选的数据库的数据清理方法的流程示意图,如图4所示,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

S401,若上述数据清理任务指示上述数据清理线程清理上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空。

S402,若确定上述清理条件为空,则输出清理条件异常信息。

其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息。

S403,若确定上述清理条件不为空,则查询满足上述清理条件的本次待清理数据,以根据上述清理条件删除上述分区表中的本次待清理数据。

本公开实施例中,在讨论数据清理方式为仅清理不备份方式的场景下,将若上述数据清理任务指示上述数据清理线程,清理上述数据库的分区表中满足清理条件的数据,作为第三清理类型3,则先确定上述清理条件是否为空。

若确定上述清理条件为空,则输出清理条件异常信息,该上述清理条件异常信息包含:清理条件异常代码(例如,90010004)和清理条件异常描述信息(例如,清理条件为空)。

若确定上述清理条件不为空,则查询本次需要清理的记录数,固定每次清理的记录数,计算需要清理的次数;根据清理条件循环执行数据清理任务,并按照自增主键升序删除原数据表数据,每次最多删除固定记录数,以得到记录日志。

一种示例中,上述数据清理方式包括:清理且备份方式,图5为本申请实施例提供的一种可选的数据库的数据清理方法的流程示意图,如图5所示,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

S501,若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,则确定待清理的原数据表是否为分区表。

S502,若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息。其中,上述原数据表异常信息包含:原数据表异常代码和原数据表异常描述信息。

S503,若确定上述待清理的原数据表是上述分区表,则根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务。

本公开实施例中,在讨论数据清理方式为清理且备份方式的场景下,先确定历史数据表名是否为空,若历史数据表名为空,则生成对应的历史数据表异常信息,历史数据表错误代码(例如,90010005)和历史数据表错误描述信息(例如,历史数据表为空)。

若历史数据表名为空,则继续根据数据清理方式,并确定不同的数据清理任务或数据清理类型,以并行执行数据清理任务,例如,将若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,作为第四清理类型4,则先判断待清理的原数据表是否为分区表。

一种示例中,若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息,该原数据表异常信息包含:原数据表异常代码(例如,90010001)和原数据表异常描述信息(例如,清理的原数据表或历史数据表为非分区表)。

若确定上述待清理的原数据表是上述分区表,则确定清理的历史数据表是否为分区表,以根据待清理的历史数据表是否为上述分区表,确定后续如何执行上述数据清理任务。

一种示例中,仍如图5所示,上述S503,根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务,包括:

S601,若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息。

其中,上述历史数据表异常信息包含:历史数据表异常代码和历史数据表异常描述信息。

S602,若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;

S603,若确定上述分区为空,则输出分区异常信息。

其中,上述分区异常信息包含:分区异常代码和分区异常描述信息。

S604,若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,且上述分区写入上述历史数据表的方式为插入方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表;若上述数据库的当前版本不是上述目标版本,且上述分区写入上述历史数据表的方式为交换方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。

本公开实施例中,若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息,该历史数据表异常信息包含:历史数据表异常代码(例如,90010001)和历史数据表异常描述信息(例如,清理的原数据表或历史数据表为非分区表)。若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;若确定上述分区为空,则输出分区异常信息,该其中,上述分区异常信息包含:分区异常代码(例如,90010002)和分区异常描述信息(例如,分区表分区号错误)。

若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本,可选地,数据库的目标版本是MySQL8.0版本。

一种示例中,若上述数据库的当前版本是MySQL8.0版本,且上述分区写入上述历史数据表的方式为插入i nsert方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表,即通过则查询本次需要清理备份的记录数,固定每次需要清理的记录数,计算需要清理备份的次数;循环带条件查询原数据表指定记录数(例如,可附加条件且主键升序)并插入到历史数据表,并记录日志,并直接删除待清理分区表(例如,截断待清理分区表)。

另一种示例中,若上述数据库的当前版本是MySQL8.0版本,上述分区写入上述历史数据表的方式不是插入i nsert方式,则生成对应的写入方式异常信息,写入方式错误代码(例如,90010006)和写入方式错误描述信息(例如,插入历史数据表方式配置错误)。

另一种示例中,若上述数据库的当前版本不是MySQL8.0版本,且上述分区写入上述历史数据表的方式为交换exchange方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。例如,具体可以新建临时数据表名=原数据表名+新临时文件,之后先删除需要新建的临时数据表,创建临时数据表,再新临时数据表移除分区,之后进行分区数据交换,即临时数据表和历史数据表分区交换后,删除新建的临时数据表。

另一种示例中,若上述数据库的当前版本不是MySQL8.0版本,且上述分区写入上述历史数据表的方式不是交换exchange方式,则生成对应的写入方式异常信息,写入方式错误代码(例如,90010006)和写入方式错误描述信息(例如,插入历史数据表方式配置错误)。

一种示例中,上述数据清理方式包括:清理且备份方式,图6为本申请实施例提供的一种可选的数据库的数据清理方法的流程示意图,如图6所示,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

S701,若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的非分区表,则确定上述非分区表对应的原数据表是否为空,查询语句的条件表达式是否为空。

S702,若确定上述原数据表为空,或上述查询语句的条件表达式为空,则输出写入方式异常信息。

其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息。

S703,若确定上述原数据表不为空,上述查询语句的条件表达式不为空,且上述非分区表写入历史数据表的方式为插入方式,则确定上述数据库的当前版本是否为目标版本。

S704,若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表对应的原数据表,将上述原数据表插入至上述历史数据表之后,删除上述原数据表;若上述数据库的当前版本不是上述目标版本,则基于上述原数据表新建临时数据表,并将上述临时数据表插入至上述历史数据表之后,删除上述临时数据表。

本公开实施例中,在讨论数据清理方式为清理且备份方式的场景下,例如,若将上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的非分区表,作为第五清理类型5,则先判断上述非分区表对应的原数据表是否为空,查询语句的条件表达式是否为空。

若确定上述原数据表为空,或上述查询语句的条件表达式为空,则输出写入方式异常信息(例如,插入历史数据表的配置方式错误)。

其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息。

一种示例中,若确定上述原数据表不为空,上述查询语句的条件表达式不为空,上述非分区表写入历史数据表的方式不是插入i nsert方式,则生成对应的写入方式异常信息,写入方式错误代码(例如,90010006)和写入方式错误描述信息(例如,插入历史数据表方式配置错误)。

另一种示例中,若确定上述原数据表为空,上述查询语句的条件表达式为空,且上述非分区表写入历史数据表的方式为插入i nsert方式,则确定上述数据库的当前版本是否为目标版本,例如,MySQL8.0版本。

若上述数据库的当前版本是MySQL8.0版本,则查询上述数据库的本次待清理分区表对应的原数据表,将上述原数据表插入至上述历史数据表之后,删除上述原数据表,例如,查询本次需要清理备份的记录数,固定每次需要清理的记录数,计算需要清理备份的次数;循环带条件查询原数据表指定记录数(可带条件且主键升序)并插入到历史数据表,并记录日志,并直接删除待清理分区表(例如,截断待清理分区表)。

若上述数据库的当前版本不是MySQL8.0版本,则基于上述原数据表新建临时数据表,并将上述临时数据表插入至上述历史数据表之后,删除上述临时数据表。例如,新建临时数据表名=原数据表名+新临时文件之后,先删除需要新建的临时数据表,再创建临时数据表,对于原数据表,命名为原数据表名+旧临时文件,针对临时数据表,命名为原数据表名。删除新建的临时数据表,并从临时数据表查询后插入历史数据表(可带条件),删除新建的临时数据表。

一种示例中,上述数据清理方式包括:清理且备份方式,图7为本申请实施例提供的一种可选的数据库的数据清理方法的流程示意图,如图7所示,上述控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,包括:

S801,若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空。

S802,若确定上述清理条件为空,则输出清理条件异常信息。

其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息。

S803,若确定上述清理条件不为空,则确定上述数据库的分区表中满足清理条件的数据写入历史数据表的方式是否为插入方式。

S804,若不是上述插入方式,则查询满足清理条件的数据所在的原数据表,将上述原数据表插入至历史数据表之后,删除上述原数据表;若是上述插入方式,则输出写入方式异常信息。

其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息。

本公开实施例中,在讨论数据清理方式为清理且备份方式的场景下,若将上述数据清理任务指示上述数据清理线程,清理且备份上述数据库的分区表中满足清理条件的数据,作为第六清理类型6,则判断上述清理条件是否为空。

若确定上述清理条件为空,则输出清理条件异常信息,该清理条件异常信息包含:清理条件异常代码(例如,90010004)和清理条件异常描述信息(例如,清理条件为空)。

若确定上述清理条件不为空,则上述数据库的分区表中满足清理条件的数据写入历史数据表的方式是否为插入i nsert方式。

一种示例中,若是上述插入方式,则输出写入方式异常信息,上述写入方式异常信息包含:写入配置异常代码(例如,90010006)和写入配置异常描述信息(例如,插入历史数据表方式配置错误)。

另一种示例中,若不是上述插入方式,则查询满足清理条件的数据所在的原数据表,将上述原数据表插入至历史数据表之后,删除上述原数据表;例如,具体可以通过查询本次需要清理备份的记录数,固定每次需要清理的记录数,计算需要清理备份的次数;循环附加带条件查询原数据表指定记录数并(例如,附加条件且主键升序)插入到历史数据表,并记录日志。

可选的,本公开实施例中,通过以上各实施例,可以实现简化数据清理和数据备份的配置项,制定统一的应用与清理构件间交互的配置项规范,可以实现通配所有数据清理场景或数据清理类型,具备对接行内元数据及软件管理系统的前景,可推广至其他各应用场景。

需要说明的是,本公开实施例中,如下配置参数可以应用于上述任意一个或多个可选的示例中,以实现本公开所要实现的技术效果。可选的,调用清理构件的输入参数,可以但不限于如表1所示,清理构件的返回输出参数,可以但不限于如表2所示:

表1

表2

通过本公开实施例的数据清理方法,针对单元化架构下异构数据库迁移数据的清理,首先,可以兼容MySQL数据库不同版本的客户端,如MySQL5.7版本和MySQL8.0版本,需要说明的是,不同版本之间存在一些语法、性能上的不同。

其次,本公开实施例,还可以配置并管理MySQL数据库中数据表的数据生命周期。且配置简单,支持对接行内元数据及软件管理Seas系统,通用性强。

再次,由于大型数据库系统的交易表数据量庞大,本公开实施例,对于不同数据表的清除需要兼顾性能,支持分片处理、串行处理、并行处理,满足灵活调用,满足批量处理的规范,支持并行操作多数据源下多表清除。

此外,由于大型数据库系统的数据表繁多,数据表类型也不一,本公开实施例,对于分区表、非分区表需要有不同类型的清除方式,包括全表清除、部分清除等。同时清除过程为确保容灾和容错,需进行备份处理(可选项)。

最后,由于数据清除一般在晚间日终进行,本公开实施例,对于交易系统以及高敏应用,需要控制日终批量处理时间段,避免在日间联机交易高峰执行批量,影响联机交易性能以及成功率。且支持控制清除执行时间,到期自动停止,避免影响联机交易。

本公开实施例,通过多数据清理线程进行数据清理处理以及监控,实现应用侧自定义对数据清理任务的排程,可以但不限于采用串行处理、并行处理、断点重跑的作业方式,以实现对数据清理处理的自主可控。此外,本公开实施例支持统一的MySQL数据库的数据清除处理,可以解决异构数据库在迁移数据处理场景下,无法高效执行数据清除的相关问题。本公开实施例,还可以对执行数据清理任务耗时的监控,在数据清理处理的执行时长到达时长阈值时触发报警,以实现数据清理处理流程的可检测性。

根据本申请的一个或多个实施例,提供了一种数据库的数据清理装置,图8为本申请实施例提供的一种数据库的数据清理装置的结构框图,如图8所示,上述装置包括:

获取模块600,用于响应于数据清理请求,获取单元化架构中的数据库的数据清理配置信息;

确定模块601,用于根据上述清理配置信息确定多个数据清理线程,以及多个数据清理线程各自对应的数据清理方式和数据清理任务;

清理模块602,用于控制多个上述数据清理线程采用各自对应的上述数据清理方式,执行各自的数据清理任务,其中,上述数据清理方式用于表征在执行上述数据清理任务前,是否对待清理数据进行备份处理。

进一步地,上述数据清理方式包括:仅清理不备份方式,上述清理模块,包括:

第一确定单元,用于若上述数据清理任务指示上述数据清理线程,清理上述数据库中的分区表内的分区,则确定上述分区是否为空;

第一输出单元,用于若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;

第一清理单元,用于若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区,以删除与上述本次待清理分区对应的上述分区;若上述数据库的当前版本不是上述目标版本,则将上述分区中的分区数据交换到临时数据表,以删除上述临时数据表。

进一步地,上述数据清理方式包括:仅清理不备份方式,上述清理模块,包括:

第二确定单元,用于若上述数据清理任务指示上述数据清理线程清理上述数据库中的分区表,则确定上述分区表是否为空,查询语句的条件表达式是否为空;

第二输出单元,用于若确定上述分区表为空,或上述查询语句的条件表达式为空,则输出分区表异常信息,其中,上述分区表异常信息包含:分区表异常代码和分区表异常描述信息;

第二清理单元,用于若确定上述分区表不为空,且上述查询语句的条件表达式不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表,以删除与上述本次待清理分区表对应的上述分区表;若上述数据库的当前版本不是上述目标版本,则基于上述分区表新建临时数据表,以删除上述临时数据表。

进一步地,上述数据清理方式包括:仅清理不备份方式,上述清理模块,包括:

第三确定单元,用于若上述数据清理任务指示上述数据清理线程清理上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空;

若确定上述清理条件为空,则输出清理条件异常信息,其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息;

第三清理单元,用于若确定上述清理条件不为空,则查询满足上述清理条件的本次待清理数据,以根据上述清理条件删除上述分区表中的本次待清理数据。

进一步地,上述数据清理方式包括:清理且备份方式,上述清理模块,包括:

第四确定单元,用于若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的分区表内的分区,则确定待清理的原数据表是否为分区表;

第三输出单元,用于若确定上述待清理的原数据表不是上述分区表,则输出原数据表异常信息,其中,上述原数据表异常信息包含:原数据表异常代码和原数据表异常描述信息;

第四清理单元,用于若确定上述待清理的原数据表是上述分区表,则根据待清理的历史数据表是否为上述分区表,以继续执行上述数据清理任务。

进一步地,上述第四清理单元,包括:

第四输出单元,用于若确定上述待清理的历史数据表不是上述分区表,则输出历史数据表异常信息,其中,上述历史数据表异常信息包含:历史数据表异常代码和历史数据表异常描述信息;

第五输出单元,用于若确定上述待清理的历史数据表是上述分区表,则确定上述分区表内的分区是否为空;若确定上述分区为空,则输出分区异常信息,其中,上述分区异常信息包含:分区异常代码和分区异常描述信息;

第五清理单元,用于若确定上述分区不为空,则确定上述数据库的当前版本是否为目标版本;若上述数据库的当前版本是上述目标版本,且上述分区写入上述历史数据表的方式为插入方式,则将上述原数据表命名为临时数据表,将上述临时数据表中查询到的上述分区插入历史数据表,以删除上述临时数据表;若上述数据库的当前版本不是上述目标版本,且上述分区写入上述历史数据表的方式为交换方式,将上述临时数据表中的分区交换到上述历史数据表,以删除上述临时数据表。

进一步地,上述数据清理方式包括:清理且备份方式,上述清理模块,包括:

第五确定单元,用于若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库中的非分区表,则确定上述非分区表对应的原数据表是否为空,查询语句的条件表达式是否为空;

第六输出单元,用于若确定上述原数据表为空,或上述查询语句的条件表达式为空,则输出写入方式异常信息,其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息;

第六确定单元,用于若确定上述原数据表不为空,上述查询语句的条件表达式不为空,且上述非分区表写入历史数据表的方式为插入方式,则确定上述数据库的当前版本是否为目标版本;

第六清理单元,用于若上述数据库的当前版本是上述目标版本,则查询上述数据库的本次待清理分区表对应的原数据表,将上述原数据表插入至上述历史数据表之后,删除上述原数据表;若上述数据库的当前版本不是上述目标版本,则基于上述原数据表新建临时数据表,并将上述临时数据表插入至上述历史数据表之后,删除上述临时数据表。

进一步地,上述数据清理方式包括:清理且备份方式,上述清理模块,包括:

第七确定单元,用于若上述数据清理任务指示上述数据清理线程,清理且备份上述数据库的分区表中满足清理条件的数据,则确定上述清理条件是否为空;

第七输出单元,用于若确定上述清理条件为空,则输出清理条件异常信息,其中,上述清理条件异常信息包含:清理条件异常代码和清理条件异常描述信息;

第八确定单元,用于若确定上述清理条件不为空,则确定上述数据库的分区表中满足清理条件的数据写入历史数据表的方式是否为插入方式;

第七清理单元,用于若不是上述插入方式,则查询满足清理条件的数据所在的原数据表,将上述原数据表插入至历史数据表之后,删除上述原数据表;若是上述插入方式,则输出写入方式异常信息,其中,上述写入方式异常信息包含:写入配置异常代码和写入配置异常描述信息。

在示例性实施例中,本申请实施例还提供了一种电子设备,包括:处理器,以及与上述处理器连接的存储器;

上述存储器存储计算机执行指令;

上述处理器执行上述存储器存储的计算机执行指令,以实现如任一项上述的方法。

在示例性实施例中,本申请实施例还提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机执行指令,上述计算机执行指令被处理器执行时用于实现如任一项上述的方法。

在示例性实施例中,本申请实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现任一项上述的方法。

为了实现上述实施例,本申请实施例还提供了一种电子设备。

参考图9,其示出了适于用来实现本申请实施例的电子设备700的结构示意图,该电子设备700可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Persona l D i g i ta l Ass i stant,简称PDA)、平板电脑(Portab l eAndro i d Dev i ce,简称PAD)、便携式多媒体播放器(Portab l e Med i a P l ayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图9示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图9所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(Read On l y 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;包括例如液晶显示器(L i qu i dCrysta l D i sp l ay,简称LCD)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从ROM 702被安装。在该计算机程序被处理装置701执行时,执行本申请实施例的方法中限定的上述功能。

需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传填用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传填,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。

可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Sma l l ta lk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(Loca l Area Network,简称LAN)或广域网(Wi deArea Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(AS I C)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。

在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

相关技术
  • 数据库同步恢复方法、装置、计算机可读存储介质和电子设备
  • 实时数据库同步方法、装置、电子设备及存储介质
  • 数据库操作方法、装置、电子设备及存储介质
  • 存储清理方法、装置、电子设备及存储介质
  • 数据库清理方法、系统、装置及存储介质
  • 数据库优化方法、数据库优化装置、电子设备和存储介质
  • 数据库优化方法、数据库优化装置、电子设备和存储介质
技术分类

06120115936311