基于非关系型数据库的事务处理方法和装置与流程

文档序号:13886834阅读:242来源:国知局

本发明涉及计算机技术领域,特别是涉及一种基于非关系型数据库的事务处理方法和装置。



背景技术:

随着计算机技术的快速发展,数据规模飞速增长。目前,由于传统的关系型数据库在应对大数据的存储、查询和修改时,出现了性能上的瓶颈,因此各种非关系型数据库应用而生。非关系型数据库的数据存储不需要固定的表结构,具有很强的可扩展性,提升了应对大数据时的处理效率。

传统技术中的非关系型数据库虽然在应对大数据时的提高了处理效率,然而,在数据处理过程中发生错误时,无法及时对错误数据进行修复,从而无法有效保证数据库中数据的一致性。



技术实现要素:

基于此,有必要针对非关系型数据库无法有效保证数据库数据一致性的问题,提供一种基于非关系型数据库的事务处理方法和装置。

一种基于非关系型数据库的事务处理方法,所述方法包括:

启动事务,并获取所述事务携带的事务标识;

依次读取所述事务包括的针对非关系型数据库的数据库操作语句;

将所述非关系型数据库中与所述数据库操作语句对应的操作目标对应于所述事务标识进行备份;

按照所述数据库操作语句对所述非关系型数据库进行操作;

若在按照所述数据库操作语句对所述非关系型数据库进行操作时,接收到操作错误信息,则

将对应于所述事务标识备份的所述操作目标恢复至所述非关系型数据库,并结束所述事务。

在一个实施例中,所述依次读取所述事务包括的针对非关系型数据库的数据库操作语句之后,所述方法还包括:

将所述非关系型数据库中与所述数据库操作语句对应的操作目标对应于所述事务标识进行排它锁定;

所述方法还包括:

当按照所述事务所包括的数据库操作语句将所述非关系型数据库中的所述操作目标操作成功后,将所述排它锁定解除;

所述将对应于所述事务标识备份的所述操作目标恢复至所述非关系型数据库,并结束所述事务的步骤之后,所述方法还包括:

将所述排它锁定解除。

在一个实施例中,所述将所述非关系型数据库中与所述数据库操作语句对应的操作目标对应于所述事务标识进行备份的步骤包括:

获取所述数据库操作语句针对所述非关系型数据库中操作目标的操作类型;

采用与所述操作类型相匹配的备份方式,将所述操作目标和相应的操作类型对应于所述事务标识进行备份;

所述将对应于所述事务标识备份的所述操作目标恢复至所述非关系型数据库,并结束所述事务包括:

采用与对应于所述事务标识备份的操作类型相匹配的备份恢复方式,将对应于所述事务标识备份的所述操作目标恢复至所述非关系型数据库,并结束所述事务。

在一个实施例中,所述采用与所述操作类型相匹配的备份方式,将所述操作目标和相应的操作类型对应于所述事务标识进行备份包括:

当所述操作类型为新增数据操作类型时,获取所述数据库操作语句所指向的所述非关系型数据库中的待操作数据地址,并对应于所述事务标识进行备份,并将备份的所述待操作数据地址标记为第一类别;

当所述操作类型为已有数据操作类型时,在所述非关系型数据库中获取所述数据库操作语句所指向的待操作数据地址及相应的待操作数据,并对应于所述事务标识进行备份,并将备份的所述待操作数据地址标记为第二类别;

所述采用与对应于所述事务标识备份的操作类型相匹配的备份恢复方式,将对应于所述事务标识备份的所述操作目标恢复至所述非关系型数据库,并结束所述事务包括:

当对应于所述事务标识备份的待操作数据地址被标记为第一类别时,将所述非关系型数据库中与所述待操作数据地址对应的数据删除;

当对应于所述事务标识备份的待操作数据地址被标记为第二类别时,将所述非关系型数据库中与所述待操作数据地址对应的数据替换为相应备份的待操作数据。

在一个实施例中,所述按照所述数据库操作语句对所述非关系型数据库进行操作的步骤包括:

提取所述数据库操作语句指定的数据所对应的对象名和数据类型,所述指定的数据用于得到待写入数据;

在所述非关系型数据库中查找数据,查找的所述数据在所述非关系型数据库中对应的字段名与提取的所述对象名一致;

按照预设映射关系将查找到的所述数据映射为与提取的所述数据类型对应的数据;

根据所述数据库操作语句对映射得到的所述数据进行处理得到所述待写入数据;

根据所述待写入数据地址将所述待写入数据写入所述非关系型数据库中。

一种基于非关系型数据库的事务处理装置,所述装置包括:

启动模块,用于启动事务,并获取所述事务携带的事务标识;

读取模块,用于依次读取所述事务包括的针对非关系型数据库的数据库操作语句;

备份模块,用于将所述非关系型数据库中与所述数据库操作语句对应的操作目标对应于所述事务标识进行备份;

操作模块,用于按照所述数据库操作语句对所述非关系型数据库进行操作;

恢复模块,用于若在按照所述数据库操作语句对所述非关系型数据库进行操作时,接收到操作错误信息,则将对应于所述事务标识备份的所述操作目标恢复至所述非关系型数据库,并结束所述事务。

在一个实施例中,所述装置还包括:

锁定模块,用于将所述非关系型数据库中与所述数据库操作语句对应的操作目标对应于所述事务标识进行排它锁定;

提交模块,用于当按照所述事务所包括的数据库操作语句将所述非关系型数据库中的所述操作目标操作成功后,将所述排它锁定解除;

所述恢复模块还用于将所述排它锁定解除。

在一个实施例中,所述备份模块还用于获取所述数据库操作语句针对所述非关系型数据库中操作目标的操作类型;采用与所述操作类型相匹配的备份方式,将所述操作目标和相应的操作类型对应于所述事务标识进行备份;

所述恢复模块还用于采用与对应于所述事务标识备份的操作类型相匹配的备份恢复方式,将对应于所述事务标识备份的所述操作目标恢复至所述非关系型数据库,并结束所述事务。

在一个实施例中,所述备份模块还用于当所述操作类型为新增数据操作类型时,获取所述数据库操作语句所指向的所述非关系型数据库中的待操作数据地址,并对应于所述事务标识进行备份,并将备份的所述待操作数据地址标记为第一类别;当所述操作类型为已有数据操作类型时,在所述非关系型数据库中获取所述数据库操作语句所指向的待操作数据地址及相应的待操作数据,并对应于所述事务标识进行备份,并将备份的所述待操作数据地址标记为第二类别;

所述恢复模块还用于当对应于所述事务标识备份的待操作数据地址被标记为第一类别时,将所述非关系型数据库中与所述待操作数据地址对应的数据删除;当对应于所述事务标识备份的待操作数据地址被标记为第二类别时,将所述非关系型数据库中与所述待操作数据地址对应的数据替换为相应备份的待操作数据。

在一个实施例中,所述操作模块还用于提取所述数据库操作语句指定的数据所对应的对象名和数据类型,所述指定的数据用于得到待写入数据;在所述非关系型数据库中查找数据,查找的所述数据在所述非关系型数据库中对应的字段名与提取的所述对象名一致;按照预设映射关系将查找到的所述数据映射为与提取的所述数据类型对应的数据;根据所述数据库操作语句对映射得到的所述数据进行处理得到所述待写入数据;根据所述待写入数据地址将所述待写入数据写入所述非关系型数据库中。

上述基于非关系型数据库的事务处理方法和装置,在启动事务后且在按照数据库操作语句对非关系型数据库进行操作前,将非关系型数据库中与数据库操作语句对应的操作目标对应于事务标识进行备份;若在按照数据库操作语句对非关系型数据库进行操作时接收到操作错误信息,即可将备份操作目标还原至非关系型数据库,并结束该事务,使得非关系型数据库中的数据恢复至事务开始前的状态,保证了数据库中数据的一致性,进而保证了数据库事务的原子性。

附图说明

图1为一个实施例中基于非关系型数据库的事务处理方法的应用环境图;

图2a为一个实施例中用于实现基于非关系型数据库的事务处理方法的终端的结构示意图;

图2b为一个实施例中用于实现基于非关系型数据库的事务处理方法的服务器的结构示意图;

图3为一个实施例中基于非关系型数据库的事务处理方法的流程示意图;

图4为一个实施例中按照数据库操作语句对非关系型数据库进行操作的步骤的流程示意图;

图5为另一个实施例中基于非关系型数据库的事务处理方法的流程示意图;

图6为一个实施例中基于非关系型数据库的事务处理装置的结构框图;

图7为另一个实施例中基于非关系型数据库的事务处理装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为一个实施例中基于非关系型数据库的事务处理方法的应用环境图。参照图1,该基于非关系型数据库的事务处理方法应用于基于非关系型数据库的事务处理系统。基于非关系型数据库的事务处理系统包括终端110和服务器120,终端110通过网络与服务器120连接。终端110和/或服务器120上存储有非关系型数据库,可用于执行一种基于非关系型数据库的事务处理方法。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120具体可以是独立的物理服务器,也可以是物理服务器集群。

如图2a所示,在一个实施例中,提供了一种终端,该终端可用于实施一种基于非关系型数据库的事务处理方法。参考图2a,该终端包括通过系统总线连接的处理器、非易失性存储介质、内存储器、网络接口、显示屏和输入装置。其中,终端的非易失性存储介质存储有操作系统和非关系型数据库,非关系型数据库中存储有与数据库操作语句对应的操作目标。终端的处理器用于提供计算和控制能力,支撑整个终端的运行。终端的内存储器中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种基于非关系型数据库的事务处理方法。网络接口用于与服务器进行网络通信,如发送数据库操作语句等,输入装置可以是显示屏上覆盖的触摸层,也可以是外接的键盘、触控板或鼠标等。本领域技术人员可以理解,图2a中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

如图2b所示,在一个实施例中,提供一种服务器,该服务器可用于实施一种基于非关系型数据库的事务处理方法。参考图2b,该服务器包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该服务器的非易失性存储介质存储有操作系统、非关系型数据库和基于非关系型数据库的事务处理装置,非关系型数据库中存储有与数据库操作语句对应的操作目标,该基于非关系型数据库的事务处理装置用于实现适用于服务器的一种基于非关系型数据库的事务处理方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存储器为非易失性存储介质中的基于非关系型数据库的事务处理装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行一种基于非关系型数据库的事务处理方法。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的数据库操作语句等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图2b中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

如图3所示,在一个实施例中,提供了一种基于非关系型数据库的事务处理方法,该方法既可用于终端110也可用于服务器120,本实施例以该方法应用于上述图1中的服务器120来举例说明。该方法具体包括如下步骤:

s302,启动事务,并获取事务携带的事务标识。

其中,事务是指访问并可更新数据库中数据的操作执行单元。一个事务可包括单个操作,也可包括一个操作序列。事务标识用于唯一标识一个事务,可以是包括数字、字母和符号中的至少一种字符的字符串。

具体地,终端可以提供配置界面,获取用户编译的事务。终端在获取用户编译的事务后,可为该事务分配事务标识,并将该事务对应于事务标识存储在本地的数据库或者缓存中,在获取到用户通过终端配置界面触发的事务启动指令后,将该事务与相应的事务标识发送至服务器,并由服务器启动该事务。

用户也可在通过终端提供的配置界面进行事务编译时,同时配置编译的该事务的事务标识与事务开启时间。终端在获取用户编译的事务后将该事务对应于事务标识存储在本地的数据库或者缓存中,并在当前时间符合配置的事务开启时间时,将该事务与相应的事务标识发送至服务器,并由服务器启动该事务。

用户还可以在可在通过终端提供的配置界面完成事务编译后,即时触发的事务启动指令,终端将用户编译的事务发送至服务器,服务器为该事务分配事务标识并开启事务。

s304,依次读取事务包括的针对非关系型数据库的数据库操作语句。

其中,非关系型数据库(notonlystructuredquerylanguagenosql)是指在数据存储方面具备水平扩展性的数据库。非关系型数据库可以按照存储结构进行分类,分为键值对数据库、列存储数据库、文档型数据库和图形数据库等。非关系型数据库比如mongo数据库或couch数据库等。数据库操作语句是指用于对数据库中存储的数据进行操作的语句。比如结构化查询语言(structuredquerylanguagesql)等。

具体地,通常情况下,事务包括的数据库操作语句之间并非相互独立的,排列在后的数据库操作语句可以是以排列在前的数据库操作语句为基础编译的。服务器在开启事务后通常是按照事务中包括的数据库操作语句的排列顺序依次进行读取。

s306,将非关系型数据库中与数据库操作语句对应的操作目标对应于事务标识进行备份。

其中,操作目标是指数据库操作语句对非关系型数据库进行操作时的操作对象,可包括非关系型数据库中用于存储数据的地址和非关系型数据库中存储的数据。数据在数据库可以数据表的形式存储,用于存储数据的地址指数据在数据表中的具体位置。比如可将数据表名称和字段名作为用于存储数据的地址。

具体地,服务器在读取数据库操作语句后,可对该数据库操作语句进行语法分析,确定该数据库操作语句指向的非关系型数据库中的操作目标,并确定该数据库操作语句所属的事务携带的事务标识,再将确定的非关系型数据库中的操作目标和确定的事务标识对应备份。

在一个实施例中,用于备份操作目标和事务标识的存储空间可以是备份数据库。该备份数据库被事先配置为服务器备份在按照事务对数据库操作时的操作目标,服务器可在需要时对备份数据库中备份的数据进行清理。服务器也可以将该备份数据库设置为自动定期清理备份的数据,以避免当前启动的事务涉及操作的数据量大,在按照事务进行操作过程中,备份数据库存储容量溢出,导致数据无法备份的情况。从而保证在每次按照事务对非关系型数据库进行操作时,需要备份的操作目标都可完成备份。

在一个实施例中,服务器也可将需要备份的操作目标和事务标识备份至非关系型数据库日志文件中。日志文件是用于记录操作事件的记录文件或文件集合,服务器可事先对非关系数据库日志文件进行配置,使得服务器在对非关系型数据库进行操作时,将按照数据库操作语句进程操作的过程和需要进行备份的操作目标和事务标识记录到非关系数据库日志文件中。

s308,按照数据库操作语句对非关系型数据库进行操作。

其中,数据库操作语句对非关系型数据库进行的操作包括写入数据、删除数据和查询数据,写入数据包括新增数据和更新数据。具体地,服务器可在读取数据库操作语句后,对该数据库操作语句进行语法分析。数据库操作语句可包括指令字段、对象名或者函数等基本元素。对于结构化查询语言(structuredquerylanguagesql),指令字段比如select表示从数据库表中获取数据、update表示更新数据库表中的数据、delete表示从数据库表中删除数据和insertinto表示向数据库表中插入数据。

服务器对数据库操作语句进行语法分析后,若判定该数据库操作语句进行的操作为写入操作。服务器可获取该数据库操作语句中指向的非关系型数据库中待写入数据和该待写入数据对应的地址,按照该待写入数据对应的地址在非关系型数据库中写入待写入数据。其中,写入操作包括新增数据和更新数据。服务器若判定该数据库操作语句进行的操作为删除数据,可获取该数据库操作语句中指向的非关系型数据库中待删除数据对应的地址,将非关系型数据库中待删除数据对应的地址上存储的数据删除。

s310,若在按照数据库操作语句对非关系型数据库进行操作时,接收到操作错误信息,则将对应于事务标识备份的操作目标恢复至非关系型数据库,并结束事务。

其中,操作错误信息是指用于通知操作发生错误的信息。非关系型数据库在接收数据库操作语句的操作时,若用于进行操作的数据库操作语句格式不符合进行数据库操作的正确格式时,非关系型数据库可反馈操作错误信息。

具体地,服务器可在按照每句数据库操作语句对非关系型数据库进行操作时,检测非关系型数据库是否返回错误操作信息。若检测到非关系型数据库返回的错误操作信息,则判定服务器无法按照该数据库操作语句对数据库进行操作,该数据库操作语句所属的事务无法继续进行,将对应于事务标识备份的操作目标恢复至非关系型数据库,并结束事务。

若未检测到非关系型数据库返回的错误操作信息,则判定服务器按照该数据库操作语句对数据库操作成功,继续执行下一条数据库操作语句,直至服务器按照开启的事务所包括的数据库操作语句对非关系型数据库操作成功后,结束该事务。

上述基于非关系型数据库的事务处理方法,在启动事务后且在按照数据库操作语句对非关系型数据库进行操作前,将非关系型数据库中与数据库操作语句对应的操作目标对应于事务标识进行备份;若在按照数据库操作语句对非关系型数据库进行操作时接收到操作错误信息,即可将备份操作目标还原至非关系型数据库,并结束该事务,使得非关系型数据库中的数据恢复至事务开始前的状态,保证了数据库中数据的一致性,进而保证了数据库事务的原子性。

在一个实施例中,步骤s304之后,基于非关系型数据库的事务处理方法还包括将非关系型数据库中与数据库操作语句对应的操作目标对应于事务标识进行排它锁定。

其中,排他锁定是用于禁止其他对象对被锁定对象的操作权限。具体地,为了保证服务器在按照多个事务对非关系型数据库进行并行操作时,不同事务直接不会相互影响导致数据出错的问题。服务器可在按照每句数据操作语句对非关系型数据库进行操作前,将该数据库操作语句对应的操作目标对应于该数据库操作语句所属事务携带的事务标识进行排他锁定,使得所属事务携带的事务标识与用于锁定的事务标识不一致的数据库操作语句无法对锁定的该操作目标进行操作。例如,若事务t对数据a进行排他锁定,则只允许事务t读取和修改数据a,其他任何事务都不能再对数据a进行读取、修改或者进行任何类型的锁定,直到事务t解除对数据a的锁定。

进一步地,步骤s310具体包括当在按照数据库操作语句对非关系型数据库进行操作时,接收到操作错误信息,将对应于事务标识备份的操作目标恢复至非关系型数据库,并结束事务的步骤之后,将排它锁定解除。且当按照事务所包括的数据库操作语句将非关系型数据库中的操作目标操作成功后,将排它锁定解除。

在本实施例中,在按照数据库操作语句对非关系型数据库进行操作前,将与数据库操作语句对应的操作目标对应于事务标识进行排它锁定,其他任何事务都不能再对锁定的操作目标进行读取和修改或者进行任何类型的锁定,保证了,在事务结束后解除对操作目标的锁定,保证了其他事务的正常进行。

如图4所示,在一个实施例中,步骤s308具体包括如下步骤:

s402,提取数据库操作语句指定的数据所对应的对象名和数据类型,指定的数据用于得到待写入数据。

其中,对象名是指数据库操作语句中定义的待操作数据的名称。数据类型是指待操作数据的属性,包括数字型、字节型和文本型。数字型比如整型或者浮点型等。例如,数据库操作语句中定义的对象名为文具,该对象名对应的待操作数据可以是“pencil”或者“pen”等,该待操作数据对应的数据类型为字符型。

具体地,在服务器对数据库操作语句进行语法分析,并判定该数据库操作语句进行写入操作后,确定该数据库操作语句中指向的非关系型数据库中待写入数据和该待写入数据对应的地址。若数据库操作语句表示待写入数据由存储在非关系型数据库中的数据进行计算得到,则提取数据库操作语句中指定的用于得到待写入数据的数据所对应的对象名和数据类型。

s404,在非关系型数据库中查找数据,查找的数据在非关系型数据库中对应的字段名与提取的对象名一致。

其中,字段名是指数据库中定义的存储的一类数据的名称。具体地,服务器在提取数据库操作语句中指定的用于得到待写入数据的数据所对应的对象名后,遍历数据库中存储的字段名,在遍历时,将遍历的字段名与提取的对象名进行比对,若一致,则表示该字段名对应的数据是数据库操作语句所要查找的数据,服务器获取该字段名对应的数据。

s406,按照预设映射关系将查找到的数据映射为与提取的数据类型对应的数据。

其中,预设映射关系是预先设置的用于进行数据类型强制转化的映射关系。具体地,服务器在提取数据库操作语句中指定的用于得到待写入数据的数据所对应的数据类型后,按照预设映射关系中预先设置的该提取的数据类型的映射方式将查找到的数据映射为与提取的数据类型对应的数据。比如,提取的对象名为“年龄”,数据类型为“整型”;在非关系型数据库中查找的数据为“十岁”,则按照预设映射关系中预先设置的将数据映射为整型数据的映射方式,将“十岁”映射为“10”。

s408,根据数据库操作语句对映射得到的数据进行处理得到待写入数据。

具体地,服务器可获取数据库操作语句中定义的用于得到待写入数据的计算方式,根据该计算方式对对映射得到的数据进行计算得到待写入数据。例如,数据库操作语句为selectsum(orderprice)asordertotalfromorders,其中,sum字段表示该数据库操作语句指定进行求和计算,具体为对数据表名为“orders”且字段名为“orderprice”对应的数据求和。

s410,根据待写入数据地址将待写入数据写入非关系型数据库中。

在本实施例中,通过预设映射关系将需要处理的数据的数据类型转化为数据库操作语句可处理的数据类型,避免了非关系型数据库中存储的数据的数据类型不确定使得在需要提取数据库中的数据进行处理时需要实时进行数据类型转化导致操作繁琐的问题,提高了数据库操作效率。

进一步地,在本实施例中,预设映射关系可以是基于orm(objectrelationmapping对象关系映射)配置的。orm用于实现面向对象编程语言里不同类型系统的数据之间的转换。在开启事务前,开发人员通过终端提供的配置界面进行数据库操作语句编译或者其他面向对象编程语句编译时,也可从关系型数据库中读取编译时需要的数据,利用预设的映射关系将读取的数据映射为数据库操作语句或者其他面向对象编程语句指定的数据类型。其他面向对象编程语句比如java编程语句、c编程语句或者c++编程语句等。

在一个实施例中,步骤s306具体包括如下步骤:获取数据库操作语句针对非关系型数据库中操作目标的操作类型;采用与操作类型相匹配的备份方式,将操作目标和相应的操作类型对应于事务标识进行备份。

其中,操作类型是指按照指令对操作目标进行操作的方式,包括新增数据操作类型和已有数据操作类型。已有数据操作类型包括更新数据操作类型、删除数据操作类型和查询数据操作类型。服务器可事先设定针对不同操作类型的备份方式,在需要进行备份时,按照预先设定的相应的备份方式进行备份。

具体地,服务器可对数据库操作语句进行语法分析,确定数据库操作语句表征操作类型的指令字段,根据确定的指令字段确定数据库操作语句针对非关系型数据库中的操作目标以及针对的操作目标的操作类型。服务器可获取事先设定的与确定的操作类型的备份方式,对应于数据库操作语句所属事务携带的事务标识,将确定的操作目标与确定的操作类型进行备份。

进一步地,当服务器确定的操作类型为新增数据操作类型时,服务器应当向非关系型数据库中按照数据库操作语句指向的目标地址添加数据,该目标地址在操作前包括的数据为空,因此只需将目标地址和相应的新增数据操作类型对应于事务标识进行备份。

当服务器确定的操作类型为已有数据操作类型时,服务器应当向非关系型数据库中按照数据库操作语句指向的已存储目标数据的目标地址进行操作,该目标地址在操作前包括目标数据,因此需将目标地址、目标数据和相应的已有数据操作类型对应于事务标识进行备份。

更进一步地,在本实施例中,步骤s310具体包括:若在按照数据库操作语句对非关系型数据库进行操作时,接收到操作错误信息,则采用与对应于事务标识备份的操作类型相匹配的备份恢复方式,将对应于事务标识备份的操作目标恢复至非关系型数据库,并结束事务。

具体地,服务器可事先设定针对不同操作类型的备份恢复方式,在需要进行备份恢复时,按照预先设定的相应的备份恢复方式进行恢复。服务器在判定需要进行数据恢复时,检测备份数据相应备份的操作类型,按照与备份的操作类型对于的备份恢复当时进行数据恢复。对于相应备份的操作类型为新增数据操作类型的数据,将非关系数据库中备份的目标地址存储的数据删除;对于相应备份的操作类型为已有数据操作类型的数据,将非关系数据库中备份的目标地址存储的数据删除,并将备份的目标数据写入非关系数据库中备份的目标地址。

在本实施例中,将需要备份的操作目标,按照与操作目标相应的操作类型匹配的备份方式进行备份,并在需要还原时按照相应的备份恢复方式进行恢复,提高了数据备份与还原的效率与准确性。

如图5所示,在一个实施例中,提供了一种基于非关系型数据库的事务处理方法,该方法具体包括如下步骤:

s502,启动事务,并获取事务携带的事务标识。

s504,依次读取事务包括的针对非关系型数据库的数据库操作语句。

s506,将非关系型数据库中与数据库操作语句对应的操作目标对应于事务标识进行排它锁定。

s508,获取数据库操作语句针对非关系型数据库中操作目标的操作类型。

s510,当数据库操作语句针对非关系型数据库中操作目标的操作类型为新增数据操作类型时,获取数据库操作语句所指向的非关系型数据库中的待操作数据地址,并对应于事务标识进行备份,并将备份的待操作数据地址标记为第一类别。

具体地,数据库操作语句针对非关系型数据库中操作目标的操作类型为新增数据操作类型表明,数据库操作语句针对非关系型数据库中操作目标地址上数据为空,不需要进行数据备份,将备份的待操作数据地址归属于第一类别。

s512,当数据库操作语句针对非关系型数据库中操作目标的操作类型为已有数据操作类型时,在非关系型数据库中获取数据库操作语句所指向的待操作数据地址及相应的待操作数据,并对应于事务标识进行备份,并将备份的待操作数据地址标记为第二类别。

具体地,数据库操作语句针对非关系型数据库中操作目标的操作类型为已有数据操作类型表明,数据库操作语句针对非关系型数据库中操作目标地址上数据不为空,需要进行待操作数据备份,将相应备份了待操作数据的待操作数据地址归属于第二类别。

s514,当数据库操作语句针对非关系型数据库中操作目标的操作类型为写入数据操作类型,且数据库操作语句表示待写入数据由存储在非关系型数据库中的数据得到时,提取数据库操作语句指定的数据所对应的对象名和数据类型,指定的数据用于得到待写入数据;在非关系型数据库中查找数据,查找的数据在非关系型数据库中对应的字段名与提取的对象名一致;按照预设映射关系将查找到的数据映射为与提取的数据类型对应的数据;根据数据库操作语句对映射得到的数据进行处理得到待写入数据;根据待写入数据地址将待写入数据写入非关系型数据库中。

s516,当数据库操作语句针对非关系型数据库中操作目标的操作类型为写入数据操作类型,且数据库操作语句包括待写入数据时,将数据库操作语句包括的待写入数据写入非关系型数据库中。

s518,当数据库操作语句针对非关系型数据库中操作目标的操作类型为删除数据操作类型时,获取数据库操作语句包括的非关系型数据库中的目标地址,将获取的该地址中存储的数据删除。

s520,检测是否返回操作错误信息;若是,则跳转至步骤s522;若否,则跳转至步骤s528。

s522,检测对应于事务标识备份的待操作数据地址被标记的类别;若是第一类别,则跳转至步骤s524;若是第二类别,则跳转至步骤s526。

s524,将非关系型数据库中与待操作数据地址对应的数据删除,并将排他锁定解除。

s526,将非关系型数据库中与待操作数据地址对应的数据替换为相应备份的待操作数据,并将排他锁定解除。

s528,当按照事务所包括的数据库操作语句将非关系型数据库中的操作目标操作成功后,将排它锁定解除。

在本实施例中,在启动事务后且在按照数据库操作语句对非关系型数据库进行操作前,对应于事务标识,将非关系型数据库中与数据库操作语句对应的操作目标和操作类型进行备份;若在按照数据库操作语句对非关系型数据库进行操作时接收到操作错误信息,即可将备份操作目标按照相应备份的操作类型还原至非关系型数据库,并结束该事务,使得非关系型数据库中的数据恢复至事务开始前的状态,保证了数据库中数据的一致性,进而保证了数据库事务的原子性。而且,将不同操作类型对应的待操作数据地址标记,在回复时按照标记对应的备份回复方式进行恢复,提高了数据恢复的准确性。

如图6所示,在一个实施例中,提供了一种基于非关系型数据库的事务处理装置600,包括:启动模块601、读取模块602、备份模块603、操作模块604和恢复模块605。

启动模块601,用于启动事务,并获取事务携带的事务标识。

读取模块602,用于依次读取事务包括的针对非关系型数据库的数据库操作语句。

备份模块603,用于将非关系型数据库中与数据库操作语句对应的操作目标对应于事务标识进行备份。

操作模块604,用于按照数据库操作语句对非关系型数据库进行操作。

恢复模块605,用于若在按照数据库操作语句对非关系型数据库进行操作时,接收到操作错误信息,则将对应于事务标识备份的操作目标恢复至非关系型数据库,并结束事务。

上述基于非关系型数据库的事务处理装置,在启动事务后且在按照数据库操作语句对非关系型数据库进行操作前,将非关系型数据库中与数据库操作语句对应的操作目标对应于事务标识进行备份;若在按照数据库操作语句对非关系型数据库进行操作时接收到操作错误信息,即可将备份操作目标还原至非关系型数据库,并结束该事务,使得非关系型数据库中的数据恢复至事务开始前的状态,保证了数据库中数据的一致性,进而保证了数据库事务的原子性。

在一个实施例中,备份模块603还用于获取数据库操作语句针对非关系型数据库中操作目标的操作类型;采用与操作类型相匹配的备份方式,将操作目标和相应的操作类型对应于事务标识进行备份;

恢复模块605还用于采用与对应于事务标识备份的操作类型相匹配的备份恢复方式,将对应于事务标识备份的操作目标恢复至非关系型数据库,并结束事务。

在本实施例中,将需要备份的操作目标,按照与操作目标相应的操作类型匹配的备份方式进行备份,并在需要还原时按照相应的备份恢复方式进行恢复,提高了数据备份与还原的效率与准确性。

在一个实施例中,备份模块603还用于当操作类型为新增数据操作类型时,获取数据库操作语句所指向的非关系型数据库中的待操作数据地址,并对应于事务标识进行备份,并将备份的待操作数据地址标记为第一类别;当操作类型为已有数据操作类型时,在非关系型数据库中获取数据库操作语句所指向的待操作数据地址及相应的待操作数据,并对应于事务标识进行备份,并将备份的待操作数据地址标记为第二类别。

恢复模块605还用于当对应于事务标识备份的待操作数据地址被标记为第一类别时,将非关系型数据库中与待操作数据地址对应的数据删除;当对应于事务标识备份的待操作数据地址被标记为第二类别时,将非关系型数据库中与待操作数据地址对应的数据替换为相应备份的待操作数据。

在本实施例中,在启动事务后且在按照数据库操作语句对非关系型数据库进行操作前,对应于事务标识,将非关系型数据库中与数据库操作语句对应的操作目标和操作类型进行备份;若在按照数据库操作语句对非关系型数据库进行操作时接收到操作错误信息,即可将备份操作目标按照相应备份的操作类型还原至非关系型数据库,并结束该事务,使得非关系型数据库中的数据恢复至事务开始前的状态,保证了数据库中数据的一致性,进而保证了数据库事务的原子性。而且,将不同操作类型对应的待操作数据地址标记,在回复时按照标记对应的备份回复方式进行恢复,提高了数据恢复的准确性。

在一个实施例中,操作模块604还用于提取数据库操作语句指定的数据所对应的对象名和数据类型,指定的数据用于得到待写入数据;在非关系型数据库中查找数据,查找的数据在非关系型数据库中对应的字段名与提取的对象名一致;按照预设映射关系将查找到的数据映射为与提取的数据类型对应的数据;根据数据库操作语句对映射得到的数据进行处理得到待写入数据;根据待写入数据地址将待写入数据写入非关系型数据库中。

在本实施例中,通过预设映射关系将需要处理的数据的数据类型转化为数据库操作语句可处理的数据类型,避免了非关系型数据库中存储的数据的数据类型不确定使得在需要提取数据库中的数据进行处理时需要实时进行数据类型转化导致操作繁琐的问题,提高了数据库操作效率。

如图7所示,在一个实施例中,提供了一种基于非关系型数据库的事务处理装置700,包括:启动模块701、读取模块702、锁定模块703、备份模块704、操作模块705、恢复模块706和提交模块707。

启动模块701,用于启动事务,并获取事务携带的事务标识。

读取模块702,用于依次读取事务包括的针对非关系型数据库的数据库操作语句。

锁定模块703,用于将非关系型数据库中与数据库操作语句对应的操作目标对应于事务标识进行排它锁定。

备份模块704,用于将非关系型数据库中与数据库操作语句对应的操作目标对应于事务标识进行备份。

操作模块705,用于按照数据库操作语句对非关系型数据库进行操作。

恢复模块706,用于若在按照数据库操作语句对非关系型数据库进行操作时,接收到操作错误信息,则将对应于事务标识备份的操作目标恢复至非关系型数据库,并结束事务,将排它锁定解除。

提交模块707,用于当按照事务所包括的数据库操作语句将非关系型数据库中的操作目标操作成功后,将排它锁定解除。

在本实施例中,在按照数据库操作语句对非关系型数据库进行操作前,将与数据库操作语句对应的操作目标对应于事务标识进行排它锁定,其他任何事务都不能再对锁定的操作目标进行读取和修改或者进行任何类型的锁定,保证了,在事务结束后解除对操作目标的锁定,保证了其他事务的正常进行。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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