掌桥专利:专业的专利平台
掌桥专利
首页

一种数据库更新方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 12:10:19


一种数据库更新方法、装置、电子设备及存储介质

技术领域

本申请涉及数据库技术领域,尤其是涉及一种数据库更新方法、装置、电子设备及存储介质。

背景技术

数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。在数据库系统中如何识别和规避数据异常已成为一个关键性问题。目前,识别数据异常的方法有两种,一种是利用封锁技术,该方法依赖锁的互斥机制来避免数据异常,另一种是利用版本号匹配方法,该方法是将用户提交修改时的版本号与当前版本号进行比较,只有在两者相互匹配的情况下,才允许用户提交更新,以此来避免数据异常。

然而,封锁技术严重限制了数据库系统的并发度,会导致事务处理效率低下,而采用版本号匹配方法会导致在事务并发时,提交事务处理请求的成功率低下的问题。

发明内容

有鉴于此,本申请提供一种数据库更新方法、装置、电子设备及存储介质,其目的是解决在更新数据库时,因事务并发而导致的数值型数据的数据异常问题。

第一方面,本申请实施例提供了一种数据库更新方法,包括:

接收目标事务,目标事务用于指示针对目标数据库中的目标数据项的数值更新操作;

确定数值更新操作的参数,并基于数值更新操作的参数,生成数值更新操作语句,其中,参数包括目标数据项的字段值和针对目标数据项的修改值;

运行数值更新操作语句,并将运行数值更新操作语句时目标数据项的实时值作为目标数据项的字段值,以完成对目标数据项的数值更新。

可选地,目标数据项可为目标数据库中的数值类型的数据项。

可选地,基于数值更新操作的参数,生成数值更新操作语句的步骤可包括:确定针对目标数据项的数值约束条件;基于数值更新操作的参数和数值约束条件,生成数值更新操作语句。

可选地,参数还可包括目标数据项的字段名称、目标数据项所属表的表名、目标数据项在表中的行号;其中,可通过以下方式生成数值更新操作语句:确定数值更新操作的更新语句模板;将数值更新操作的参数绑定到更新语句模板中,并将数值约束条件添加到更新语句模板中,以生成数值更新操作语句。

可选地,目标数据项可包括多个子数据项,目标事务包括多个子事务,每个子事务用于指示针对子数据项的数值更新子操作;其中,可通过以下方式生成数值更新操作语句:针对每个子数据项,基于数值更新子操作的参数,生成针对该子数据项的数值更新语句单元;将所生成的多个数值更新语句单元,添加到预设的更新语句模板中,生成数值更新操作语句。

可选地,将所生成的多个数值更新语句单元,添加到预设的更新语句模板中,生成数值更新操作语句的步骤可包括:将所生成的多个数值更新语句单元,按照逻辑与的逻辑关系添加到预设的更新语句模板中,生成数值更新操作语句。

第二方面,本申请实施例提供了一种数据库更新装置,包括:

接收模块,用于接收目标事务,目标事务用于指示针对目标数据库中的目标数据项的数值更新操作;

确定模块,用于确定数值更新操作的参数,并基于数值更新操作的参数,生成数值更新操作语句,其中,参数包括目标数据项的字段值和针对目标数据项的修改值;

运行模块,用于运行数值更新操作语句,并将运行数值更新操作语句时目标数据项的实时值作为目标数据项的字段值,以完成对目标数据项的数值更新。

可选地,确定模块还具体用于:确定针对目标数据项的数值约束条件;基于数值更新操作的参数和数值约束条件,生成数值更新操作语句。

第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述的数据库更新方法的步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述的数据库更新方法的步骤。

本申请实施例带来了以下有益效果:

本申请实施例提供了一种数据库更新方法,包括:接收目标事务,目标事务用于指示针对目标数据库中的目标数据项的数值更新操作;确定数值更新操作的参数,并基于数值更新操作的参数,生成数值更新操作语句,其中,参数包括目标数据项的字段值和针对目标数据项的修改值;运行数值更新操作语句,并将运行数值更新操作语句时目标数据项的实时值作为目标数据项的字段值,以完成对目标数据项的数值更新。本申请通过在运行数值更新操作语句时调用目标数据项的实时值,即,在执行目标事务最后进行更新时调用目标数据项的实时值,能够避免因事务并发而导致的数值型数据的数据异常问题,并且无需通过版本号或锁等处理方式进行处理,简化了对开发技术的要求,提升了事务处理效率以及事务请求的成功率。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

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

图1为现有技术中事务并发处理方式的流程示意图;

图2为本申请实施例提供的数据库更新方法的流程示意图;

图3为本申请实施例提供的数据库更新方法与现有的事务并发处理方式的对比示意图;

图4为本申请实施例提供的数据库更新装置的结构示意图;

图5为本申请实施例提供的电子设备的结构示意图。

具体实施方式

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

现有技术中,在对数据库进行更新时,一旦发生事务并发,就容易导致数据异常的问题,这通常是因为采用了传统的逻辑执行方式造成的。图1为现有技术中事务并发处理方式的流程示意图,如图1所示,事务A即采用了传统逻辑:查询数据值→修改数据→插入数据库,在事务A执行的过程中由于需要执行多个步骤,而多个步骤之间又会耗费一定的处理时间,在这个处理时间内,如果事务B也对同一目标数据项进行修改,则会导致数据异常的问题。在图1所示的示例中,事务A所要执行的任务是将目标数据项减1,但是事务B在事务A执行的过程中,直接将目标数据项的数值改为8。这里,正常的处理结果应该是事务A将8减1后得到7,但实际结果却是事务A将事务B的修改结果覆盖,导致数据异常。

在解决上述因事务并发导致的数据异常时,一种方式是:在一个事务A对某个数据对象进行操作时,系统会自动为该数据对象添加相应的锁,这样当事务B对该数据对象进行访问时就会受到限制,不允许事务B对上述数据对象进行操作。而当事务A操作结束后,系统会自动释放所添加的锁,这样就避免了数据异常的发生。

另一种方式是:在对数据库进行事务处理时,每次修改都会生成一个版本号,每提交一次对数据库的事务处理,版本号就会提升一次。例如:当前版本号是A,事务甲和事务乙均对版本号为A的数据库进行修改,如果事务甲在事务乙之前提交,则当前版本号变为A+1,当事务乙提交时,系统确定事务乙处理的数据库所对应的版本号为A,这与当前版本号A+1不匹配,因此,拒绝事务乙的提交请求,以此来避免因事务并发,带来的数据异常情况的发生。

无论采用上述哪种避免数据异常的方式,都会产生其他的问题。第一种方式的问题是:会严重限制数据库系统的并发度,这将导致事务处理效率低下的问题;第二种方式的问题是:会导致在事务并发时,提交事务处理请求的成功率较低的问题。

基于此,本申请实施例提供一种数据库更新方法、装置、电子设备及存储介质,能够基于目标数据项所在的字段名称及行号,确定目标数据项的实时值,使得事务所进行的更新操作都是对目标数据项的实时值进行的,以此解决了在更新数据库时,因事务并发而导致的数值型数据的数据异常问题。

为便于对本实施例进行理解,首先对本申请实施例所公开的一种数据库更新方法进行详细介绍,图2为本申请实施例提供的数据库更新方法的流程示意图,如图2所示,该方法包括如下步骤:

步骤101,接收目标事务。这里,目标事务用于指示针对目标数据库中的目标数据项的数值更新操作。

具体的,目标事务可由其他部门或工作人员发出,事务处理人在接收到目标事务后,将基于目标事务针对目标数据库中的目标数据项进行相应的数值更新操作。其中,目标数据项为目标数据库中的数值类型的数据项,数值更新操作是对目标数据项中的数据进行修改。需要指出,目标数据项包括多个子数据项,目标事务包括多个子事务,每个子事务用于指示针对子数据项的数值更新子操作。

图3为本申请实施例提供的数据库更新方法与现有的事务并发处理方式的对比示意图,如图3所示,该示例中目标事务为对目标数据库中某商品的库存数量进行修改,修改的方式是将该商品的库存(sum)的数量减少10个。其中,该目标数据项所属表的表名为A、目标数据项在表中的行号为1、目标数据项的字段名称为sum、目标数据项的字段值为100。

步骤102,确定数值更新操作的参数,并基于数值更新操作的参数,生成数值更新操作语句。其中,参数包括目标数据项的字段值和针对目标数据项的修改值。

具体的,接收到目标事务后,即可根据目标事务的具体内容,确定数值更新操作的参数。这里,所确定的数值更新操作的参数包括但不限于:目标数据项的字段值、针对目标数据项的修改值、目标数据项的字段名称、目标数据项所属表的表名、目标数据项在表中的行号。其中,目标数据项的字段值指的是目标事务在数据库中所要修改的数值,针对目标数据项的修改值指的是对目标数据项中的数值进行修改时所使用的具体数值,目标数据项的字段名称指的是目标数据项所属表中所属字段的字段名称,目标数据项在表中的行号指的是目标数据项在所属表中所属行的行序号。在确定了数值更新操作的参数后,即可基于所确定的参数生成数值更新操作语句,该数值更新操作语句是用于操作数据库的结构化查询语言。需要指出,目标数据项在表中的行号可由与目标数据项处于同行的其他字段的字段值来确定,例如:目标数据项与所在表中的item_id字段的数值10处于同行,则可通过如下语句确定目标数据项的行号where item_id=10。所确定的数值更新操作的参数可以是一个或多个,本领域技术人员可以根据具体事务确定数值更新操作的参数数量及参数值,本申请在此不做限定。

以上述图3所示示例为例,目标事务所要执行的任务是对目标数据库中某商品的库存数量进行修改,修改的方式是将该商品的库存数量减少10个。可以理解的,数值更新操作的参数为:目标数据项的字段值为100、针对目标数据项的修改值为10、目标数据项的字段名称为sum、目标数据项所属表的表名为A、目标数据项在表中的行号为1。

这里,基于数值更新操作的参数,生成数值更新操作语句的步骤可包括:确定针对目标数据项的数值约束条件,基于数值更新操作的参数和数值约束条件,生成数值更新操作语句。其中,可通过以下方式生成数值更新操作语句:确定数值更新操作的更新语句模板,将数值更新操作的参数绑定到更新语句模板中,并将数值约束条件添加到更新语句模板中,以生成数值更新操作语句。更新语句模板是针对数值更新操作所设定的语句模板,该更新语句模板包括1条结构化查询语言(Structured Query Language,sql),该条sql语句用于实现更新功能。

具体的,在确定了数值更新操作的各个参数后,还可确定针对目标数据项的数值约束条件。其中,数值约束条件指的是目标数据项经过数值更新操作后需要满足的条件。在图3所示的示例中,对目标数据项的约束条件是数值大于10。在确定各个参数以及数值约束条件后,即可将上述参数绑定到更新语句模板中,生成数值更新操作语句。可以理解的,更新语句模板的样式为update Aset(针对目标数据项的操作语句)and(约束条件)。

在一优选示例中,在目标数据项为多个子数据项,目标事务为多个子事务时,可通过以下方式生成数值更新操作语句:针对每个子数据项,基于数值更新子操作的参数,生成针对该子数据项的数值更新语句单元,并将所生成的多个数值更新语句单元,添加到预设的更新语句模板中,生成数值更新操作语句。其中,将所生成的多个数值更新语句单元,添加到预设的更新语句模板中,生成数值更新操作语句的步骤可包括:将所生成的多个数值更新语句单元,按照逻辑与的逻辑关系添加到预设的更新语句模板中,生成数值更新操作语句。

这里,同样以图3所示示例为例,假设,多个子数据项均在同一数据表中,且对应的字段名称除sum外还包括price、cost,多个子事务还包括价格增加20、成本减少5,并且多个子数据项均处于同一行,该行可通过字段名称为id,字段值为1的数据项确定。那么,多个针对子数据项的数值更新语句单元为sum=sum-10where id=1、price=price+20where id=1以及cost=cost-5where id=1。于是,将上述多个数值更新语句单元按照逻辑与的逻辑关系添加到预设的更新语句模板中,即可生成如下数值更新操作语句:update Aset sum=sum-10and price=price+20and cost=cost-5where id=1and sum>10。

步骤103,运行数值更新操作语句,并将运行数值更新操作语句时目标数据项的实时值作为目标数据项的字段值,以完成对目标数据项的数值更新。

具体的,在运行生成的数值更新操作语句时,由于使用字段名称来表示目标数据项的字段值,因此,在运行数值更新操作语句时,能够获取到目标数据项的实时值,并利用该实时值完成对目标数据项的数值更新。

以图3所示的实施例为例,可使用字段名称sum来获取运行数值更新操作时的目标数据项的实时值,这样即使在提交当前事务之前有其他事务对该目标数据项进行了更新,但当前事务仍能够获取最新的目标数据项中的数值,并对该最新的目标数据项中的数值进行数值更新操作,从而避免了因事务并发而导致的数据异常问题。

由上述示例可知,传统的数据库更新方式由于并非针对目标数据项中的实时值进行修改,而是需要先执行读取表数据,然后再通过计算来确定要更新的具体数值(如图3中,在传统方式下,计算得到的结果90即是这里所说的具体数值),并使用该具体数值更新表数据。但从读取表数据到更新表数据的过程中,目标数据项中的数值可能已经改变,因此,容易发生数据异常的问题。而本申请在对目标数据项进行数值更新操作时,是使用目标数据项中的实时值进行更新的,并且与传统方式相比,省去了读取表数据和计算过程两个步骤,因而,能够避免因事务并发而导致的数据异常问题。

基于同一发明构思,本申请实施例中还提供了与数据库更新方法对应的数据库更新装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述数据库更新方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

图4为本申请实施例提供的数据库更新装置的结构示意图,如图4所示,该装置包括以下模块:

接收模块401,用于接收目标事务,目标事务用于指示针对目标数据库中的目标数据项的数值更新操作;

确定模块402,用于确定数值更新操作的参数,并基于数值更新操作的参数,生成数值更新操作语句,其中,参数包括目标数据项的字段值和针对目标数据项的修改值;

运行模块403,用于运行数值更新操作语句,并将运行数值更新操作语句时目标数据项的实时值作为目标数据项的字段值,以完成对目标数据项的数值更新。

对应于图1中的数据库更新方法,本申请实施例还提供了一种电子设备500的结构示意图,如图5所示,所述电子设备500包括处理器510、存储器520和总线530。所述存储器520存储有所述处理器510可执行的机器可读指令,当电子设备500运行时,所述处理器510与所述存储器520之间通过总线530通信,所述机器可读指令被所述处理器510执行时,能够执行上述数据库更新方法,通过采用将目标图像截图与预设图像进行直接匹配的方式来完成用户界面测试,使得每次版本更新或迭代后,不需要对测试脚本进行重新调试,解决了测试脚本编写复杂,以及测试脚本维护成本高的问题,提高了用户界面的测试效率。

对应于图1中的数据库更新方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述数据库更新方法的步骤。

具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述数据库更新方法,通过采用将目标图像截图与预设图像进行直接匹配的方式来完成用户界面测试,使得每次版本更新或迭代后,不需要对测试脚本进行重新调试,解决了测试脚本编写复杂,以及测试脚本维护成本高的问题,提高了用户界面的测试效率。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,可以参考上述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

相关技术
  • 一种数据库更新方法、装置、电子设备及存储介质
  • 滑动轨迹数据库的更新方法、装置、存储介质及电子设备
技术分类

06120113195514