异常数据的恢复方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种异常数据的恢复方法及装置。
背景技术
面向服务化的系统架构中,为了避免系统之间过度耦合,系统与系统之间数据传递的主要方式是通过异步消息的方式进行同步。一般情况下,业务系统通过异步消息将业务数据传递给数据使用方,通常数据使用方的数据需要从多个业务系统的不同异步消息获取进行整合以提供数据服务。如果数据使用方在异步消息处理时的代码逻辑出错的话,整合出的数据是错误的,这样会造成数据服务的不可用。
相关技术中在数据使用方的数据出现异常后,一般需要人工手动捞出受影响异常数据对应的原数据,以及准备数据库的数据订正SQL(Structured Query Language,结构化查询语言)语句,以对受影响异常数据进行数据订正。
然而,上述数据恢复过程中往往碰到以下问题:(1)数据量较大情况下的数据恢复的效率很低,或难度很大。当异常数据量达到数百万、数千万甚至数亿的情况下,通过人工进行恢复的方法往往是无法操作的。(2)人工捞取数据的操作起来往往很复杂,且成本很大。由于数据使用方的数据通常来源于多个业务系统,往往需要从多个业务系统的数据库表中手动捞出受影响异常数据对应的原数据,而原数据表可能会由于数据量的原因进行分库分表存储,也可能由于数据库范式设计的原因,即使同个业务中,所需的数据也是分散在不同的业务表中,人工捞取数据十分困难。
因此,目前急需一种能够快速进行异常数据的恢复的方式。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种异常数据的恢复方法,该方法在恢复异常的过程中,无需用户手动获取异常数据对应的原始数据,能够快速对异常数据进行恢复,减少了恢复异常数据所需的处理时间,提高了系统的异常数据的恢复能力。
本申请的第二个目的在于提出一种异常数据的恢复装置。
为达上述目的,本申请第一方面实施例提出了一种异常数据的恢复方法,包括:获取故障时间段,并根据所述故障时间段确定异常数据的在线数据表所处理的业务类型,并从所述业务类型对应的在线业务数据库中获取对应的多个原始数据表;对所述多个原始数据表进行合并以生成合并信息表;确定目标表的数据要求,并根据所述目标表的数据要求和所述合并信息表生成所述目标表;将所述目标表同步至所述在线数据表,以恢复所述在线数据表中的异常数据。
本申请实施例的异常数据的恢复方法,在确定线上数据发生异常后,根据故障时间段确定异常数据的在线数据表所处理的业务类型,并从业务类型对应的在线业务数据库中获取对应的多个原始数据表,对多个原始数据表进行合并以生成合并信息表,确定目标表的数据要求,并根据目标表的数据要求和合并信息表生成目标表,以及将目标表同步至在线数据表,以通过目标表中的数据对在线数据表中的异常数据进行恢复,该实施例的异常数据的恢复方式在恢复异常的过程中,无需用户手动获取异常数据对应的原始数据,能够快速对异常数据进行恢复,减少了恢复异常数据所需的处理时间,提高了系统的异常数据的恢复能力。
为达上述目的,本申请第二方面实施例提出了一种异常数据的恢复装置,包括:获取模块,用于获取故障时间段,并根据所述故障时间段确定异常数据的在线数据表所处理的业务类型,并从所述业务类型对应的在线业务数据库中获取对应的多个原始数据表;合并模块,用于对所述多个原始数据表进行合并以生成合并信息表;生成模块,用于确定目标表的数据要求,并根据所述目标表的数据要求和所述合并信息表生成所述目标表;同步模块,用于将所述目标表同步至所述在线数据表,以恢复所述在线数据表中的异常数据。
本申请实施例的异常数据的恢复装置,在确定线上数据发生异常后,通过获取模块获取故障时间段,并根据故障时间段确定异常数据的在线数据表所处理的业务类型,并从业务类型对应的在线业务数据库中获取对应的多个原始数据表,然后合并模块对多个交易原始数据表进行合并以生成合并信息表,然后,生成模块根据目标表的数据要求和合并信息表生成目标表,以及同步模块将目标表同步至在线数据表,以通过目标表中的数据对在线数据表中的异常数据进行恢复,该实施例的异常数据的恢复方式在恢复异常的过程中,无需用户手动获取异常数据对应的原始数据,能够快速对异常数据进行恢复,减少了恢复异常数据所需的处理时间,提高了系统的异常数据的恢复能力。
附图说明
图1是本申请一个实施例的异常数据的恢复方法的流程图。
图2是本申请一个实施例的基于离散数据仓库的异常数据的恢复方法的交互流程示意图。
图3是本申请另一个实施例的异常数据的恢复方法的流程图。
图4是本申请一个实施例的异常数据的恢复装置的结构示意图。
图5是本申请另一个实施例的异常数据的恢复装置的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的异常数据的恢复方法及装置。
图1是本申请一个实施例的异常数据的恢复方法的流程图。
如图1所示,该异常数据的恢复方法包括:
S101,获取故障时间段,并根据故障时间段确定异常数据的在线数据表所处理的业务类型,并从业务类型对应的在线业务数据库中获取对应的多个原始数据表。
其中,上述多个原始数据表与发生故障时数据使用方处理的业务有关,多个原始数据表包括多个业务原始数据表和多个业务关联表。例如,数据使用方当前处理的业务为对账,如果数据使用方的对账系统发生故障,则获得交易对账报表的多个原始数据表。对账系统中交易对账报表的数据来源于两个业务系统,分别为交易系统和收费系统,可根据故障时间段从交易系统中获得多个交易原始数据表,以及从收费系统中获得交易收费关联表和收费业务表。
在本申请的实施例中,为了避免数据缺失,在获取故障时间段后,可先对故障时间段进行扩展以生成数据同步时间段,然后获取业务类型对应的在线业务数据库中数据同步时间段中的多个原始数据表。
具体地,在确定数据同步时间段后,可将业务类型对应的在线业务数据库中数据同步时间段中的多个原始数据表同步至离线数据仓库。
例如,假定数据使用方的对账系统的交易对账报表的原始数据表来自交易库的交易分表T1、交易分表T2以及收费库中的收费表和交易收费关联表,如果确定数据使用方的对账系统发生故障的时间段为“2015.6.1 12:05”到“2015.6.2 18:05”,此时,为了避免数据缺失,在对异常数据进行恢复的过程中,可对故障时间段进行扩展以生成数据时间段,假定数据时间段为“2015.6.1”到“2015.6.2”,在确定数据时间段后,可将交易分表T1、交易分表T2、收费表和交易收费关联表中时间信息为2015.6.1到2015.6.2的数据同步至离散数据仓库。
S102,对多个原始数据表进行合并以生成合并信息表。
在本申请的一个实施例中,在将多个原始数据表同步至离散数据仓库后,可按照业务维度对多个业务原始数据表进行合并以生成业务信息表;以及将按照数据库范式设计的多个业务原始数据表和业务关联数据表进行合并以生成业务关联信息表。
例如,在将来自交易库中的交易分表T1(如表1所示)和交易分表T2(如表2所示)同步至离线数据仓库后,为了方便后续处理,可对交易分表T1和交易分表T2进行合并,以得到一张交易信息表(如表3所示)。对于从交易库中获得的收费表(如表4所示)和交易收费关联表(如表5所示),可将收费表和交易收费关联表进行合并,以得到交易收费信息表(如表6所示)。
表1交易分表T1
交易号 |
交易金额 |
…… |
时间 |
X1 |
A1 |
…… |
2015.6.1 12:05 |
X2 |
B1 |
…… |
2015.6.1 13:05 |
表2交易分表T2
交易号 |
交易金额 |
…… |
时间 |
X5 |
A2 |
…… |
2015.6.1 12:15 |
X6 |
B2 |
…… |
2015.6.1 13:25 |
表3交易信息表
交易号 |
交易金额 |
…… |
时间 |
X1 |
A1 |
…… |
2015.6.1 12:05 |
X2 |
B1 |
…… |
2015.6.1 13:05 |
X5 |
A2 |
…… |
2015.6.1 12:15 |
X6 |
B2 |
…… |
2015.6.1 13:25 |
表4收费表
业务流水号 |
交易收费 |
…… |
时间 |
Y1 |
Z1 |
…… |
2015.6.1 12:05 |
Y2 |
Z2 |
…… |
2015.6.1 13:05 |
Y3 |
Z3 |
…… |
2015.6.1 12:15 |
Y4 |
Z4 |
…… |
2015.6.1 13:25 |
表5交易收费关联表
交易号 |
业务流水号 |
…… |
时间 |
X1 |
Y1 |
…… |
2015.6.1 12:05 |
X2 |
Y2 |
…… |
2015.6.1 13:05 |
X5 |
Y3 |
…… |
2015.6.1 12:15 |
X6 |
Y4 |
…… |
2015.6.1 13:25 |
表6交易收费信息表
交易号 |
业务流水号 |
交易收费 |
…… |
时间 |
X1 |
Y1 |
Z1 |
…… |
2015.6.1 12:05 |
X2 |
Y2 |
Z2 |
…… |
2015.6.1 13:05 |
X5 |
Y3 |
Z3 |
…… |
2015.6.1 12:15 |
X6 |
Y4 |
Z4 |
…… |
2015.6.1 13:25 |
其中,需要说明的是,上述表1-表6仅是出于示例目的,本申请的实施例不限于此。
S103,确定目标表的数据要求,并根据目标表的数据要求和合并信息表生成目标表。
具体地,在生成业务信息表和业务关联信息表后,可获取在线数据表的表结构要求,并按照在线数据表的表结构要求对生成业务信息表和业务关联信息表进行合并以生成目标表。
具体而言,可根据在线交易库中的需要进行数据恢复的在线数据表的表结构要求,对业务信息表和业务关联信息表进行合并,以生成目标数据表。其中,目标数据表的表结构形式与需要进行数据恢复的在线数据表的表结构形式相同。
例如,可从在线数据库中获得交易对账报表的数据要求,假定交易对账表的数据结构,如表7所示。在获得交易信息表(如表3所示)和交易收费信息表(如表6所示)后,可根据交易对账表的数据结构生成目标表(如表8所示)。
表7交易对账报表
交易号 |
交易金额 |
交易收费 |
…… |
时间 |
…… |
…… |
…… |
…… |
…… |
表8目标表
交易号 |
交易金额 |
交易收费 |
…… |
时间 |
X1 |
Z1 |
Z1 |
…… |
2015.6.1 12:05 |
X2 |
Z2 |
Z2 |
…… |
2015.6.1 13:05 |
X5 |
Z3 |
Z3 |
…… |
2015.6.1 12:15 |
X6 |
Z4 |
Z4 |
…… |
2015.6.1 13:25 |
S104,将目标表同步至在线数据表,以恢复在线数据表中的异常数据。
具体地,通过数据同步工具将离线数据仓库中的目标表同步至数据使用方的线上数据库中,以通过目标表更新线上数据库中的需要进行数据恢复的在线数据表。
具体而言,可根据目标表的主键对在线数据表进行查询,如果在线数据表中存在与目标表一致的主键,则采用主键在目标表中对应的数据覆盖在线数据表中的数据;如果在线数据表中存在与目标表不一致的主键,则将主键在目标表中对应的数据插入在线数据表。
本申请实施例的异常数据的恢复方法,在确定线上数据发生异常后,根据故障时间段确定异常数据的在线数据表所处理的业务类型,并从业务类型对应的在线业务数据库中获取对应的多个原始数据表,对多个原始数据表进行合并以生成合并信息表,确定目标表的数据要求,并根据目标表的数据要求和合并信息表生成目标表,以及将目标表同步至在线数据表,以通过目标表中的数据对在线数据表中的异常数据进行恢复,该实施例的异常数据的恢复方式在恢复异常的过程中,无需用户手动获取异常数据对应的原始数据,能够快速对异常数据进行恢复,减少了恢复异常数据所需的处理时间,提高了系统的异常数据的恢复能力。
下面结合图2和图3对异常数据的恢复方法进行具体介绍。可以理解的是,下述说明仅出于示例目的,本申请的实施例不限于此。图2中虚线左侧的部分表示线上数据使用方对账系统基于消息进行数据传递的过程中,对账系统中交易对账报表的数据来源于两个业务系统的消息,交易系统发出的交易消息,以及收费系统发出的收费消息。对账系统对这两种业务消息进行处理整合存储成交易对账报表,以提供交易复合信息查询。
S301,当监控到对账系统中发生故障,将受影响数据对应的交易原始数据表和收费原始数据表同步至离散数据仓库的基础数据层。
其中,离散数据仓库的基础数据层中的数据表和在线数据库中的数据表结构相同,上述收费原始数据表包括交易收费关联表和收费业务表。
为了避免数据缺失,在获取故障时间段后,可先对故障时间段进行扩展以生成数据同步时间段,然后获取在线交易数据库中数据同步时间段中的多个交易原始数据表和收费原始数据表。
例如,假定确定数据使用方的对账系统发生故障的时间段为“2015.6.1 12:05”到“2015.6.2 18:05”,此时,为了避免数据缺失,在对异常数据进行恢复的过程中,可对故障时间段进行扩展以生成数据时间段,假定数据时间段为“2015.6.1”到“2015.6.2”,在确定数据时间段后,可将交易分表T1、交易分表T2、收费表和交易收费关联表中时间信息为2015.6.1到2015.6.2的数据同步至离散数据仓库的数据基础层。
需要说明的是,离散数据仓库还可以通过已有的数据分析功能同步在线数据库中的部分业务数据,此时,可以直接使用已经同步的基础层的业务数据,在接下的数据清洗中通过故障时间过滤出恢复所需要的数据集。
S302,基于基础层的数据表进行基本的清洗以获得中间层的交易信息表和交易收费信息表。
其中,中间层的数据表结构设计一般是按业务维度进行清洗聚合,以使中间层的数据表在不同的应用层中能够共用。
一般的处理过程为:a)将分库分表的数据表合成一张表,例如将基础层的交易分表T1以及T2合并得到一张大的交易信息表;b)将收费表和交易收费关联表关联得到交易收费信息表。其中,需说明的是,收费表和交易收费关联表是按数据库范式设计的。
S303,基于中间层的交易信息表和交易收费信息表进一步清洗以生成应用层的目标表。
其中,目标表的表结构形式与需要进行数据恢复的交易对账报表的表结构形式相同,也就是说,通过数据仓库清洗得到目标表和对账系统通过消息清洗得到目标表一样。
具体地,根据交易对账报表的表结构要求,将中间层的交易信息表与交易收费信息表进行关联清洗成目标表。
S304,将离散数据仓库应用层中的目标表通过数据同步工具同步回到线上数据库中。
具体地,可根据目标表的主键对在线交易数据库进行查询,如果在线交易数据库中存在与目标表一致的主键,则采用主键在目标表中对应的数据覆盖在线交易数据库中的数据;如果在线交易数据库中存在与目标表不一致的主键,则将主键在目标表中对应的数据插入在线交易数据库。
综上所述可以看出,步骤1、步骤2和3依赖离线数据仓库大数据的计算能力进行数据清洗及按目标数据表进行整合;步骤4通过同步工具将清洗后正确的数据同步到线上数据库中,进行异常数据的批量恢复。能够避免通过手工的方式从多个业务系统的数据库表中手动捞出受影响异常数据对应的原数据,提供大数据量异常数据的可恢复能力。
本申请实施例的异常数据的恢复方法,通过离线数据仓库能够把散落在各个不同业务数据库的数据聚合起来,然后基于离线数据仓库的大数据的计算能力进行数据清洗及按目标数据表进行整合,以及通过同步工具将清洗后正确的数据同步到线上数据库中,进行异常数据的批量恢复。该实施例的异常数据的恢复方式能够避免通过手工的方式从多个业务系统的数据库表中手动捞出受影响异常数据对应的原数据,减少了恢复异常数据所需的处理时间,提高了系统的异常数据的恢复能力。
为了实现上述实施例,本申请还提出一种异常数据的恢复装置。
图4是本申请一个实施例的异常数据的恢复装置的结构示意图。
如图4所示,该异常数据的恢复装置包括获取模块100、合并模块200、生成模块300和同步模块400,其中:
获取模块100用于获取故障时间段,并根据故障时间段确定异常数据的在线数据表所处理的业务类型,并从业务类型对应的在线业务数据库中获取对应的多个原始数据表;合并模块200用于对多个原始数据表进行合并以生成合并信息表;生成模块300用于确定目标表的数据要求,并根据目标表的数据要求和合并信息表生成目标表;同步模块400用于将目标表同步至在线数据表,以恢复在线数据表中的异常数据。
其中,上述多个原始数据表与发生故障时数据使用方处理的业务有关,多个原始数据表包括多个业务原始数据表和多个业务关联表。例如,数据使用方当前处理的业务为对账,如果数据使用方的对账系统发生故障,则获得交易对账报表的原始数据表。对账系统中交易对账报表的数据来源于两个业务系统,分别为交易系统和收费系统,此时,获取模块100可根据故障时间段从交易系统中获得多个交易原始数据表,以及从收费系统中获得多个收费原始数据表,其中,收费原始数据表包括交易收费关联表和收费业务表。
如图5所示,上述获取模块100还可以包括生成单元110和获取单元120,其中:生成单元110用于对故障时间段进行扩展以生成数据同步时间段;获取单元120用于获取在线交易数据库中数据同步时间段中的多个原始数据表。
获取单元120具体用于:将业务类型对应的在线业务数据库中数据同步时间段中的多个原始数据表同步至离线数据仓库。
合并模块200具体用于:按照业务维度对多个业务原始数据表进行合并以生成业务信息表;以及将按照数据库范式设计的多个业务原始数据表和业务关联数据表进行合并以生成业务关联信息表。
具体地,在合并模块200生成业务信息表和业务关联信息表后,生成模块300可获取在线数据表的表结构要求,并按照在线数据表的表结构要求对生成业务信息表和业务关联信息表进行合并以生成目标表。
具体而言,生成模块300可根据在线交易库中的需要进行数据恢复的在线数据表的表结构要求,对多个合并信息表进行合并,以生成目标数据表。其中,目标数据表的表结构形式与需要进行数据恢复的在线数据表的表结构形式相同。
具体地,同步模块400可通过数据同步工具将离线数据仓库中的目标表同步至数据使用方的线上数据库中,以通过目标表更新线上数据库中的需要进行数据恢复的在线数据表。
具体而言,同步模块400可根据目标表的主键对在线数据表进行查询,如果在线数据表中存在与目标表一致的主键,则采用主键在目标表中对应的数据覆盖在线数据表中的数据;如果在线数据表中存在与目标表不一致的主键,则将主键在目标表中对应的数据插入在线数据表。
需要说明的是,前述对异常数据的恢复方法实施例的解释说明也适用于该实施例的异常数据的恢复装置,此处不再赘述。
本申请实施例的异常数据的恢复装置,在确定线上数据发生异常后,通过获取模块获取故障时间段,并根据故障时间段确定异常数据的在线数据表所处理的业务类型,并从业务类型对应的在线业务数据库中获取对应的多个原始数据表,然后合并模块对多个交易原始数据表进行合并以生成合并信息表,然后,生成模块根据目标表的数据要求和合并信息表生成目标表,以及同步模块将目标表同步至在线数据表,以通过目标表中的数据对在线数据表中的异常数据进行恢复,该实施例的异常数据的恢复方式在恢复异常的过程中,无需用户手动获取异常数据对应的原始数据,能够快速对异常数据进行恢复,减少了恢复异常数据所需的处理时间,提高了系统的异常数据的恢复能力。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。