发明内容
有鉴于此,本发明提供一种精细化数据回滚方法及装置,用以解决现有的回滚过程中,对数据进行差异化对比,如果要回滚的数据和当前数据一致,保证数据没有被操作,就执行回滚动作,否则回滚失败。这种操作只会在单次执行中对数据更新时进行回滚,不能在任务执行完成后再执行回滚,且回滚也只有全部成功和全部失败的问题,具体方案如下:
一种精细化数据回滚方法,预先构建原始数据集、各个目标数据的位置集和所述目标数据集三者的对应关系,其中,所述对应关系包括:基于第一标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集和基于第二标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的对应的数据,所述方法包括:
接收回滚请求,获取所述回滚请求中的第一标识;
基于所述第一标识获取所述原始数据集、所述各个所述目标数据的位置集和所述目标数据集;
遍历所述目标数据集中的每一条目标数据,获取其对应的第二标识,依据所述第二标识确定当前时刻数据;
当遍历的目标数据与所述当前时刻数据相同时,执行回滚操作。
上述的方法,可选的,基于第一标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集,包括:
接收更新语句;
确定当前数据库中与所述更新语句匹配的原始数据,构建原始数据集并为所述原始数据集分配第一标识;
依据所述更新语句,将所述原始数据更新为目标数据,构建所述目标数据的位置集并为所述目标数据的位置集分配第一标识;
依据所述更新语句,将所述原始数据更新为目标数据,构建目标数据集并为所述目标数据集分配第一标识。
上述的方法,可选的,所述更新语句包括:目标数据集、目标数据的位置集和更新关键词。
上述的方法,可选的,基于第二标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的对应的数据,包括:
获取所述目标数据集、所述目标数据的位置集和所述原始数据集;
依据所述更新语句为所述各个目标数据的位置集、所述目标数据集和所述原始数据集中的每个数据分配第二标识;
依据所述第二标识将所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的各个数据建立对应关系。
上述的方法,可选的,依据所述第二标识确定当前时刻数据,包括:
依据所述第二标识,确定遍历的目标数据对应的目标数据位置;
依据所述目标数据位置获取当前时刻数据。
上述的方法,可选的,当遍历的目标数据与所述当前时刻数据相同时,执行回滚操作,包括:
将遍历的目标数据与所述当前时刻数据比较;
当遍历的目标数据与所述当前时刻数据相同时,基于所述第二标识,获取所述原始数据集中的目标原始数据,将所述当前时刻数据替换为所述目标原始数据。
上述的方法,可选的,还包括:
在进行数据回滚操作时,将所述目标数据集和所述原始数据集进行锁定,禁止更改。
上述的方法,可选的,还包括:显示回滚结果。
一种精细化数据回滚装置,预先构建原始数据集、各个目标数据的位置集和目标数据集三者的对应关系,其中,所述对应关系包括:基于第一标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集和基于第二标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的对应的数据,所述装置包括:
第一获取模块,用于接收回滚请求,获取所述回滚请求中的第一标识;
第二获取模块,用于基于所述第一标识获取所述原始数据集、所述各个所述目标数据的位置集和所述目标数据集;
第三获取模块,用于遍历所述目标数据集中的每一条目标数据,获取其对应的第二标识,依据所述第二标识确定当前时刻数据;
回滚模块,用于当遍历的目标数据与所述当前时刻数据相同时,执行回滚操作。
上述的装置,可选的,所述回滚装置中基于第一标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集,包括:
接收模块,用于接收更新语句;
第一分配模块,用于确定当前数据库中与所述更新语句匹配的原始数据,构建原始数据集并为所述原始数据集分配第一标识;
第二分配模块,用于依据所述更新语句,将所述原始数据更新为目标数据,构建目标数据的位置集并为所述目标数据的位置集分配第一标识;
第三分配模块,用于依据所述更新语句,将所述原始数据更新为目标数据,构建目标数据集并为所述目标数据集分配第一标识。
与现有技术相比,本发明包括以下优点:
本发明公开了一种精细化数据回滚方法及装置,所述方法包括:接收回滚请求,获取所述回滚请求中的第一标识;基于所述第一标识获取所述原始数据集、所述各个所述目标数据的位置集和所述目标数据集;遍历所述目标数据集中的每一条目标数据,获取其对应的第二标识,依据所述第二标识确定当前时刻数据;当遍历的目标数据与所述当前时刻数据相同时,执行回滚操作。上述方法中,遍历目标数据集中的每一条目标数据,依据对应关系确定与其对应的原始数据;在该目标数据与原始数据相同时,执行回滚操作,可以实现对目标数据集中的每一个目标数据回滚,不进行整体回滚,并且还可以依据对应的标识回滚到不同的原始数据集,实现了精细化回滚。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
本发明公开了一种精细化数据回滚方法及装置,应用与对数据的回滚过程中,在对数据进行修改后,通常会需要对修改的数据是否正确进行检查,这个过程会耗时几分钟,几个小时,甚至几天,在检查数据的过程中,可能已经有其它操作对你已经操作过的数据进行了更新,例如最初有N条用户年龄数据的值是20岁,之后再更新数据操作中,管理员将N条用户年龄数据更新为22岁,此时开始进行数据检查,与此同时,有一个人自己的年龄为23岁,这时管理员发现自己更新的数据是错误的,需要回滚,可又不能对该学员已经修改了的数据进行回滚,这时就需要对被已经修改的,但是之后没有被其它操作修改的数据进行回滚,上述过程称之为精细化回滚,例如,A在一次操作中对20条用户头像进行了更新,之后的1个小时逐个进行验证,而这过程中,有B对其中一条用户头像信息进行了修改,1小时后,A发现自己更新的20条数据有问题,需要回滚操作,但是又不能对B已经操作了的那条头像信息回滚,此时只能对其余19个进行逐条回滚。
所述回滚方法中,预先构建原始数据集、各个目标数据的位置集和所述目标数据集三者的对应关系,其中,所述对应关系包括:基于第一标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集和基于第二标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的对应的数据,所述方法的执行流程如图1所示,包括步骤:
S101、接收回滚请求,获取所述回滚请求中的第一标识;
本发明实施例中,所述目标数据的回滚请求由用户下发,进行回滚可以为数据更新错误、数据更新异常等原因,其中,所述回滚请求中包含第一标识,所述第一标识用于标识原始数据集、所述各个目标数据的位置集和所述目标数据集,所述目标数据集、所述各个目标数据的位置集和所述原始数据集是预先构建的,其中,所述目标数据集为已更新的数据集,所述各个目标数据的位置集,为各个当前时刻数据存储的位置,所述原始数据集为所述目标数据集需要回滚到的数据集,所述原始数据集可以有多个,优选的,将原始数据集、所述各个目标数据的位置集和所述目标数据集和对应的标识存储到预设的数据库中,针对每一次更新过程,均将当前数据集和与当前数据集对应的已更新的数据集进行存储,相对当前更新过程分别作为原始数据集和目标数据集,为每一个数据集(原始数据集或目标数据集)分配第一标识并为所述目标数据集与所述原始数据集建立对应关系,所述原始数据集和所述目标数据集中存储的数据的类型(关键词)、维度等相同,例如所述目标数据集中存储有关键词姓名、性别和年龄的数据,则与其对应的所述原始数据集中也存储有关键词姓名、性别和年龄数据,只是对应的关键词的取值不同,优选的,针对同一关键词建立对应关系。其中,所述原始数据集可以为与所述目标数据集相邻的数据集,也可以是与所述目标数据集间隔多次更新过程的原始数据集。
S102、基于所述第一标识获取所述原始数据集、所述各个所述目标数据的位置集和所述目标数据集;
本发明实施例中,遍历所述预设的数据库,分别基于所述第一标识获取所述原始数据集、所述各个所述目标数据的位置集和所述目标数据集,其中,所述原始数据集中存储有预设数量的原始数据,所述目标数据集存储有所述预设数量的目标数据,所述各个目标数据的位置集存储有当前时刻数据。
S103、遍历所述目标数据集中的每一条目标数据,获取其对应的第二标识,依据所述第二标识确定当前时刻数据;
本发明实施例中,遍历所述目标数据集中的每一条目标数据,依据所述第二标识,确定遍历的目标数据在所述各个目标数据的位置集对应的当前时刻数据的位置,在该位置获取所述当前时刻数据
S104、当遍历的目标数据与所述当前时刻数据相同时,执行回滚操作。
本发明实施例中,在回滚过程中,系统先根据所述第一标识取出目标数据集、所述各个目标数据的位置集和原始数据集,依据所述第二标识,确定遍历的目标数据对应的目标数据位置;依据所述目标数据位置获取当前时刻数据,逐条将当前时刻数据与对应的目标数据进行比较,如果一致,则说明在更新后没有再次被改动,可以回滚,否则就不回滚。当所有条目逐个进行对比回滚操作完成后,回滚操作完成。例如,系统先根据第二识取出当前时刻数据和目标数据,例如当前时刻数据是2,目标数据是2,两者一致,进行回滚。优选的,不论是否回滚成功,都会显示回滚结果。
优选的,为了避免在数据回滚操作执行过程中对数据所述目标数据集或者所述原始数据集中的数据进行更改,造成数据回滚错误,优选的,在进行数据回滚操作时,将所述目标数据集和所述原始数据集进行锁定,禁止对两者进行更改。
本发明公开了一种精细化数据回滚方法,预先构建原始数据集、各个目标数据的位置集和所述目标数据集三者的对应关系,其中,所述对应关系包括:基于第一标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集和基于第二标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的对应的数据,所述方法包括:接收回滚请求,获取所述回滚请求中的第一标识;基于所述第一标识获取所述原始数据集、所述各个所述目标数据的位置集和所述目标数据集;遍历所述目标数据集中的每一条目标数据,获取其对应的第二标识,依据所述第二标识确定当前时刻数据;当遍历的目标数据与所述当前时刻数据相同时,执行回滚操作。上述方法中,遍历目标数据集中的每一条目标数据,依据第一标识和第二标识确定与其对应的原始数据;在该目标数据与原始数据相同时,执行回滚操作,可以实现对目标数据集中的每一个目标数据回滚,不进行整体回滚,并且还可以依据对应的标识回滚到不同的原始数据集,实现了精细化回滚。
本发明实施例中,预先构建所述目标数据集与所述原始数据集的执行流程如图2所示,包括步骤:
S201、接收更新语句,其中,所述更新语句中包含原始关键词和更新关键词;
本发明实施例中,在对数据进行更新时需要在更新请求界面填写更新语句,通过执行点击或者相关操作后执行更新操作,所述更新语句用于标识哪一个原始数据集需要更新,以及如何将该原始数据集更新为对应的目标数据集和各个目标数据的位置集。优选的,所述更新请求界面及所述更新语句的展示示意图如图3所示,可以选取对哪一个数据库进行更新以及输入何种更新语句。若果列表中找不到数据库DB,请联系DBA。例如,所述更新语句可以为“update db_kr.tb_doctor set name=‘刘先生’where id>100”解析所述更新语句,确定更新语句中的原始关键词和更新关键词,其中,所述原始关键词用于确定原始数据集,所述更新关键词用于对所述原始数据集进行更新确定与所述原始数据集对应的目标数据集。针对不同的更新语句,所述关键词和更新关键词的选取规则不同,本发明实施例中不进行具体限定。
进一步的,所述更新语句还包括:目标数据集、目标数据的位置集和更新关键词。
S202、依据所述更新语句,将所述原始数据更新为目标数据,构建所述目标数据的位置集并为所述目标数据的位置集分配第一标识;
本发明实施例中,遍历当前数据库,其中,所述当前数据为在S201中选定的数据库,依据所述原始关键词在所述当前数据库中查找与所述原始关键词匹配的原始数据,基于查找到的各个原始数据构建所述原始数据集并为所述原始数据集分配第一标识,其中,所述第一标识用于标记本次更新过程,优选的,所述第一标识可以为数字、字母或者其它优选的标识形式,本发明实施例中,所述第一标识为ID。依据所述更新关键词,将原始数据中的对应项更新为所述更新关键词,得到目标数据,基于得到的各个目标数据构建目标数据集,并为所述目标数据集分配第一标识,所述第一标识的选取上述选取过程相同,在此不再赘述。
优选的,将所述原始数据集和所述目标数据保存至日志文件中。
本发明实施例中,基于第二标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的对应的数据的执行流程如图4所示,包括步骤:
S301、获取所述目标数据集、所述目标数据的位置集和所述原始数据集;
本发明实施例中,获取所述目标数据集、所述目标数据的位置集和所述原始数据集,其中,所述目标数据集、所述目标数据的位置集和所述原始数据集可以在制定的位置或者对应的数据库中获取,本发明实施例中,对具体的获取过程不进行限定。
S302、依据所述更新语句为所述各个目标数据的位置集、所述目标数据集和所述原始数据集中的每个数据分配第二标识;
本发明实施例中,由于所述目标数据集是所述原始数据经过至少一次更新得到的,因此,针对所述目标数据集中的每一条目标数据在所述原始数据集中就会存在一条对应的原始数据,两者基于更新语句中的关键词建立关联,所述各个目标数据的位置集存储的为当前时刻的数据,其与所述目标数据集中的每一个数据也基于关键词存在对应关系,基于对应的关键词,分别为所述目标数据集、所述各个目标数据的位置集、所述原始数据集中对应的数据分配第二标识,所述第二标识可以为编号,字母或者数字等优选的标识。
S303、依据所述第二标识将所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的各个数据建立对应关系。
本发明实施例中,依据所述第二标识将所述目标数据集所述各个目标数据的位置集和所述原始数据集中的各个数据建立对应关系,基于所述第二标识可以查找所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的各个数据。
上述的回滚方法中,可以实现数据操作的可视化,针对每次操作生成唯一第一标识和第二标识,保证通过唯一第一标识获得一次完整的操作内容,回滚时也会根据第二标识进行完整的回滚操作。优选的,回滚时可选择全量回滚,也可以选择精细化回滚,只回滚此次操作后未被修改的数据。
基于上述的一种精细化数据回滚方法,本发明实施例中,还提供了一种精细化回滚装置,预先构建原始数据集、各个目标数据的位置集和目标数据集三者的对应关系,其中,所述对应关系包括:基于第一标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集和基于第二标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的对应的数据,所述回滚装置包括:
第一获取模块401、第二获取模块402、第三获取模块403和回滚模块404。
其中,
所述第一获取模块401,用于接收回滚请求,获取所述回滚请求中的第一标识;
所述第二获取模块402,用于基于所述第一标识获取所述原始数据集、所述各个所述目标数据的位置集和所述目标数据集;
所述第三获取模块403,用于遍历所述目标数据集中的每一条目标数据,获取其对应的第二标识,依据所述第二标识确定当前时刻数据;
所述回滚模块404,用于当遍历的目标数据与所述当前时刻数据相同时,执行回滚操作。
本发明公开了一种精细化数据回滚装置,预先构建原始数据集、各个目标数据的位置集和所述目标数据集三者的对应关系,其中,所述对应关系包括:基于第一标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集和基于第二标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集中的对应的数据,所述方法包括:接收回滚请求,获取所述回滚请求中的第一标识;基于所述第一标识获取所述原始数据集、所述各个所述目标数据的位置集和所述目标数据集;遍历所述目标数据集中的每一条目标数据,获取其对应的第二标识,依据所述第二标识确定当前时刻数据;当遍历的目标数据与所述当前时刻数据相同时,执行回滚操作。上述装置中,遍历目标数据集中的每一条目标数据,依据第一标识和第二标识确定与其对应的原始数据;在该目标数据与原始数据相同时,执行回滚操作,可以实现对目标数据集中的每一个目标数据回滚,不进行整体回滚,并且还可以依据对应的标识回滚到不同的原始数据集,实现了精细化回滚。
本发明实施例中,所述回滚装置中基于第一标识区分所述原始数据集、所述各个目标数据的位置集和所述目标数据集,包括:
接收模块405、第一分配模块406、第二分配模块407和第三分配模块408。
其中,
所述接收模块405,用于接收更新语句;
所述第一分配模块406,用于确定当前数据库中与所述更新语句匹配的原始数据,构建原始数据集并为所述原始数据集分配第一标识;
所述第二分配模块407,用于依据所述更新语句,将所述原始数据更新为目标数据,构建目标数据的位置集并为所述目标数据的位置集分配第一标识;
所述第三分配模块408,用于依据所述更新语句,将所述原始数据更新为目标数据,构建目标数据集并为所述目标数据集分配第一标识。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种精细化数据回滚方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。