对象管理方法

文档序号:8922657阅读:486来源:国知局
对象管理方法
【技术领域】
[0001]本发明的实施例涉及对象管理,具体涉及基于最后使用用户信息对对象的剩余数进行扣减的方法和装置。
【背景技术】
[0002]在对象管理领域中,当用户请求对象时需要扣减对象的剩余数,并且当用户取消请求时需要还原对象的剩余数。为了顺利实现对象的调整,在现有技术中,提出了两种方案,涉及将对象相关参数存储在一张表或者一个缓存中,当需要调整对象时对相关字段或属性进行修改。具体地,在第一种方案中,将对象的标识和剩余数作为一条记录存储在数据库表中,每当用户请求对象时,首先根据对象标识查询并判断剩余数是否足够扣减,然后再更新剩余数;当用户取消请求时,根据对象标识还原剩余数。在第二种方案中,将对象标识、对象总数、已用总数作为一条记录存储在数据库表中,每当用户请求对象时,首先根据对象标识查询并判断对象总数与已用总数之差是否足够扣减,然后再更新已用总数;当用户取消请求时,根据对象标识还原已用总数。
[0003]然而,第一种方案和第二种方案都存在可能导致剩余数为负(即,已用总数超过对象总数或者称作对象超额扣减)的问题。第一种方案是在扣减剩余数时判断剩余数是否大于或等于请求数,第二种方案是判断已用总数与请求数之和是否小于或等于对象总数。但是,两个方案都存在一个共同的问题,即当同时存在还原剩余数和扣减剩余数的情况时,可能出现对象超额扣减和剩余部分对象但用户无法请求使用的情况。
[0004]例如,当对象的剩余数为20、线程A的请求数为15、并且线程B的请求数为10时,可能出现以下几种情况:剩余数为5 (线程A扣减成功,然后线程B判断剩余数不够因此扣减失败);剩余数为10(线程B扣减成功,然后线程A判断剩余数不够因此扣减失败);以及剩余数为-5 (线程A判断剩余数足够扣减,线程B判断剩余数足够扣减,然后线程A和线程B分别进行对象扣减)。此外,如果此时出现线程C还原剩余数,则情况会更加复杂。
[0005]为了解决可能出现的对象超额扣减的问题,在现有技术中提出了通过增加一个字段进行逐次轮训的方法。在该方法中,先查询剩余数,然后逐个线程进行对象扣减。在该方法中,可能需要更新多次数据库,即,对数据库进行多次写操作。然而,这种方式性能较低且资源消耗较大。
[0006]因此,在对象管理中,当同时存在多个用户请求对象及取消请求时,由于并发导致扣减和还原剩余数时出现对象超额扣减的概率很高,使得用户在请求对象之后被告知没有对象的情况的出现。为了解决对象超额扣减和剩余部分对象但用户无法请求使用的问题,需要提出一种简单实用的方式来杜绝对象超额扣减的出现以及充分利用剩余对象,从而实现较高的对象管理效率同时消耗较少的资源。

【发明内容】

[0007]鉴于现有技术中的一个或多个问题,提出了一种用于对用户请求的对象的剩余数进行扣减的方法和装置,能够解决现有技术中存在对象超额扣减和剩余部分对象但用户无法请求的问题。
[0008]在本发明的一个方面,提出了一种用于对用户请求的对象的剩余数进行扣减的方法,所述方法包括:
[0009]根据所述对象的标识从数据库表中获取对象总数、已用总数和最后使用用户信息;
[0010]如果所述对象总数与所述已用总数之差delta大于0,则将所述已用总数更新为已用总数与所述用户的请求数η之和,并且使用所述用户的标识和所述用户请求对象的时间戳来更新所述最后使用用户信息;
[0011]根据所述对象的标识和更新后的最后使用用户信息从所述数据库表中查询更新后的已用总数;以及
[0012]如果查询到更新后的已用总数并且更新后的已用总数与所述对象总数之差m大于0,则将所述数据库表中的已用总数更新为已用总数与m之差,并且向所述用户返回请求成功消息,所述请求成功消息包含指示所述用户的请求数为n-m的信息。
[0013]优选地,在根据所述对象的标识从数据库表中获取对象总数、已用总数和最后使用用户信息之前,所述方法还包括:
[0014]创建数据库表,所述数据库表包括标识、对象总数、已用总数、以及最后使用用户信息。
[0015]优选地,所述方法还包括:如果delta小于或等于0,则不进行对象扣减,并且向所述用户返回请求失败消息。
[0016]优选地,所述方法还包括:如果未查询到更新后的已用总数,则不更新所述数据库表,并且向所述用户返回请求成功消息,所述请求成功消息包含指示所述用户的请求数为η的信息。
[0017]优选地,所述方法还包括:如果m小于或等于0,则不更新所述数据库表,并且向所述用户返回请求成功消息,所述请求成功消息包含指示所述用户的请求数为η的信息。
[0018]优选地,所述最后使用用户信息包括最后使用用户标识和最后使用用户请求对象的时间戳。
[0019]优选地,根据所述对象的标识从数据库表中获取对象总数、已用总数和最后使用用户信息包括:
[0020]从所述数据库表中查询与所述对象的标识相同的标识,并且根据查询到的标识从所述数据库表中获取与所述对象相对应的对象总数、已用总数、以及最后使用用户信息。
[0021]在本发明的另一个方面,提出了一种用于对用户请求的对象的剩余数进行扣减的装置,所述装置包括:
[0022]用于根据所述对象的标识从数据库表中获取对象总数、已用总数和最后使用用户信息的模块;
[0023]用于如果所述对象总数与所述已用总数之差delta大于0,则将所述已用总数更新为已用总数与所述用户的请求数η之和,并且使用所述用户的标识和所述用户请求对象的时间戳来更新所述最后使用用户信息的模块;
[0024]用于根据所述对象的标识和更新后的最后使用用户信息从所述数据库表中查询更新后的已用总数的模块;以及
[0025]用于如果查询到更新后的已用总数并且更新后的已用总数与所述对象总数之差m大于0,则将所述数据库表中的已用总数更新为已用总数与m之差,并且向所述用户返回请求成功消息的模块,所述请求成功消息包含指示所述用户的请求数为n-m的信息。
[0026]优选地,所述装置还包括:
[0027]用于创建数据库表的模块,所述数据库表包括标识、对象总数、已用总数、以及最后使用用户信息。
[0028]优选地,所述装置还包括:
[0029]用于如果delta小于或等于0,则不进行对象扣减,并且向所述用户返回请求失败消息的t吴块。
[0030]优选地,所述装置还包括:
[0031]用于如果未查询到更新后的已用总数,则不更新所述数据库表,并且向所述用户返回请求成功消息的模块,所述请求成功消息包含指示所述用户的请求数为η的信息。
[0032]优选地,所述装置还包括:
[0033]用于如果m小于或等于0,则不更新所述数据库表,并且向所述用户返回请求成功消息的模块,所述请求成功消息包含指示所述用户的请求数为η的信息。
[0034]优选地,所述最后使用用户信息包括最后使用用户标识和最后使用用户请求对象的时间戳。
[0035]优选地,用于根据所述对象的标识从数据库表中获取对象总数、已用总数和最后使用用户信息的模块包括:
[0036]用于从所述数据库表中查询与所述对象的标识相同的标识,并且根据查询到的标识从所述数据库表中获取与所述对象相对应的对象总数、已用总数、以及最后使用用户信息的t吴块。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1