一种版本回滚方法、装置、电子设备及存储介质与流程

文档序号:20768553发布日期:2020-05-15 19:19阅读:175来源:国知局
一种版本回滚方法、装置、电子设备及存储介质与流程

本发明涉及数据存储技术领域,特别是涉及一种版本回滚方法、装置、电子设备及存储介质。



背景技术:

在区块链领域对数据进行存储时,不可避免的需要对数据库进行数据回滚,也就是将数据库中当前存储的数据回滚到之前某一时刻存储的数据,从而降低数据异常或数据不可信任等情况对数据库的影响。

目前大多数的数据库并不支持数据回滚,例如,常用的远程字典服务(remotedictionaryserver,redis)或memcached(记忆快取)类型的数据库均不支持数据回滚。在部分支持数据回滚的数据中,所采用的数据回滚方法并不能适用于不同的类型的数据库。部分数据库可以通过硬分叉的方式实现对数据库中存储的数据的回滚,也就是基于区域链当前的主链中的数据,重新计算之后异常区块对应的数据,而不使用异常区块原有的数据,例如,区域链中的比特币(bitcoin,btc)。还有就是完全基于内存的数据回滚,如柚子(eos)区块链所采用的链基(chainbase)方式就是一种完全基于内存的数据回滚方式。但是,通过硬分叉的数据回滚方法的操作过程较为复杂,并且回滚后的区块链中的部分分叉中的数据可能会丢失,数据回滚的代价较大。而基于内存的数据回滚方法受到内容容量的限制,使得该方法并不能适用于不同类型的数据库,也就是该数据回滚方法的通用性较差。



技术实现要素:

本发明实施例的目的在于提供一种版本回滚方法、装置、电子设备及存储介质,降低数据回滚的代价,提高数据回滚方法的通用性。具体技术方案如下:

本发明实施例提供了一种版本回滚方法,所述方法包括:

接收针对预设数据库当前版本的版本回滚请求,所述预设数据库的每一版本是根据对所述预设数据库中存储的数据进行的每一次数据更新操作确定的;

基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将所述当前版本回滚至目标版本,每一版本对应的反向操作记录是根据对该版本的上一版本所对应的数据更新操作生成的。

可选的,所述版本回滚请求包括目标版本的目标版本号;

所述基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将所述当前版本回滚至目标版本的步骤,包括:

基于所述版本回滚请求中包括的目标版本号,确定所述当前版本与所述目标版本之间的多个反向操作记录;

按照所述多个反向操作记录,将所述当前版本回滚至所述目标版本。

可选的,在基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将所述当前版本回滚至目标版本之前,还包括:

判断所述目标版本的版本号的生成时间是否早于预设版本号的生成时间;所述预设版本号为预先设定的版本回滚的最早版本号;

所述基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将所述当前版本回滚至目标版本的步骤,包括:

若不早于所述预设版本号的生成时间,则基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将所述当前版本回滚至目标版本。

可选的,所述方法还包括:

接收针对所述预设版本号的调整请求,所述调整请求包括待调整版本号;

基于所述调整请求,将所述预设版本号调整为所述待调整版本号。

可选的,所述方法还包括:

接收针对所述预设数据库中存储的数据的数据更新操作请求;

基于所述数据更新操作请求,对所述预设数据库中存储的数据进行更新;

生成更新后的预设数据库对应版本的版本号,以及与所述数据更新操作对应的反向操作记录。

可选的,所述数据更新操作请求为批量写入操作请求;所述批量写入操作请求包括多个待写入数据;

所述生成更新后的预设数据库对应版本的版本号,以及与所述数据更新操作对应的反向操作记录的步骤,包括:

生成所述批量写入操作后的预设数据库对应版本的版本号,以及指示批量删除所述多个待写入数据的反向操作记录。

可选的,所述基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将所述当前版本回滚至目标版本的步骤,包括:

若所述当前版本是对目标版本进行批量写入操作后得到的版本,则基于接收到的版本回滚请求,根据当前版本对应的反向操作记录,从所述当前版本对应的预设数据库中批量删除写入的多个待写入数据。

本发明实施例还提供了一种版本回滚装置,所述装置包括:

第一接收模块,用于接收针对预设数据库当前版本的版本回滚请求,所述预设数据库的每一版本是根据对所述预设数据库中存储的数据进行的每一次数据更新操作确定的;

回滚模块,用于基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将所述当前版本回滚至目标版本,每一版本对应的反向操作记录是根据对该版本的上一版本所对应的数据更新操作生成的。

可选的,所述版本回滚请求包括目标版本的目标版本号;

所述回滚模块,具体用于基于所述版本回滚请求中包括的目标版本号,确定所述当前版本与所述目标版本之间的多个反向操作记录;按照所述多个反向操作记录,将所述当前版本回滚至所述目标版本。

可选的,所述装置还包括:

判断模块,用于判断所述目标版本的版本号的生成时间是否早于预设版本号的生成时间;所述预设版本号为预先设定的版本回滚的最早版本号;

所述回滚模块,具体用于在所述判断模块的判断结果为否时,基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将所述当前版本回滚至目标版本。

可选的,所述装置还包括:

第二接收模块,用于接收针对所述预设版本号的调整请求,所述调整请求包括待调整版本号;

调整模块,用于基于所述调整请求,将所述预设版本号调整为所述待调整版本号。

可选的,所述装置还包括:

第三接收模块,用于接收针对所述预设数据库中存储的数据的数据更新操作请求;

更新模块,用于基于所述数据更新操作请求,对所述预设数据库中存储的数据进行更新;

生成模块,用于生成更新后的预设数据库对应版本的版本号,以及与所述数据更新操作对应的反向操作记录。

可选的,所述数据更新操作请求为批量写入操作请求;所述批量写入操作请求包括多个待写入数据;

所述生成模块,具体用于生成所述批量写入操作后的预设数据库对应版本的版本号,以及指示批量删除所述多个待写入数据的反向操作记录。

可选的,所述回滚模块,具体用于若所述当前版本是对目标版本进行批量写入操作后得到的版本,则基于接收到的版本回滚请求,根据当前版本对应的反向操作记录,从所述当前版本对应的预设数据库中批量删除写入的多个待写入数据。

本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述的版本回滚方法步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的版本回滚方法步骤。

本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的版本回滚方法。

本发明实施例有益效果:

本发明实施例提供的版本回滚方法、装置、电子设备及存储介质,可以根据对预设数据库中存储的数据的每一次数据更新操作,生成对应的版本以及反向操作记录,在需要对预设数据库中的数据进行数据回滚时,接收针对当前版本的版本回滚请求,从而根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,这使得预设数据库中存储的数据可以随着预设数据库的版本的回滚而发生回滚,由于反向操作记录是根据数据更新操作生成的,在进行数据回滚时操作过程相对简单,有效降低了数据回滚的代价,并且反向操作记录的数据量相对较小,对内存的依赖较小,这使得该数据回滚方式可以适用于不同类型的数据库,提高了数据回滚方法的通用性。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的版本回滚方法的第一种流程示意图;

图2为本发明实施例提供的版本回滚方法的第二种流程示意图;

图3为本发明实施例提供的版本回滚方法的第三种流程示意图;

图4为本发明实施例提供的版本回滚方法的第四种流程示意图;

图5为本发明实施例提供的版本回滚装置的一种结构示意图;

图6为本发明实施例提供的电子设备的一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了解决现有数据回滚方法不适用于不同类型的数据库的问题,本发明实施例提供了一种版本回滚方法。该方法可以应用于任一电子设备。在本发明实施例提供的方法中,电子设备可以接收针对预设数据库当前版本的版本回滚请求,该预设数据库的每一版本是根据对预设数据库中存储的数据进行的每一次数据更新操作确定的,基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,每一版本对应的反向操作记录是根据对该版本的上一版本所对应的数据更新操作生成的。

通过本发明实施例提供的方法,根据对预设数据库中存储的数据的每一次数据更新操作,生成对应的版本以及反向操作记录,在需要对预设数据库中的数据进行数据回滚时,接收针对当前版本的版本回滚请求,从而根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,这使得预设数据库中存储的数据可以随着预设数据库的版本的回滚而发生回滚,由于反向操作记录是根据数据更新操作生成的,在进行数据回滚时操作过程相对简单,有效降低了数据回滚的代价,并且反向操作记录的数据量相对较小,对内存的依赖较小,这使得该数据回滚方式可以适用于不同类型的数据库,提高了数据回滚方法的通用性。

下面通过具体的实施例,对本发明实施例进行说明。

如图1所示,图1为本发明实施例提供的版本回滚方法的第一种流程示意图。该方法包括以下步骤。

步骤s101,接收针对预设数据库当前版本的版本回滚请求,预设数据库的每一版本是根据对预设数据库中存储的数据进行的每一次数据更新操作确定的。

在本步骤中,当对预设数据库中存储的数据进行数据更新操作时,电子设备可以生成本次数据更新操作后预设数据库的版本的版本号,以及与本次数据更新操作对应的反向操作记录。电子设备可以接收针对预设数据当前版本的版本回滚请求。关于预设数据库的版本更新以及反向操作记录的生成可参见下文描述,在此不作具体说明。

一个可选的实施例中,在检测到预设数据库中存储的数据出现数据异常,或数据不可信等异常情况时,电子设备可以自动触发版本回滚操作。此时,电子设备可以接受到针对预设数据库的当前版本的版本回滚请求。在此,对预设数据库中异常数据的检测不过具体说明。

另一个可选的实施例中,用户可以根据自身需求,触发版本回滚操作,例如,用户可以点击预定的版本回滚按钮,或者输入预定的版本回滚指令。此时,电子设备可以接收到针对预设数据库当前版本的版本回滚请求。

一个可选的实施例中,上述预设数据库包括但不限于键值数据库、区块链数据库。

一个可选的实施例中,上述版本回滚请求中可以包括目标版本的目标版本号。

步骤s102,基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,每一版本对应的反向操作记录是根据对该版本的上一版本所对应的数据更新操作生成的。

在本步骤中,电子设备在接收到上述版本回滚请求后,可以根据存储的每一版本对应的反向操作记录,对预设数据库的当前版本进行版本回滚操作,从而将当前版本回滚至目标版本,实现对预设数据库当前版本对应存储的数据的数据回滚。关于版本回滚操作的具体过程可参见下文描述,在此不作具体说明。

在本发明实施例中,上述目标版本可以为当前版本的上一版本。也就是电子设备接收到一次版本回滚请求,可以将当前版本回滚为当前版本的上一版本。或者,上述目标版本可以当前版本之前的任一版本。也就是电子设备接收到一次版本回滚请求,可以将当前版本回滚为当前版本之前的任一版本。

一个可选的实施例中,在进行数据回滚后,丢弃生成时间晚于当前版本的版本所对应的数据。也就是在将当前版本回滚至目标版本后,目标版本与当前版本之间对应版本的数据将被丢弃,不可找回。具体的,用户可以根据用户需求,以及应用场景等对回滚后当前版本之后的版本的数据进行丢弃。在本发明实施例中不作具体限定。

采用图1所示的方法,根据对预设数据库中存储的数据的每一次数据更新操作,生成对应的版本以及反向操作记录,在需要对预设数据库中的数据进行数据回滚时,接收针对当前版本的版本回滚请求,从而根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,这使得预设数据库中存储的数据可以随着预设数据库的版本的回滚而发生回滚,由于反向操作记录是根据数据更新操作生成的,在进行数据回滚时操作过程相对简单,有效降低了数据回滚的代价,并且反向操作记录的数据量相对较小,对内存的依赖较小,这使得该数据回滚方式可以适用于不同类型的数据库,提高了数据回滚方法的通用性。

一个可选的实施例中,当版本回滚请求包括目标版本的目标版本号时,上述步骤s102,基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,可以包括以下步骤。

步骤一,基于版本回滚请求中包括的目标版本号,确定当前版本与目标版本之间的多个反向操作记录。

在本步骤中,当接收到的版本回滚请求中包括上述目标版本号时,电子设备可以确定需要将预设数据库由当前版本回滚为目标版本号对应的目标版本。此时,电子设备可以根据版本回滚请求中包括的目标版本号,从存储的每一版本对应的反向操作记录中,选取出在预设数据库的当前版本与预设数据库的目标版本之间对应的多个反向操作记录。

例如,预设数据库的当前版本为第四版本,预设数据库的目标版本为第二版本,在接收到上述包括第二版本的版本号时,电子设备可以从存储的每一版本对应的反向操作记录中,获取当前版本与目标版本之间的版本对应的多个反向操作记录,也就是获取当前版本,即第四版本对应的反向操作记录,以及第三版本对应的反向操作指令。

步骤二,按照多个反向操作记录,将当前版本回滚至目标版本。

在本步骤中,电子设备在确定当前版本与目标版本之间的多个反向操作记录后,可以根据每一反向操作记录生成时间,依次执行每一反向操作记录对应的反向操作,也就是按照生成时间从晚到早的顺序,依次执行每一反向操作记录对应的反向操作,将当前版本回滚至目标版本。

为方便理解,以预设数据库的当前版本是经过5次数据更新操作得到的版本为例进行说明。预设数据库存在5个版本,依次分别为a1、a2、a3、a4、a5,其中,当前版本为a5。

当上述目标版本为当前版本的上一版本,即上述版本回滚请求中包括的版本号为当前版本的上一版本的版本号,即a4。电子设备可以获取当前版本对应的反向操作记录,并根据该反向操作记录将当前版本回滚为当前版本的上一版本,即将a5回滚为a4。此时,预设数据库的当前版本将变更为a4。预设数据库中存储的数据为版本号为a4时的预设数据库所对应存储的数据。

当上述目标版本为当前版本之前的任一版本时,如上述版本回滚请求中包括的目标版本号为a3时,电子设备可以根据版本回滚请求中包括的a3,从存储的每一版本对应的反向操作记录中,选取a5对应的反向操作记录以及a4对应的反向操作记录。电子设备可以根据选取出的反向操作记录的生成时间,先执行a5对应的反向操作记录,将预设数据库的版本由a5回滚为a4,再执行a4对应的反向操作记录,将预设数据库的版本由a4回滚为a3,从而完成预设数据库从版本a5回滚至版本a3的过程。

在上述实施例中,通过在版本回滚请求中携带目标版本的目标版本号,可以仅通过一次版本回滚请求的接收,将预设数据库的当前版本回滚为目标版本,有效减少了版本回滚请求的接收次数,缩短了版本回滚耗费的时间,提高了版本回滚的效率。

另一个可选的实施例中,当上述版本回滚请求中不包括上述目标版本的目标版本号时,上述目标版本默认为预设数据库当前版本的上一版本。此时,在接收到版本回滚请求时,电子设备默认将预设数据库由当前版本回滚为当前版本的上一版本。

一个可选的实施例中,根据图1所示的方法,本发明实施例还提供了一种版本回滚方法。如图2所示,图2为本发明实施例提供的版本回滚方法的第二种流程示意图。该方法包括以下步骤。

步骤s201,接收针对预设数据库当前版本的版本回滚请求,预设数据库的每一版本是根据对预设数据库中存储的数据进行的每一次数据更新操作确定的。

上述步骤s201与上述步骤s101相同。

步骤s202,判断目标版本的版本号的生成时间是否早于预设版本号的生成时间;预设版本号为预先设定的版本回滚的最早版本号。若否,则执行步骤s203。

在本步骤中,电子设备可以将目标版本的版本号的生成时间与预设版本号的生成时间进行比较,从而确定目标版本的版本号的生成时间是否早于预设版本号的生成时间。也就是确定目标版本是否在预设版本号对应的预设版本之前生成的。

在本发明实施例中,电子设备还可以采用其他方式确定目标版本是否在预设版本号对应的预设版本之前生成的。例如,电子设备在每一次生成数据更新操作对应的版本的版本号时,可以按照递增规律生成每一版本的版本号,如上述a1-a5。电子设备可以根据目标版本的目标版本号和预设版本号,确定目标版本是否在预设版本号对应的预设版本之前生成的。也就是当目标版本的目标版本号小于预设版本号时,电子设备可以确定目标版本是在预设版本之前生成的。当目标版本的目标版本号大于预设版本号时,电子设备可以确定目标版本是在预设版本之后生成的。当目标版本的目标版本号等于预设版本号时,电子设备可以确定目标版本为预设版本。

步骤s203,基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本。

在本步骤中,当目标版本的版本号的生成时间不早于预设版本号的生成时间时,也就是确定目标版本是在预设版本之后生成时,电子设备可以基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本。具体版本回滚方式可参考上述步骤s102,在此不作具体说明。

一个可选的实施例中,当目标版本的版本号的生成时间早于预设版本号的生成时间时,也就是确定目标版本不是在预设版本之后生成时,电子设备将当前版本回滚至预设版本。

例如,当上述目标版本为除当前版本以及当前版本的上一版本以外的任一版本时,预设版本为当前版本的上一版本,此时,电子设备可以确定目标版本的版本号的生成时间早于预设版本号的生成时间,也就是目标版本是在预设版本之前生成的。电子设备可以将当前版本回滚至当前版本的上一版本。除此以外,电子设备还可以向用户发送提示消息,例如,在电子设备的显示屏幕中显示已回滚至预设版本,从而提示用户不可以回滚至目标版本。

采用图2所示的方法,通过设置预设版本,即设置可以进行版本回滚的最早版本号,从而保证了预设版本之前的每一版本是不可逆性,保证了预设数据库中存储数据的稳定性。

一个可选的实施例中,根据图1所示的方法,本发明实施例还提供了一种版本回滚方法。如图3所示,图3为本发明实施例提供的版本回滚方法的第三种流程示意图。该方法包括以下步骤。

步骤s301,接收针对预设数据库当前版本的版本回滚请求,预设数据库的每一版本是根据对预设数据库中存储的数据进行的每一次数据更新操作确定的。

步骤s302,基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,每一版本对应的反向操作记录是根据对该版本的上一版本所对应的数据更新操作生成的。

上述步骤s301-步骤s302与上述步骤s101-步骤s102相同。

步骤s303,接收针对预设版本号的调整请求,调整请求包括待调整版本号。

一个可选的实施例中,用户可以根据自身需求向电子设备发送针对预设版本号的调整请求,该调整请求中包括待调整版本号。电子设备接收该调整请求。

另一个可选的实施例中,电子设备可以按照预设的调整规则,触发对预设版本号的调整操作。此时,电子设备将接收到针对预设版本号的调整请求,该调整请求中包括待调整版本号。例如,预设的调整规则可以为当预设数据库中的数据更新操作达到预设更新次数阈值,自动触发对预设版本号的调整操作。在此对预设的调整规则不作具体限定。

在本发明实施例中,对上述步骤s301与步骤s303的执行顺序不作具体限定。

步骤s304,基于调整请求,将预设版本号调整为待调整版本号。

在本步骤中,在接收到上述调整请求,电子设备可以将预设版本号调整为待调整版本号,即预设版本变更为待调整版本号所对应的版本。

采用图3所示的方法,电子设备可以根据用户需求或应用场景等因素,及时对预设版本进行调整,提高了预设版本的灵活性,从而提高上述版本回滚方法的灵活性。

一个可选的实施例中,根据图1所示的方法,本发明实施例还提供了一种版本回滚方法。如图4所示,图4为本发明实施例提供的版本回滚方法的第四种流程示意图。该方法包括以下步骤。

步骤s401,接收针对预设数据库当前版本的版本回滚请求,预设数据库的每一版本是根据对预设数据库中存储的数据进行的每一次数据更新操作确定的。

步骤s402,基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,每一版本对应的反向操作记录是根据对该版本的上一版本所对应的数据更新操作生成的。

上述步骤s401-步骤s402与上述步骤s101-步骤s102相同。

步骤s403,接收针对预设数据库中存储的数据的数据更新操作请求。

在本步骤中,用户可以针对预设数据库中存储的数据进行数据更新操作。当用户对预设数据库中存储的数据进行数据更新操作时,电子设备将接收到针对预设数据库中存储的数据的数据更新操作请求。其中,该数据操作请求中包括指示数据更新操作的操作信息。

一个可选的实施例中,上述数据更新操作可以包括对预设数据库的增加操作,删除操作和修改操作。对于不同类型的数据库可以采用的数据更新操作也有所不同。例如,若预设数据库为键值数据库,上述数据更新操作可以为增加操作,删除操作和修改操作中的任一操作。再例如,若预设数据库为区块链数据库,上述数据更新操作可以为增加操作。

在本发明实施例中,针对不同的数据更新操作,数据操作请求中包括指示数据更新操作的操作信息也有所不同。例如,数据更新操作为上述增加操作,操作信息可以包括待增加数据,以及待增加数据对应的存储地址等信息。再例如,数据更新操作为上述删除操作,操作信息可以为预设数据库中的待删除数据,以及该待删除数据的存储地址等信息。再例如,数据更新操作为上述修改操作,操作信息可以为修改前的数据、该数据存储地址,以及修改后的数据等信息。在此,对上述数据操作请求中包括指示数据更新操作的操作信息不作具体限定。

步骤s404,基于数据更新操作请求,对预设数据库中存储的数据进行更新。

在本步骤中,在接收到上述数据更新操作请求后,电子设备可以根据该数据更新操作请求中包括的指示数据更新操作的操作信息,对预设数据库中存储的数据进行更新。以操作信息为待增加数据,以及待增加数据对应的存储地址为例,电子设备可以根据该操作信息,将待增加数据存储到预设数据库对应的存储地址处,完成对预设数据库的数据更新操作,得到本次更新后的预设数据库。

步骤s405,生成更新后的预设数据库对应版本的版本号,以及与数据更新操作对应的反向操作记录。

在本步骤中,在完成对预设数据库中存储的数据的数据更新操作后,电子设备可以根据对本次对预设数据库的数据更新操作生成更新后的预设数据库对应版本的版本号,以及与本次数据更新操作对应的反向操作记录。

上述反向操作记录中记录有与数据更新操作相反操作所对应的反向操作信息。分别以数据更新操作为上述增加操作,删除操作和修改操作为例进行举例说明。当数据更新操作为上述增加操作时,如将数据a添加到预设数据库的位置a处,反向操作记录可以记录有将预设数据库的位置a处的数据a删除的反向操作信息。当数据更新操作为上述删除操作时,如将预设数据库的位置b处的数据b删除,反向操作记录可以记录有将数据b添加到预设数据库的位置b处的反向操作信息。当数据更新操作为上述修改操作时,如将预设数据库的位置c处的数据c修改数据d,反向操作记录可以记录有将预设数据库的位置c处的数据d修改数据c的反向操作信息。

在本发明实施例中,电子设备将对预设数据库的每一次数据更新操作抽象为版本状态的变更。预设数据库的版本以及每一版本的版本号仅仅是对一次数据更新操作后的预设数据库的标记。也就是每一新的版本的生成仅仅表示预设数据库中的数据发生了一次数据更新。在此过程中,电子设备利用预设数据库的版本的变更表示对预设数据库的每一次数据更新操作,并不需要对进行数据更新操作前和进行数据更新操作后的预设数据库中存储的数据进行记录或存储,有效降低了存储的数据的数据量,节约了存储资源。

采用图4所示的方法,在对预设数据库中存储的数据进行更新后,电子设备可以生成对应版本的版本号,以及与数据更新操作对应的反向操作记录,便于后期进行版本回滚。

一个可选的实施例中,上述实施例中,数据更新操作是对预设数据的存储的单一数据的一次更新操作。考虑到预设数据库可以提供批量写入的接口,也就是预设数据库可以提供批量写入的功能。此时,上述数据更新操作请求可以为批量写入操作请求;该批量写入操作请求包括多个待写入数据。

上述步骤s405,生成更新后的预设数据库对应版本的版本号,以及与数据更新操作对应的反向操作记录,具体可以表示为:生成批量写入操作后的预设数据库对应版本的版本号,以及指示批量删除多个待写入数据的反向操作记录。

具体的,由于网络环境等因素的影响,在进行批量写入时,每一待写入数据写入预设数据库的时间可能相同,也可能不相同。在本发明实施例中,电子设备可以将对上述多个待写入数据的批量写入预设数据库的增加操作视为一次数据更新操作,从而在多个待写入数据写入预设数据库中,根据生成批量写入操作后的预设数据库对应版本的版本号,以及与本次批量写入操作相反的批量删除操作记录,即指示批量删除多个待写入数据的反向操作记录。

在本发明实施例中,电子设备将批量写入操作视为一次完整的数据更新操作,从而生成与本次批量写入操作对应的版本号以及反向操作记录,便于在后期进行版本回滚时,可以直接将版本回滚为批量写入操作前的预设数据库的版本。

一个可选的实施例中,针对上述批量写入操作,电子设备还可以根据用户需求,应用场景等因素,确定是否生成与每一待写入数据写入预设数据库后对应版本的版本号,以及对应的反向操作记录。

一个可选的实施例中,当上述当前版本是对目标版本进行批量写入操作后得到的版本时,上述步骤s402,基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本具体可以表示为:基于接收到的版本回滚请求,根据当前版本对应的反向操作记录,也就是上述指示批量删除多个待写入数据的反向操作记录,从当前版本对应的预设数据库中批量删除写入的多个待写入数据,从而将当前版本回滚至上述批量写入操作之前的预设数据库对应的版本。

在本发明实施例中,根据上述指示批量删除多个待写入数据的反向操作记录,电子设备可以直接将当前版本回滚至批量写入操作之前的预设数据库对应的版本,无需逐一对预设数据库中批量写入的数据进行回滚,提高了预设数据库版本回滚的效率,从而提高了预设数据库中存储的数据回滚的效率。

基于同一种发明构思,根据上述本发明实施例提供的版本回滚方法,本发明实施例还提供了一种版本回滚装置。如图5所示,图5为本发明实施例提供的版本回滚装置的一种结构示意图。还装置包括以下模块。

第一接收模块501,用于接收针对预设数据库当前版本的版本回滚请求,预设数据库的每一版本是根据对预设数据库中存储的数据进行的每一次数据更新操作确定的;

回滚模块502,用于基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,每一版本对应的反向操作记录是根据对该版本的上一版本所对应的数据更新操作生成的。

可选的,上述版本回滚请求可以包括目标版本的目标版本号;

上述回滚模块502,具体可以用于基于版本回滚请求中包括的目标版本号,确定当前版本与目标版本之间的多个反向操作记录;按照多个反向操作记录,将当前版本回滚至所述目标版本。

可选的,上述版本回滚装置还可以包括:

判断模块,用于判断目标版本的版本号的生成时间是否早于预设版本号的生成时间;预设版本号为预先设定的版本回滚的最早版本号;

上述回滚模块502,具体可以用于在判断模块的判断结果为否时,基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将当前版本回滚至目标版本。

可选的,上述版本回滚装置还可以包括:

第二接收模块,用于接收针对预设版本号的调整请求,调整请求包括待调整版本号;

调整模块,用于基于调整请求,将预设版本号调整为待调整版本号。

可选的,上述版本回滚装置还可以包括:

第三接收模块,用于接收针对预设数据库中存储的数据的数据更新操作请求;

更新模块,用于基于数据更新操作请求,对预设数据库中存储的数据进行更新;

生成模块,用于生成更新后的预设数据库对应版本的版本号,以及与数据更新操作对应的反向操作记录。

可选的,上述数据更新操作请求为批量写入操作请求;批量写入操作请求包括多个待写入数据;

上述生成模块,具体可以用于生成批量写入操作后的预设数据库对应版本的版本号,以及指示批量删除多个待写入数据的反向操作记录。

可选的,上述回滚模块502,具体可以用于若当前版本是对目标版本进行批量写入操作后得到的版本,则基于接收到的版本回滚请求,根据当前版本对应的反向操作记录,从当前版本对应的预设数据库中批量删除写入的多个待写入数据。

通过本发明实施例提供的装置,根据对预设数据库中存储的数据的每一次数据更新操作,生成对应的版本以及反向操作记录,在需要对预设数据库中的数据进行数据回滚时,接收针对当前版本的版本回滚请求,从而根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,这使得预设数据库中存储的数据可以随着预设数据库的版本的回滚而发生回滚,由于反向操作记录是根据数据更新操作生成的,在进行数据回滚时操作过程相对简单,有效降低了数据回滚的代价,并且反向操作记录的数据量相对较小,对内存的依赖较小,这使得该数据回滚方式可以适用于不同类型的数据库,提高了数据回滚方法的通用性。

基于同一种发明构思,根据上述本发明实施例提供的版本回滚方法,本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信;

存储器603,用于存放计算机程序;

处理器601,用于执行存储器603上所存放的程序时,实现如下步骤:

接收针对预设数据库当前版本的版本回滚请求,所述预设数据库的每一版本是根据对所述预设数据库中存储的数据进行的每一次数据更新操作确定的;

基于接收到的版本回滚请求,根据每一版本对应的反向操作记录,将所述当前版本回滚至目标版本,每一版本对应的反向操作记录是根据对该版本的上一版本所对应的数据更新操作生成的。

通过本发明实施例提供的电子设备,根据对预设数据库中存储的数据的每一次数据更新操作,生成对应的版本以及反向操作记录,在需要对预设数据库中的数据进行数据回滚时,接收针对当前版本的版本回滚请求,从而根据每一版本对应的反向操作记录,将当前版本回滚至目标版本,这使得预设数据库中存储的数据可以随着预设数据库的版本的回滚而发生回滚,由于反向操作记录是根据数据更新操作生成的,在进行数据回滚时操作过程相对简单,有效降低了数据回滚的代价,并且反向操作记录的数据量相对较小,对内存的依赖较小,这使得该数据回滚方式可以适用于不同类型的数据库,提高了数据回滚方法的通用性。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

基于同一种发明构思,根据上述本发明实施例提供的版本回滚方法,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述任一版本回滚方法的步骤。

基于同一种发明构思,根据上述本发明实施例提供的版本回滚方法,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一版本回滚方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质及计算机程序产品等实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1