备份数据库数据的方法和装置与流程

文档序号:16530930发布日期:2019-01-05 10:45阅读:156来源:国知局
本发明涉及计算机
技术领域
:,尤其涉及一种备份数据库数据的方法和装置。
背景技术
::当前,应用软件往往支持多种业务流程,每个业务流程又包含一系列的业务操作,比如库房发货业务流程包括拣货、复核、打包三个业务操作。在软件开发过程中,开发人员编码完成后要进行自测,需要对影响的业务流程和业务操作进行验证,这就需要通过数据库为测试准备数据。开发人员自测通过后提交给测试人员验证,测试人员也需要准备数据,假如测试过程中发现问题,开发自测和测试验证可能出现多次,也就需要多次准备数据。目前,开发人员、测试人员在准备数据时通常采用下述方法:手工做数据或者对整个数据库或者数据库的某个表进行导入导出。在实现本发明过程中,发明人发现现有技术中至少存在如下问题:手工做数据的方式虽然简单,但是每进行一次新的测试往往需要准备新的数据,存在大量重复工作;对整个数据库或者数据库的某个表进行导入导出,则会严重浪费存储资源,需要抽取和还原的时间很长。技术实现要素:有鉴于此,本发明实施例提供一种备份数据库数据的方法和装置,解决测试人员在进行业务流程测试时需要重复做测试数据的问题,实现一次操作,多次使用,并具有轻量级、高复用性、备份精确快速的优点。为实现上述目的,根据本发明的一个方面,提供了一种备份数据库数据的方法,所述方法应用于流程执行的过程中,所述流程包含多个操作,当所述流程执行时,所述多个操作按照预定义的顺序依次被启动和执行,每个操作具有预定义的备份过程,所述方法包括:在所述流程的执行中,在当前操作完成后且在下一操作启动前,执行该当前操作的备份过程,以产生该当前操作的备份数据,其中,利用该备份数据能够把所述数据库还原成在该当前操作完成后且在下一操作启动前时候的状态。进一步的,对于所述流程配置有预定义的全局参数值,对于所述流程中的每个操作配置有预定义的赋值过程和数据抽取表达式,所述当前操作的备份过程包括:在所述流程中选择该当前操作和当前操作之前执行的所有其他操作以形成当前操作集;按照所述顺序对所述当前操作集中的每个操作,执行下述步骤:把所述流程的全局参数值或当前数据库数据,通过该操作的赋值过程赋值给该操作的数据抽取表达式,以生成该操作的数据抽取命令,其中,所述数据抽取命令的执行结果能够抽取出该操作的执行所影响到的数据库数据;执行所述数据抽取命令以抽取数据结果;保存所抽取的数据结果作为所述当前操作对应的备份数据的一部分。进一步的,所述数据抽取表达式是含有未知参数的sql抽取表达式,所述数据抽取命令为sql抽取命令,在所述未知参数被赋值后,所述数据抽取表达式转化为sql抽取命令,所述赋值过程中定义有:对于流程配置的一个或多个流程赋值表达式以及一个或多个全局参数,或还定义有:对于操作配置的一个或多个操作赋值表达式,操作赋值表达式是含有未知参数和中间参数的sql赋值表达式,所述赋值过程包括步骤:将所述全局参数值赋值给所述全局参数,通过所述流程赋值表达式把所述全局参数赋值给当前操作的数据抽取表达式或操作赋值表达式中的未知参数,或者通过所述流程赋值表达式把所述当前操作集中当前操作之前的其他操作的中间参数赋值给所述全局参数,再通过对于流程配置的其他所述流程赋值表达式把所述全局参数赋值给当前操作的数据抽取表达式或操作赋值表达式中的未知参数,在操作赋值表达式的未知参数被赋值后,利用所述操作赋值表达式把数据库中的对应数据赋值给中间参数,中间参数可以作为数据抽取表达式的未知参数或其他操作赋值表达式的未知参数。可选的,对于所述流程配置有预定义的数据库信息、对于所述操作配置有预定义的数据表信息以及主键列信息,根据所述备份数据和与其对应的数据库信息、数据表信息以及主键列信息可以拼装sql清除命令和sql写入命令,使得执行所述sql清除命令和sql写入命令能够把所述备份数据替换到数据库中的对应位置。为实现上述目的,根据本发明的再一个方面,提供了一种备份数据库数据的装置,所述装置应用于流程执行的过程中,所述流程包含串行的多个操作,当所述流程执行时,所述多个操作按照预定义的串行的顺序依次被启动和执行,每个操作具有预定义的备份过程,所述装置用于在所述流程的执行中,在当前操作完成后且在下一操作启动前,执行该当前操作的备份过程,以产生该当前操作的备份数据,其中,利用该备份数据能够把所述数据库还原成在该当前操作完成后且在下一操作启动前时候的状态。进一步的,本发明提供的备份数据库数据的装置包括:基础数据模块,用于保存对于流程配置的预定义全局参数值,对于操作配置的预定义抽取表达式和赋值过程;数据抽取模块,用于在所述流程中选择该当前操作和当前操作之前执行的所有其他操作以形成当前操作集,按照所述顺序对所述当前操作集中的每个操作,执行下述步骤:把所述流程的全局参数值或当前数据库数据,通过该操作的赋值过程赋值给该操作的数据抽取表达式,以生成该操作的数据抽取命令,其中,所述数据抽取命令的执行结果能够抽取出该操作的执行所影响到的数据库数据,然后,执行所述数据抽取命令以抽取数据结果,保存所抽取的数据结果作为所述当前操作对应的备份数据的一部分。进一步的,所述基础数据模块用于保存对于业务操作配置的预定义的数据库信息、数据表信息以及主键列信息,本发明提供的备份数据库数据的装置还包括:数据还原模块,在需要还原所述数据库时,根据所述备份数据和与其对应的数据库信息、数据表信息以及主键列信息拼装sql清除命令和sql写入命令,并执行所述sql清除命令和sql写入命令将所述备份数据替换到数据库中的对应位置。进一步的,本发明提供的备份数据库数据的装置还包括:云存储模块,用于存储所述备份数据。为实现上述目的,根据本发明的再一个方面,提供了一种备份数据库数据的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明提供的备份数据库数据的方法。为实现上述目的,根据本发明的再一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的备份数据库数据的方法。本发明提供的备份数据库数据的方法和装置,解决测试人员在进行业务流程测试时需要重复做测试数据的问题,实现一次操作,多次使用。并且在数据库中将操作所影响的数据进行了定位,实现精确抽取数据,把需要备份的数据量减少到最小,提高数据备份的速度,节省了时间。在抽取数据的过程中,在sql层上对于业务操作和业务流程进行抽象,通过定义全局参数值、流程赋值表达式、操作赋值表达式、数据抽取表达式来实现sql抽取语句的组装,在应用时具有很高的灵活性、可维护性和扩展性,有效提高工作效率,并且能够和其他工具集成使用,将备份数据作为其他测试工具的数据准备。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本发明,不构成对本发明的不当限定。其中:图1是本发明实施例提供的备份数据库数据的方法流程图;图2是本发明实施例提供的当前操作的备份过程的流程示意图;图3是本发明实施例提供的备份步骤的流程示意图;图4是本发明实施例提供的备份数据库数据的装置示意图;图5是本发明实施例提供的备份数据库数据的装置流程示意图;图6是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。具体实施方式以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。本发明实施例提供一种备份数据库数据的方法,在对业务软件系统进行测试时,本方法应用于流程执行的过程中,流程包含多个操作。在本发明实施例中,流程即业务流程,操作即业务操作。业务操作也就是业务活动,是指用户和业务软件系统之间的一次交互,包括用户使用软件系统提供的功能输入数据,提交给系统处理,系统内部状态发生了变化,返回执行情况给用户等过程。用户使用软件系统进行业务操作可能会对于相应的数据库数据产生影响,例如对数据库数据进行更新删除等操作。业务流程是由一系列的业务操作组成的,当业务流程执行时,多个业务操作按照预定义的顺序依次被启动和执行,比如库房发货流程包括拣货、复核、打包等业务操作,在库房发货流程执行时,按照串行顺序依次执行拣货、复核、打包的业务操作。本发明提供的备份数据库数据的方法中,每个操作具有预定义的备份过程,如图1所示,该方法包括步骤101,在步骤101中,在流程的执行中,在当前操作完成后且在下一操作启动前,执行该当前操作的备份过程,以产生该当前操作的备份数据,也就是说每完成一个操作,都进行一次对该操作的数据备份,然后再启动下一个操作。其中,预定义的备份过程是针对每个操作配置并进行的,对于每个操作的备份过程可以基于其对数据库的具体影响来配置,以使得利用该备份数据能够把数据库还原成在该当前操作完成后且在下一操作启动前时候的状态。如果需要对某一个操作重新进行测试时,就可以通过备份数据将数据库还原成该需要重新测试的操作启动前的状态,从而解决测试人员在进行业务流程测试时需要重复做测试数据的问题,实现一次操作,多次使用。如上例,软件系统提供库房发货流程功能,该流程包括拣货、复核、打包三个业务操作,开发人员或者测试人员在对该软件系统进行测试时,通过系统的开发环境或者测试环境进行拣货操作,拣货操作完成后对拣货操作进行数据备份过程得到snap1,然后进行复核操作。复核操作完成后对复核操作进行数据备份过程得到snap2,最后进行打包操作后在进行数据备份过程得到snap3。若开发人员对打包操作进行了代码修改,开发人员或者测试人员做测试的时候,必须进行拣货、复核操作,才能得到做打包操作需要的数据,然后进行打包操作的测试,这时就可以使用数据备份snap2,进行数据还原,开发人员和测试人员就可以直接进行打包操作的测试,大大节省了时间。在本发明实施例中,步骤101中的当前操作的备份过程,如图2所示,包括:步骤201和步骤202。步骤201,在流程中选择该当前操作和当前操作之前执行的所有其他操作以形成当前操作集,其中,当前操作之前的所有其他操作是指选出的其他操作在流程中执行顺序在该当前操作之前。然后在步骤202中,按照顺序对当前操作集中的每个操作执行备份步骤,从而完成对于当前操作的备份过程。即对于当前操作的备份过程实际上是将当前操作以及其之前所有操作都进行备份。例如,定义流程bz1包括op1,op2,op3,op4四个操作,其执行顺序为从op1到op4串行执行。若当前op3完成,需要对op3进行备份过程,则步骤201在bz1中选出当前操作op3以及执行顺序在其之前的op1和op2形成操作集。然后,在步骤202中,由于该操作集中的操作的执行顺序为op1至op3,因此,先对op1执行备份步骤,待完成后,对op2执行备份步骤,最后对op3执行备份步骤,从而完成对于当前操作op3的备份过程。同样,若上例中,当前op1完成,则其备份过程是对op1进行备份步骤。若当前op2完成,则其备份过程是对op1和op2进行备份步骤。若当前op4完成,则其备份过程是对op1至op4都进行备份步骤。采用这种方式的原因在于当前操作的备份步骤可能会用到之前操作的备份步骤产生的参数,详见下述备份步骤的说明中。在本发明中,对于流程配置有预定义的全局参数值,对于流程中的每个操作配置有预定义的赋值过程和数据抽取表达式。步骤202中的备份步骤,如图3所示,包括:步骤301至步骤303。在步骤301中,把流程的全局参数值或当前数据库数据,通过该操作的赋值过程赋值给该操作的数据抽取表达式,以生成该操作的数据抽取命令,其中,数据抽取命令的执行结果能够抽取出该操作的执行所影响到的数据库数据。本发明中对于流程配置的全局参数值以及对于每个操作配置的赋值过程和数据抽取表达式是开发人员和测试人员根据具体的流程和每个操作分析得出的。执行本步骤的目的是精确定位到执行操作所影响到的数据库数据的位置,从而生成数据抽取命令进行数据抽取。在本发明实施例中,步骤301中,数据抽取表达式是含有未知参数的sql抽取表达式,数据抽取命令为sql抽取命令,在未知参数被赋值后,数据抽取表达式转化为sql抽取命令。例如,sql抽取表达式可以为如下形式:select*fromtable1wheref1=@p11,其中@p11是未知参数,当@p11被赋值后,表达式转化为sql抽取命令,抽取table1表中@p11参数值对应的字段数据。步骤301中,赋值过程中定义有:对于流程配置的一个或多个流程赋值表达式以及一个或多个全局参数,或还定义有:对于操作配置的一个或多个操作赋值表达式,也就是说对于一个操作预定义的赋值过程可以单独通过流程赋值表达式,或通过流程赋值表达式和操作赋值表达式两者结合来实现。赋值过程包括步骤:将全局参数值赋值给全局参数,通过流程赋值表达式把全局参数赋值给当前操作的数据抽取表达式或操作赋值表达式中的未知参数。或者通过流程赋值表达式把当前操作集中当前操作之前的其他操作的中间参数赋值给全局参数,再通过对于流程配置的其他流程赋值表达式把全局参数赋值给当前操作的数据抽取表达式或操作赋值表达式中的未知参数。在操作赋值表达式的未知参数被赋值后,利用操作赋值表达式把数据库中的对应数据赋值给中间参数,中间参数可以作为数据抽取表达式的未知参数或其他操作赋值表达式的未知参数。操作赋值表达式是含有未知参数和中间参数的sql赋值表达式,中间参数表示被赋值的对象,例如,可以为下述形式:select@p12=f2fromtable1wheref1=@p11,其中,@p11为未知参数,@p12为中间参数。当@p11被赋值后,该表达式将表table1中的f2字段值赋给中间参数@p12。中间参数可以作为数据抽取表达式的未知参数或其他操作赋值表达式的未知参数。可以将中间参数作为数据抽取表达式的未知参数从而直接获得sql抽取命令;也可以将中间参数作为其他操作赋值表达式的未知参数,即对于一个操作定义有多个操作赋值表达式,按照一定顺序执行多个操作赋值表达式,最终为数据抽取表达式赋值获得sql抽取命令。在实际应用过程中,流程中的操作往往都是有先后顺序的,这个先后顺序在本发明方法中通过定义的流程赋值表达式体现出来。例如,流程bz1包括op1,op2,op3,op4四个操作,其执行顺序为从op1到op4串行执行,通过流程赋值表达式可以将op1的操作赋值表达式的中间参数赋值给全局参数,在通过全局参数赋值给op2、op3以及op4的数据抽取表达式或操作赋值表达式中的未知参数,即op2、op3或op4的备份步骤中会用到op1备份步骤产生的参数。对应上文,因此对于当前操作的备份过程需要将当前操作以及其之前所有操作都进行备份。当然,流程中也会有一些操作不依赖之前的任意一个操作就可以执行,在本发明方法中体现为其数据抽取表达式和其他操作没有赋值关系,这种情况使用全局参数值进行数据备份,先将全局参数值赋值给全局参数,通过流程赋值表达式能够把全局参数赋值给数据抽取表达式或操作赋值表达式中的未知参数。步骤301开始执行后,首先通过流程赋值表达式使用全局参数对数据抽取表达式或操作赋值表达式中的未知参数进行赋值,若赋值给数据抽取表达式则直接生成sql抽取命令,若赋值给操作赋值表达式则可基于一定的顺序执行该一个或多个操作赋值表达式最终为数据抽取表达式赋值生成sql抽取命令。其中,当前操作的赋值表达式也可以用于获得中间参数,然后将该中间参数赋值给全局参数,等待为之后操作的未知参数赋值。步骤301通过预定义的赋值过程最终获得数据抽取表达式的未知参数值,该未知参数值指示出当前操作所影响的数据库数据的位置,从而使得生成的sql抽取命令能够抽取到相应的数据。预定义的赋值过程是通过按照预定义的顺序执行流程赋值表达式和操作赋值表达式来实现的。在步骤302中,执行步骤301中生成的数据抽取命令以抽取数据结果,即执行生成的sql抽取命令。然后在步骤303中,保存所抽取的数据结果作为当前操作对应的备份数据的一部分。一个操作在执行过程中往往会影响到多个数据表的数据,因此在本发明中,对于一个操作,可以对应其影响到的每个数据表分别配置数据抽取表达式。然后通过赋值过程为该多个数据抽取表达式赋值,所有抽取的多个表数据即为当前操作对应的备份数据。步骤301至303提供的数据备份步骤对于操作所影响的数据进行了定位,实现精确抽取数据,把需要备份的数据量减少到最小,提高数据备份的速度,节省了时间。实现过程中,在sql层上对于业务操作和业务流程进行抽象,通过定义全局参数值、全局参数、流程赋值表达式、操作赋值表达式、数据抽取表达式来实现sql抽取语句的组装,在应用过程中具有很高的灵活性、可维护性和扩展性。在本发明实施例中,对于流程配置有预定义的数据库信息,对于操作配置有预定义的数据表信息以及主键列信息,上述信息分别定义查询数据的数据库地址和其中需要查询的一个或多个数据表以及每个表中的主键列,也就是描述执行操作会影响到的数据所在的主键列和数据表以及对应的数据库地址,流程中的多个操作的对应数据表隶属于同一个数据库。根据备份数据和与其对应的数据库信息、数据表信息以及主键列信息可以拼装sql清除命令和sql写入命令,使得执行sql清除命令和sql写入命令能够将备份数据替换到数据库中的对应位置。在测试过程中,若需要对软件系统的某一个操作重新进行测试,则可以通过上述方式,将该操作对应的数据表中数据抽取位置的原数据清除后写入备份的数据,实现对于数据库的还原。从而解决需要人工重复做数据的问题,并且基于数据备份过程中对于操作所影响的数据进行的精确定位和备份,使得数据还原的过程也更为方便快速。或者,在需要进行特定处理时,可以基于备份数据的详细信息以及预定义的配置信息实现其他自定义的还原逻辑。下面通过一个实例对于本发明提供的备份数据库数据的方法进行更为详细的说明。业务流程bz1包括串行执行的业务操作op1和op2。对于该流程和操作的配置包括:数据源配置、数据表配置、业务操作配置、业务流程配置、具体业务流程配置。数据源配置定义数据源datasource1,及数据源地址。数据表配置定义需要查询的数据表table1和其主键列key1,数据表table2和其主键列key2。操作配置定义操作名称op1,操作参数@p11、@p12,对应的数据表为table1,操作op1会影响数据源datasource1表table1的数据,对应table1的数据抽取表达式为select*fromtable1wheref1=@p11,操作赋值表达式select@p12=f2fromtable1wheref1=@p11,操作参数@p11为数据抽取表达式和操作赋值表达式中的未知参数,操作参数@p12为操作赋值表达式中的中间参数。定义操作名称op2,操作参数@p21,对应的数据表为table2,即业务操作op2会影响数据源datasource1表table2的数据,对应table2的数据抽取表达式为select*fromtable2wheref3=@p21。操作参数@p21为数据抽取表达式中的未知参数。流程配置定义流程bz1中包括的操作op1和op2,全局参数@g1,对于op1的流程赋值表达式@p11=@g1,对于op2的流程赋值表达式@p21=@p12。具体的业务流程定义将全局参数值赋值给全局参数@g1=‘1234567’。软件系统的测试过程中,在系统里面进行操作op1和op2。当op1完成后,且在op2启动之前,根据流程配置在流程中选择当前操作op1形成当前操作集。根据对于op1流程赋值表达式@p11=@g1将全局参数@g1赋值给op1的数据抽取表达式select*fromtable1wheref1=@p11中的操作参数@p11,生成的sql抽取命令select*fromtable1wheref1=‘1234567’。执行该sql抽取命令,将抽取的数据保存为op1的备份数据。然后,由于操作赋值表达式select@p12=f2fromtable1wheref1=@p11中操作参数@p11已被赋值,生成sql赋值命令select@p12=f2fromtable1wheref1=‘1234567’,执行该命令将表table1中f2字段赋值给操作参数@p12,操作参数@p12用于后续操作op2的备份过程。其中,操作赋值表达式在流程赋值表达式之后执行,这样的执行顺序可以由操作配置定义。op1的备份过程完成后,进行操作op2,当op2完成后,根据流程配置在流程bz1中选择该当前操作op2和之前的操作op1形成当前操作集。对于当前操作集中的操作op1的执行备份步骤,其执行步骤已在上文中说明,不再赘述。op1的备份步骤执行完成后执行op2的备份步骤:根据对于op2流程赋值表达式@p21=@p12将op1的操作参数@p12赋值给op2的数据抽取表达式select*fromtable2wheref3=@p21中的操作参数@p21,生成的sql抽取命令select*fromtable2wheref3=‘1234567’。执行该sql抽取命令,将抽取的数据保存为op2的备份数据。从而完成在测试过程中对于流程bz1中的操作op1和op2的数据备份。在根据测试的需要进行数据还原时,比如,需要对操作op1进行还原,则先根据op1的备份数据获知其为表table1的两行数据,id分别是id1和id2,然后根据对应的数据源配置和数据表配置获知表table1的主键列是id,则sql清除命令deletefromtable1whereidin(id1,id2),执行该命令完成op1的数据清除。然后对操作op1进行写入,根据op1的备份数据获知其为数据表table1的两行数据,id分别是id1和id2,行id1中的列值分别是v11,v12,v13,行id2中的列值分别是v21,v22,v23。根据op1对应的数据表配置获知table1的列分别是id,f1,f2,则可以拼装sql写入命令:insertintotable1(id,f1,f2)values(v11,v12,v13),(v21,v22,v23),执行这条命令完成数据写入。实现对于原数据的替换。下面通过另一个实例对于本发明提供的备份数据库数据的方法进行更为详细的说明。首先,用户对于业务流程中的每个业务操作创建操作配置,操作配置包括配置操作名称、操作参数列表、抽数表达式列表。抽数表达式列表包括:sql抽取表达式和操作赋值表达式,操作赋值表达式作用是通过执行sql语句根据一个或者多个操作参数(作为被赋值后的未知参数)获取到另外一个或者多个操作参数(作为中间参数)的值,sql抽取表达式是通过执行sql语句根据一个或者多个操作参数(作为被赋值后的未知参数)来查询数据,以生成数据备份。然后,用户对应业务流程创建流程配置,流程配置包括配置全局参数和流程操作配置列表。流程操作配置中包括:流程操作前赋值表达式列表、操作配置以及流程操作后赋值表达式列表。在本发明实例中,流程赋值表达式分为流程操作前赋值表达式和流程操作后赋值表达式,流程操作前赋值表达式用于把全局参数赋值给操作参数,流程操作后赋值表达式用于把操作参数赋值给全局参数,以便后续操作使用。在配置完成后,用户创建流程执行。将全局参数值赋值给流程配置中的全局参数后会得到一个具体流程。一个流程配置可以定义多个具体流程。流程执行包括:流程配置、全局参数赋值以及操作执行列表。其中,操作执行包括:流程操作配置和抽数表达式执行列表。其中,抽数表达式执行包括:抽数表达式、该抽数表达式使用的操作参数集合和对应操作参数的具体值以及数据备份地址。然后,用户根据流程执行中的操作执行列表逐一进行处理。具体为,用户在业务系统进行对应业务操作,在业务操作完成后,用户选择此业务操作对应的操作执行,进行数据备份。执行数据备份的时候系统会备份当前操作执行和当前操作执行前的所有操作执行进行数据备份。在当前的业务操作的备份完成后,用户可以进行下一个业务操作,在下一个业务操作完成后,选择下一个业务操作对应的操作执行进行数据备份,以此类推,可以实现对于业务流程中所有业务操作的数据备份。若用户需要对业务流程中的某一个业务操作进行数据还原,用户可以使用系统选择流程执行中的某一个操作执行,进行数据还原。系统先进行数据清理,根据当前流程执行下所有操作执行的备份数据,删除id相同的记录,然后根据当前操作执行的数据备份,还原数据。例如,在一个具体的实例中,定义一个简单规则:所有参数都以@开头,以t结尾的参数是中间参数,比如@p2t是操作配置的中间参数,此类参数在定义流程操作前赋值表达式时不需要对此类参数进行赋值,比如@g2t也流程配置的中间参数,在定义流程执行时不需要对此类参数进行赋值。假设:要实现一个包括两个业务操作的业务流程的数据备份以及后续的数据还原,两个业务操作为操作op1,操作op2。整个过程的实现分成三个阶段进行:阶段1定义相关配置;阶段2对每个业务操作进行数据备份;阶段3进行某个业务操作的数据还原。在阶段1定义相关配置:定义操作配置op1和op2,op1会操作数据表t1和数据表t2,op2会操作数据表t3和数据表t4,流程配置bz1,流程执行bz1exe,下面是详细的配置。操作配置op1中,操作参数有@p1和@p2t,抽数表达式列表(op1要抽两个数据表的数据,分别根据操作参数@p1,@p2t来获取,并且@p2t参数来源于@p1,也就是@p2t是中间参数,定义流程操作前赋值表达式时不需要对此类参数进行赋值)包括:select*fromt1wherecode=@p1(sql抽取表达式);select@p2t=code2fromt1wherecode=@p1(操作赋值表达式);select*fromt2wherecode=@p2t(sql抽取表达式)。操作配置op2中,操作参数有@p3,@p4,抽数表达式列表(从数据表t3和数据表t4抽数)包括:select*fromt3wherecode=@p3(sql抽取表达式);select*fromt4wherecode=@p4(sql抽取表达式)。流程配置bz1中,定义全局参数@g1和@g2t,流程操作配置列表中包括:流程操作配置bz1op1(对应操作配置op1)和流程操作配置bz1op2(对应操作配置op2),在流程操作配置bz1op1中包括:流程操作前赋值表达式列表:@p1=@g1;操作配置op1;流程操作后赋值表达式列表:@g2t=@p2t。在流程操作配置bz1op2中包括:流程操作前赋值表达式列表:@p3=@g1、@p4=@g2t;操作配置op2;流程操作后赋值表达式列表为空。流程执行bz1exe包括:对应流程配置bz1,系统自动根据流程配置bz1的流程操作配置列表创建操作执行列表,操作执行列表中包括操作执行bz1op1exe和操作执行bz1op2exe,操作执行bz1op1exe和操作执行bz1op2exe分别保存有对应流程操作配置bz1op1和流程操作配置bz1op2的信息,然后,将全局参数值赋值给全局参数@g1=‘1018’,至此阶段1结束。阶段2对每个业务操作进行数据备份,首先用户在业务系统使用1018作为数据标识进行业务操作op1,业务操作完成后,选择流程执行bz1exe里面的操作执行列表里面的操作执行bz1op1exe进行数据备份,系统起始条件是流程执行中的定义@g1=‘1018’,根据操作执行bz1op1exe找到流程操作配置bz1op1,执行流程操作前赋值表达式列表,@p1=@g1,使@p1有的具体值‘1018’,然后,执行抽数表达式:select*fromt1wherecode=@p1,得到数据表t1数据备份,上传到云存储得到数据备份地址,然后执行select@p2t=code2fromt1wherecode=@p1,得到@p2t=‘1019’,最后执行select*fromt2wherecode=@p2t,得到数据表t2数据备份。用户在业务系统使用1018作为数据标识进行业务操作op2,然后选择流程执行bz1exe里面的操作执行列表里面的操作执行bz1op2exe进行数据备份,系统起始条件是流程执行中的定义@g1=‘1018’,从流程执行bz1exe第一个操作执行bz1op1exe开始执行,直到执行到操作执行bz1op2exe。根据操作执行bz1op1exe找到流程操作配置bz1op1,依次执行流程操作前赋值表达式列表、执行抽数表达式列表(已在上文中说明,在此不再赘述)以及流程操作后赋值表达式列表。其中,执行流程操作后赋值表达式列表:@g2=@p2t,则获得@g2=‘1019’。根据操作执行bz1op2exe找到流程操作配置bz1op2,执行操作执行bz1op2exe的操作前赋值表达式列表:@p3=@g1,获得@p3=‘1018’;@p4=@g2t,获得@p4=’1019’。执行操作执行bz1op2exe抽数表达式列表:select*fromt3wherecode=@p3,得到数据表t3数据备份,select*fromt4wherecode=@p4,得到数据表t4数据备份,至此操作op2的数据备份创建完毕。阶段3进行某个操作的数据还原,例如对操作op2进行数据还原,用户选择系统中的bz1exe中的bz1op2exe进行数据还原。系统会先根据操作执行bz1op1exe、bz1op2exe的数据备份,清除id相同的记录,然后根据操作执行bz1op2exe的数据备份还原数据。本发明实施例还提供一种备份数据库数据的装置,该装置应用于流程执行的过程中,流程包含串行的多个操作,当流程执行时,多个操作按照预定义的串行的顺序依次被启动和执行,每个操作具有预定义的备份过程,如图4所示,该备份数据库数据的装置1用于:在流程的执行中,在当前操作完成后且在下一操作启动前,执行该当前操作的备份过程,以产生该当前操作的备份数据,其中,利用该备份数据能够把数据库(图中所示源数据库)还原成在该当前操作完成后且在下一操作启动前时候的状态。更为具体的,本发明实施例提供的备份数据库数据的装置,如图4所示,包括:基础数据模块2,数据抽取模块3。其中基础数据模块2用于保存对于流程配置的预定义全局参数值,对于操作配置的预定义抽取表达式和赋值过程。数据抽取模块3用于在流程中选择该当前操作和当前操作之前执行的所有其他操作以形成当前操作集,按照顺序对当前操作集中的每个操作,执行下述步骤:把流程的全局参数值或当前数据库数据,通过该操作的赋值过程赋值给该操作的数据抽取表达式,以生成该操作的数据抽取命令,其中,数据抽取命令的执行结果能够抽取出该操作的执行所影响到的数据库数据,然后,执行数据抽取命令以抽取数据结果,保存所抽取的数据结果作为当前操作对应的备份数据的一部分。本发明实施例提供的备份数据库数据的装置还包括:数据还原模块4。基础数据模块2还用于保存对于业务操作配置的预定义的数据库信息、数据表信息以及主键列信息。数据还原模块4用于在需要还原数据库时,根据备份数据和与其对应的数据库信息、数据表信息以及主键列信息拼装sql清除命令和sql写入命令,并执行sql清除命令和sql写入命令将备份数据替换到数据库中的对应位置。本发明实施例提供的备份数据库数据的装置还包括云存储模块5和操作端模块。云存储模块5用于存储所述备份数据。操作端模块用于提供交互界面给用户使用,用户通过操作端模块可以对本发明装置进行配置以及下达数据备份和数据还原的指令。如图5所示,在数据备份开始前,用户可以通过操作端模块进行各项配置,其中可以包括:数据源配置、数据表配置、业务操作配置、业务流程配置以及具体业务流程配置,该各项配置的定义可以参照本发明提供的备份数据库数据的方法中的实例,在此不再赘述。在配置完成后,将配置信息保存在基础数据模块。在某个操作完成后,用户可以通过操作端模块下达数据备份指令,操作端将该指令下发给数据抽取模块,数据抽取模块开始进行数据抽取和备份。数据抽取模块从基础数据模块获取生成当前操作的sql抽取命令所需要用到的配置信息,然后基于获得的配置信息,生成sql抽取命令。进而,数据抽取模块执行sql抽取命令对源数据库进行查询,查询出来的数据可以采用xml形式存储,然后保存到云存储模块。云存储模块返回该备份数据的地址信息,数据抽取模块对该地址信息,以及对应操作的概述信息进行存储。所存储的概述信息可以包括:全局参数值、流程名称、操作名称、数据表名称,流程参数、操作参数等信息。可以通过建立一个快照数据库中对上述信息进行存储和管理。在完成备份后,数据抽取模块可以将上述备份数据的信息返回操作端模块以供用户进行查看和管理。在需要进行数据还原时,用户通过操作端模块下达数据还原指令,操作端模块将该指令下发给数据还原模块,数据还原模块开始进行数据还原。数据还原模块通过快照数据库查询备份数据的地址和概述信息,数据还原模块根据备份数据的概述信息从基础数据模块获取生成sql清除命令所需要用到的配置信息,并根据备份数据地址从云存储模块获取备份数据。然后生成sql清除命令并执行,清除完成后,生成sql写入命令并执行,将备份数据写入目的数据库。在本发明的一种实施方式中,目的数据库即源数据库,当然也可以根据具体的应用需求设置为其他数据库,例如将本装置和其他工具集成使用,将本装置备份数据作为其他测试工具的数据准备。最后,数据还原模块对写入后数据进行校验,以确保写入数据与备份数据一致。本发明实施例提供的备份数据库数据的方法和装置,在数据库中将操作所影响的数据进行了定位,实现精确抽取数据,把需要备份的数据量减少到最小,提高数据备份的速度,节省了时间。在抽取数据的过程中,在sql层上对于业务操作和业务流程进行抽象,通过定义全局参数值、流程赋值表达式、操作赋值表达式、数据抽取表达式来实现sql抽取语句的组装,在应用时具有很高的灵活性、可维护性和扩展性,有效提高工作效率,并且能够和其他工具集成使用,将备份数据作为其他测试工具的数据准备。下面参考图6,其示出了适于用来实现本发明实施例的电子设备的计算机系统v0的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图6所示,计算机系统v0包括中央处理单元(cpu)v1,其可以根据存储在只读存储器(rom)v2中的程序或者从存储部分v8加载到随机访问存储器(ram)v3中的程序而执行各种适当的动作和处理。在ramv3中,还存储有系统v0操作所需的各种程序和数据。cpuv1、romv2以及ramv3通过总线v4彼此相连。输入/输出(i/o)接口v5也连接至总线v4。以下部件连接至i/o接口v5:包括键盘、鼠标等的输入部分v6;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分v7;包括硬盘等的存储部分v8;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分v9。通信部分v9经由诸如因特网的网络执行通信处理。驱动器v10也根据需要连接至i/o接口v5。可拆卸介质v11,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器v10上,以便于从其上读出的计算机程序根据需要被安装入存储部分v8。特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分v9从网络上被下载和安装,和/或从可拆卸介质v11被安装。在该计算机程序被中央处理单元(cpu)v1执行时,执行本发明的系统中限定的上述功能。需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括:基础数据模块和数据抽取模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,数据抽取模块还可以被描述为“用于在流程中选择该当前操作和当前操作之前执行的所有其他操作以形成当前操作集,按照顺序对当前操作集中的每个操作,执行后续步骤的模块”。作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:在所述流程的执行中,在当前操作完成后且在下一操作启动前,执行该当前操作的备份过程,以产生该当前操作的备份数据,其中,利用该备份数据能够把所述数据库还原成在该当前操作完成后且在下一操作启动前时候的状态。上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1