一种业务处理方法和装置与流程

文档序号:11276372阅读:225来源:国知局
一种业务处理方法和装置与流程

本申请涉及网络技术,特别涉及一种业务处理方法和装置。



背景技术:

随着网络技术的发展,利用互联网搭建产品销售平台的业务也越来越多。当一个产品在网上平台销售时,用户可以通过下单付款来购买该产品。伴随着产品的销售,平台需要进行产品库存的管理,例如,随着产品的售出,对应的产品库存将减少。可能出现的一种问题是,同一时刻出现多人下单的大并发访问,此时可能出现重复扣减库存。为了防止出现该问题,相关技术中可以使用数据库锁以防止重复操作。而数据库锁的方式,对于多订单同时锁定资源只能逐笔处理,容易导致并发线程过多,资源消耗大幅上升,严重时将导致系统崩溃。因此,数据库锁的方式使得库存管理的效率低且不可靠。



技术实现要素:

有鉴于此,本申请提供一种业务处理方法和装置,以提高业务处理的效率和可靠性。

具体地,本申请是通过如下技术方案实现的:

第一方面,提供一种业务处理方法,所述业务处理方法用于对数据库中的产品数据进行更新;所述方法包括:

启动对应本次更新操作的数据库事务,在产品数据更新流水表中创建与本次更新操作对应的唯一索引,并在所述产品数据更新流水表中,执行与所述唯一索引对应的更新流水记录的插入操作,所述更新流水记录用于记录本 次更新操作的更新信息;

若根据所述唯一索引,插入所述更新流水记录成功,则更新所述产品数据,并在所述数据库事务成功执行时,完成对所述产品数据的更新。

第二方面,提供一种业务处理装置,包括:

索引创建模块,用于启动对应本次更新操作的数据库事务,在产品数据更新流水表中创建与本次更新操作对应的唯一索引,并在所述产品数据更新流水表中,执行与所述唯一索引对应的更新流水记录的插入操作,所述更新流水记录用于记录本次更新操作的更新信息;

事务处理模块,用于在根据所述唯一索引,插入所述更新流水记录成功时,则更新所述产品数据,并在所述数据库事务成功执行时,完成对所述产品数据的更新。

本申请提供的业务处理方法和装置,通过采用唯一索引来控制多个用户下单的并发访问情况下的防止重复操作,可以允许并行处理多个订单的业务访问,只要每个访问的处理都根据唯一索引来判断是否重复即可,唯一索引可以保证对于一个订单的一个类型的数据更新操作是唯一的,可以防止出现重复的更新操作,由于这种方式允许业务的并行处理,所以可以加快业务处理的效率;并且,也正是由于并行处理业务,可以避免出现资源消耗过度而引起的系统崩溃,提高可靠性。

附图说明

图1是本申请一示例性实施例示出的一种产品数据更新应用场景图;

图2是本申请一示例性实施例示出的一种业务处理方法的流程图;

图3是本申请一示例性实施例示出的一种库存数据更新的流程图;

图4是本申请一示例性实施例示出的一种库存管理流程图;

图5是本申请一示例性实施例示出的一种业务处理装置的结构示意图;

图6是本申请一示例性实施例示出的一种业务处理装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

随着互联网技术的发展,产品的网络销售平台也随之建立。例如,商家可以在网络销售平台销售自己的产品,用户可以通过下单付款来购买该产品;并且伴随着产品的销售,对产品的库存数据进行管理,以清晰准确的掌握所销售产品的库存情况。本申请实施例的业务处理方法,即可以应用于对产品的库存数据的更新。如图1所示,用户11可以通过终端12的显示屏,浏览终端12上展示的多种在售产品,并可以下单购买。后台的服务端13可以根据产品的销售情况,更新该产品的库存数据,比如,当某种产品售出一件后,对应该产品的库存数量就减去一。

在本申请的例子中,所要更新的产品的库存数据可以包括多种类型的数据,例如,在售库存、已售库存、冻结库存等,其中,在售库存可以是当前销售的产品可以供给用户进行购买的总库存;已售库存可以是产品已经售出的总库存,该已售库存是用户已经购买且已经付款成功的产品,冻结库存是将用户已经买下但尚未付款的库存冻结起来,暂时不再提供给其他用户购买。其他例子不再详举,在具体实施中,可以根据业务特点设置所需要的不同类型的库存数据。

本申请实施例的业务处理方法,将用于解决同一时刻多人对产品下单的这种并发执行的情况中,如何对数据库中的产品数据进行更新,以避免出现重复扣减库存,并且旨在提高库存管理的效率。图2示例了本申请实施例的业务处理方法的流程图,该方法可以包括:

在步骤201中,在更新数据库中的产品数据之前,启动对应本次更新操 作的数据库事务,在对应本次更新操作的产品数据更新流水表中,创建与本次更新操作对应的唯一索引,并在该更新流水表执行与唯一索引对应的更新流水记录的插入操作,该更新流水记录用于记录本次更新操作的更新信息。

本例子中,可以通过唯一索引来控制对数据库中的产品数据进行更新,在该产品销售的例子中,产品数据可以是产品的库存数据。例如,结合图1的示例,服务端13可以根据用户11在终端12侧的产品购买操作,对后台的该产品库存数据进行更新,比如,在用户下单并正常付款后,此时产品已经实际售出,进行扣减库存,或者当用户未付款成功后,返还库存,将所返还的库存对应的产品重新提供给用户进行购买。例如,在图1所示的数据库中可以存储产品数据表,该产品数据表中可以存储各个产品的库存数据,该库存数据可以包括根据实际业务特点制定的多种类型的用于记录库存的数据。

如上所述的,数据库中的产品数据表中,可以包括多种类型的库存数据,比如在售库存、已售库存等,而不论是对何种类型的库存数据进行更新,本步骤可以在更新之前创建对应本次更新操作的唯一索引。唯一索引是一种不允许具有索引值相同的记录的索引,禁止重复的索引出现,根据该唯一索引的特点,可以用于控制对同一订单的同一类型的库存更新(该同一类型的库存更新即对某一种类型的库存数据进行更新),只能成功执行一次,以避免重复更新。一个唯一索引可以表示一次库存操作,该库存操作可以是对应某一订单的某一类型的库存更新,例如,该唯一索引可以包括:业务标识和对产品数据的更新操作类型。其中,业务标识,可以是用户下单购买某个产品时的订单id,而对产品数据的更新操作类型,可以是对库存数据的更新操作类型,比如,对库存进行冻结操作等。

在一个例子中,对应本次更新操作的唯一索引,可以创建在产品数据更新流水表中,参见图1的示例,在该流水表中对应该唯一索引,还插入更新流水记录,该更新流水记录主要用于记录本次数据更新操作的更新信息,例如,在已售库存增加了多少库存数量等。

本实施例中,可以启动数据库事务来执行数据更新,在启动数据库事务 后,可以执行包括在流水表中新建一个对应本次更新操作的唯一索引,例如,订单id+冻结库存,并且在流水表中插入更新流水记录;该数据库事务还包括在插入更新流水记录成功时,对图1所示的产品数据表中的库存数据进行更新,例如更改在售库存的数量。当上述的任务都成功执行时,该数据库事务成功提交,否则,其中任一任务失败,整个数据库事务回滚。

在步骤202中,如果根据唯一索引,插入更新流水记录成功,也就是说本次更新操作的唯一索引在流水表中是唯一的,比如上述的唯一索引“订单id+冻结库存”,经比较发现该唯一索引在流水表中唯一,即对于该id的订单进行冻结库存的更新操作只有本次操作,不存在重复操作,则成功插入本次更新操作的更新流水记录。并且,可以依据更新流水记录,对产品数据表中的库存数据进行对应更新,完成对产品数据的更新。否则,如果由于多种原因导致数据库事务执行失败,则事务回滚,在产品数据表中不执行本次更新流水记录中的更新操作。

在图1所示的例子中,可以通过产品数据更新流水表来控制对产品数据表中的数据更新,例如,通过在产品数据更新流水表创建唯一索引,以保证每次对产品库存的更新都是唯一的一次操作,比如,对于一个订单的一次操作类型的库存更新(如,冻结库存),不会出现重复的两次操作。又例如,通过以数据库事务的方式执行唯一索引对应的更新流水记录,可以保证只在事务成功执行时才更新产品数据表中的库存数据,不会出现事务失败时对产品数据表的部分更新。

本例子的业务处理方法,通过采用唯一索引来控制多个用户下单的并发访问情况下的防止重复操作,相对于数据库锁的控制方式来说,数据库锁的方式对于多订单只能逐笔处理,效率比较低,处理速度慢,使得资源的消耗较大,而本例子的使用唯一索引进行控制的方式,可以允许并行处理多个订单的业务访问,只要每个访问的处理都根据唯一索引来判断是否重复即可,唯一索引可以保证对于一个订单的一个类型的数据更新操作是唯一的,可以防止出现重复的更新操作,由于这种方式允许业务的并行处理,所以可以加 快业务处理的效率;并且,也正是由于并行处理业务,可以避免出现资源消耗过度而引起的系统崩溃,提高可靠性。

如下示例一种对产品库存更新的逻辑流程:

图3示例了一种库存数据更新的流程,例如,用户11在终端12由产品销售平台下单购买产品时,可以触发服务端13执行本流程,以根据产品的销售情况,及时更新数据库中的产品库存数据。如图3所示,该流程可以包括:

在步骤301中,启动数据库事务。

在步骤302中,可以在产品数据更新流水表中创建一个唯一索引,在本库存管理的例子中,产品数据更新流水表也可以命名为产品库存流水表。本例子中,在产品库存流水表中新建的唯一索引是对应本次库存数据更新的操作,可以包括:订单id和操作类型。其中的订单id可以是用户在终端12侧下单的订单标识,操作类型例如可以是:冻结库存。该唯一索引表示本次产品数据更新是对应该订单id的所述操作类型的的更新操作。

在步骤303中,对应唯一索引,可以在产品库存流水表中插入一条更新流水记录,该记录用于记录本次库存数据更新的处理。

在步骤304中,根据唯一索引判断插入更新流水记录是否成功。例如,可以查找产品库存流水表中是否存在相同的唯一索引,即订单id和操作类型都相同的索引。

如果存在,表示重复操作,则插入更新流水记录失败,数据库事务回滚,本次库存更新失败,并且撤销插入的唯一索引,服务端还可以提示用户,流程结束,参见步骤305至307。

如果产品库存流水表中不存在相同的唯一索引,则成功插入更新流水记录。并可以继续进行产品库存数据的更新处理,在处理时,可以依据业务条件判断本次更新操作是否能够成功执行,比如,当要冻结库存时,在售库存的数量减去要冻结的库存数量之后,剩余的在售库存需要大于或等于要求的最小库存量;否则,表示不符合业务条件,不能冻结库存。如果满足业务条件,则对产品数据表中的库存数据进行更新,数据库事务提交,库存数据更 新结束,服务端可以提示用户购买成功,跳转至支付页面。如果条件不满足,则事务回滚,库存数据更新失败。参见步骤308至311。

此外,在对产品库存更新中,还可能出现的情况是,具体要执行何种类型的数据更新操作,需要根据关联的业务处理结果来确定。比如,在用户购买下单之后,用户对该订单进行付款,根据用户付款的不同结果,可以执行不同的库存更新操作。例如,如果用户付款成功,表示该产品已经售出,那需要从当前的已售库存中增加已销售的库存数量,如果使用到上面提到的冻结库存的应用,可以是从冻结库存中减小所销售的库存数量;如果用户付款失败,那需要将冻结库存中对应该用户购买的库存数量重新增加到在售库存中。因此,不同的业务处理结果,执行的对该产品的库存数据的更新操作可能不同,当产品的库存数据包括多种类型的库存数据时,不同的业务处理结果可以导致需要对不同类型的库存数据进行更新。

参见图4所示,仍以用户购买商品的例子来说,可以判断用户是否成功付款,在库存管理的例子中,用户付款成功与否,是库存数据更新操作的关联业务处理结果,根据该结果,可以确定本次更新操作,是对已售库存更新,还是对在售库存更新。比如,当用户成功付款时,那就是要增加已售库存的数量,当用户付款失败时,就要将冻结的那部分库存重新增加进在售库存中,以重新销售。

此外,不论是增加在售库存或者是增加已售库存,都可以设定为一个独立的库存数据更新流程。比如,用户付款成功时,要执行已售库存的增加流程,通过该流程可以对数据库的产品数据表中的已售库存进行数据更新,这种情况下所记录的更新流水记录是对已售库存的更新记录,并且,该更新流水记录对应的唯一索引仍然是“订单id和操作类型”,只是操作类型对应的是对已售库存增加的操作类型。

又比如,用户付款失败时,要执行在售库存的增加流程,通过该流程可以对数据库的产品数据表中的在售库存进行数据更新(当然该流程中也可以涉及到关联的其他类型库存数据的更新),这种情况下所记录的更新流水记 录是对在售库存的更新记录,并且,该更新流水记录对应的唯一索引“订单id和操作类型”,其中的操作类型对应的是对在售库存增加的操作类型。

上面提到的根据用户是否成功付款,所确定的不同的库存数据更新流程,其中的流程操作步骤与图3所示的流程类似,不再详述。比如,在流程中同样也要在产品库存流水表中创建本次更新操作的唯一索引,并对应该唯一索引插入更新流水记录。如果更新流水记录插入成功,则表示本次操作是唯一的,不存在重复操作;否则,如果插入失败,表示存储重复的更新操作,数据库事务可以回滚,拒绝本次更新。

本申请还提供了一种业务处理装置,以实现上述的业务处理方法,如图5所示,该装置可以包括:索引创建模块51和事务处理模块52。

索引创建模块51,用于启动对应本次更新操作的数据库事务,在产品数据更新流水表中创建与本次更新操作对应的唯一索引,并在所述产品数据更新流水表中,执行与所述唯一索引对应的更新流水记录的插入操作,所述更新流水记录用于记录本次更新操作的更新信息;

事务处理模块52,用于在根据所述唯一索引,插入所述更新流水记录成功时,则更新所述产品数据,并在所述数据库事务成功执行时,完成对所述产品数据的更新。

在一个例子中,所述数据库中的产品数据,包括:数据库中的产品的库存数据。

在一个例子中,参见图6所示,索引创建模块51可以包括:创建单元511和记录单元512。

创建单元511,用于在产品数据更新流水表中,新建对应本次更新操作的唯一索引,插入对应本次更新操作的更新流水记录;

记录单元512,用于判断所述产品数据更新流水表中,是否存在相同的所述唯一索引;若存在相同的唯一索引,则插入所述更新流水记录失败,数据库事务回滚,结束本次更新操作;否则,插入所述更新流水记录成功。

在一个例子中,记录单元512,还用于获取本次更新操作的关联业务处 理结果,确定与所述关联业务处理结果对应的本次更新操作。

在一个例子中,所述唯一索引,包括:业务标识和对产品数据的更新操作类型。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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