數(shù)據(jù)庫(kù)數(shù)值扣減方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫(kù)數(shù)值扣減方法及系統(tǒng)。
【背景技術(shù)】
[0002]數(shù)據(jù)庫(kù)數(shù)值扣減,指對(duì)于數(shù)據(jù)庫(kù)中某個(gè)變量的數(shù)值進(jìn)行扣減,例如保存支付數(shù)據(jù)的數(shù)據(jù)庫(kù),對(duì)賬戶的余額進(jìn)行扣減,其中賬戶在數(shù)據(jù)庫(kù)中以變量表示,余額即變量的數(shù)值,又例如,保存用戶手機(jī)話費(fèi)數(shù)據(jù)的數(shù)據(jù)庫(kù),對(duì)用戶手機(jī)賬戶的話費(fèi)進(jìn)行扣減,其中用戶手機(jī)賬戶即用戶的手機(jī)號(hào),用戶的手機(jī)號(hào)在數(shù)據(jù)庫(kù)中以變量表示,話費(fèi)即變量的數(shù)值。對(duì)數(shù)據(jù)庫(kù)數(shù)值進(jìn)行扣減,有一種代替扣減模式,指經(jīng)用戶授權(quán)后,由服務(wù)器作為中轉(zhuǎn)環(huán)節(jié),不經(jīng)用戶自己操作,其他終端或平臺(tái)通過(guò)服務(wù)器從變量的數(shù)值中扣減一定的數(shù)值,例如對(duì)于支付數(shù)據(jù)庫(kù),銀行的扣款平臺(tái)通過(guò)支付數(shù)據(jù)庫(kù)所在的服務(wù)器在設(shè)定好的時(shí)間內(nèi)從用戶的賬戶扣除款額,或者對(duì)于話費(fèi)數(shù)據(jù)庫(kù),市政公司的繳費(fèi)平臺(tái)通過(guò)話費(fèi)數(shù)據(jù)庫(kù)所在的服務(wù)器定期從用戶手機(jī)賬戶中扣除水電費(fèi)等。
[0003]在數(shù)據(jù)庫(kù)數(shù)值的代替扣減模式中,其他終端或平臺(tái)向數(shù)據(jù)庫(kù)所在的服務(wù)器發(fā)起扣減請(qǐng)求后,服務(wù)器根據(jù)扣減請(qǐng)求生成扣減記錄單,并從變量數(shù)值中減去相應(yīng)的扣減值,當(dāng)變量數(shù)值大于扣減值時(shí),扣減成功,扣減記錄單成功完成。但當(dāng)變量數(shù)值小于扣減值,扣減失敗時(shí),通常服務(wù)器的處理,是根據(jù)扣減請(qǐng)求對(duì)變量數(shù)值定期發(fā)起重試扣減,例如每30min或60min對(duì)變量數(shù)值進(jìn)行一次扣減,如果變量中的數(shù)值增加,一次重試扣減成功后,則停止再次發(fā)起重試扣減,扣減記錄單完成,否則,重試扣減將不斷進(jìn)行。
[0004]然而,通常服務(wù)器每天都有大量的由于變量數(shù)值不足導(dǎo)致扣減失敗的扣減記錄單,對(duì)每個(gè)扣減失敗的扣減記錄單,服務(wù)器都會(huì)不斷發(fā)起重試扣減,例如,服務(wù)器每天有70萬(wàn)個(gè)扣減失敗的扣減記錄單,對(duì)每個(gè)扣減記錄單,平均發(fā)起5次的重試扣減,則每天將有350萬(wàn)次重試扣減,對(duì)于服務(wù)器而言,這樣的重試扣減方式將會(huì)占據(jù)大量系統(tǒng)資源和網(wǎng)絡(luò)資源,影響服務(wù)器的處理速度和性能。另一方面,由于重試扣減定期執(zhí)行,當(dāng)在一次重試扣減失敗之后,變量的數(shù)值增加了,但在下一次重試扣減之前,如果變量的數(shù)值被服務(wù)器扣減用于其他用途,導(dǎo)致變量的數(shù)值又不足以完成下一次重試扣減,則下一次重試扣減仍會(huì)失敗,因此定期重試扣減的方式扣減成功率低,使重試扣減的次數(shù)難以減少,進(jìn)一步加大系統(tǒng)資源和網(wǎng)絡(luò)資源的耗費(fèi)。
【發(fā)明內(nèi)容】
[0005]為克服相關(guān)技術(shù)中變量數(shù)值重試扣減系統(tǒng)資源和網(wǎng)絡(luò)資源耗費(fèi)高的問(wèn)題,本申請(qǐng)?zhí)峁┮环N數(shù)據(jù)庫(kù)數(shù)值扣減方法及系統(tǒng)。
[0006]根據(jù)本申請(qǐng)實(shí)施例的第一方面,提供一種數(shù)據(jù)庫(kù)數(shù)值扣減方法,包括:
[0007]服務(wù)器接收扣減請(qǐng)求,根據(jù)所述扣減請(qǐng)求生成扣減記錄單,并判斷所述扣減請(qǐng)求對(duì)應(yīng)的變量的數(shù)值是否大于所述扣減請(qǐng)求中的扣減值;
[0008]當(dāng)所述變量的數(shù)值小于所述扣減請(qǐng)求中的扣減值時(shí),將所述扣減記錄單標(biāo)記為失??;
[0009]監(jiān)聽(tīng)所述變量的數(shù)值是否增加;
[0010]當(dāng)所述變量的數(shù)值增加時(shí),對(duì)標(biāo)記為失敗的扣減記錄單進(jìn)行重試扣減。
[0011]可選的,所述當(dāng)所述變量的數(shù)值增加時(shí),對(duì)標(biāo)記為失敗的扣減記錄單進(jìn)行重試扣減,包括:
[0012]步驟al,判斷當(dāng)前進(jìn)行重試扣減的扣減記錄單的扣減值是否小于或等于所述變量的數(shù)值;
[0013]步驟a2,當(dāng)當(dāng)前進(jìn)行重試扣減的扣減記錄單的扣減值小于或等于所述變量的數(shù)值時(shí),完成當(dāng)前進(jìn)行重試扣減的扣減記錄單,將當(dāng)前進(jìn)行重試扣減的扣減記錄單的標(biāo)記更改為成功;
[0014]步驟a3,判斷是否存在下一條標(biāo)記為失敗的扣減記錄單,
[0015]步驟a4,如果存在下一條標(biāo)記為失敗的扣減記錄單,將下一條標(biāo)記為失敗的扣減記錄單作為當(dāng)前進(jìn)行重試扣減的扣減記錄單,并返回步驟al,否則,結(jié)束重試扣減。
[0016]可選的,所述當(dāng)所述變量的數(shù)值增加時(shí),對(duì)標(biāo)記為失敗的扣減記錄單進(jìn)行重試扣減,包括:
[0017]步驟bl,依次計(jì)算所述變量的數(shù)值和標(biāo)記為失敗的扣減記錄單的扣減值的差值;
[0018]步驟b2,判斷所述差值是否全部小于O ;
[0019]步驟b3,如果所述差值全部小于0,停止重試扣減,否則,
[0020]如果存在大于或等于O的差值,選取大于或等于O且最小的差值,完成所述差值對(duì)應(yīng)的標(biāo)記為失敗的扣減記錄單,將完成的標(biāo)記為失敗的扣減記錄單的標(biāo)記更改為成功,并返回步驟bl。
[0021]可選的,所述當(dāng)所述變量的數(shù)值增加時(shí),對(duì)標(biāo)記為失敗的扣減記錄單進(jìn)行重試扣減,包括:
[0022]步驟Cl,依次計(jì)算所述變量的數(shù)值減去標(biāo)記為失敗的扣減記錄單的扣減值的差值;
[0023]步驟c2,判斷所述差值是否全部小于O ;
[0024]步驟c3,如果所述差值全部小于0,停止重試扣減,否則
[0025]如果存在大于或等于O的差值,選取大于或等于O且最小的一個(gè)差值,完成所述差值對(duì)應(yīng)的標(biāo)記為失敗的扣減記錄單,將完成的標(biāo)記為失敗的扣減記錄單的標(biāo)記更改為成功;
[0026]步驟c4,依次計(jì)算所述變量的數(shù)值減去余下的大于或等于O的差值對(duì)應(yīng)的扣減記錄單對(duì)應(yīng)的扣減值,得到新差值;
[0027]步驟c5,判斷所述新差值是否全部小于O ;
[0028]步驟c6,如果所述新差值全部小于0,停止重試扣減,否則,
[0029]如果存在大于或等于O的新差值,選取大于或等于O且最小的一個(gè)新差值,完成所述新差值對(duì)應(yīng)的標(biāo)記為失敗的扣減記錄單,將完成的標(biāo)記為失敗的扣減記錄單的標(biāo)記更改為成功,并返回步驟c4。
[0030]可選的,所述的數(shù)據(jù)庫(kù)數(shù)值扣減方法,其特征在于,還包括:
[0031]當(dāng)所述變量的數(shù)值小于所述扣減請(qǐng)求中的扣減值時(shí),將所述變量標(biāo)記為欠值;
[0032]監(jiān)聽(tīng)標(biāo)記為欠值的變量的數(shù)值是否增加,當(dāng)所述標(biāo)記為欠值的變量的數(shù)值增加時(shí),依次對(duì)標(biāo)記為失敗的扣減記錄單重試扣減;
[0033]當(dāng)標(biāo)記為失敗的扣減記錄單全部重試扣減成功時(shí),刪除所述變量的欠值標(biāo)記。
[0034]相應(yīng)于本申請(qǐng)實(shí)施例的第一方面,根據(jù)本申請(qǐng)實(shí)施例的第二方面,提供一種數(shù)據(jù)庫(kù)數(shù)值扣減系統(tǒng),包括:
[0035]扣減請(qǐng)求接收單元,用于接收扣減請(qǐng)求;
[0036]扣減記錄單生成單元,用于根據(jù)所述扣減請(qǐng)求生成扣減記錄單;
[0037]判斷單元,用于判斷所述扣減請(qǐng)求對(duì)應(yīng)的變量的數(shù)值是否大于所述扣減請(qǐng)求中的扣減值;
[0038]扣減記錄單標(biāo)記單元,用于當(dāng)所述變量的數(shù)值小于所述扣減請(qǐng)求中的扣減值時(shí),將所述扣減記錄單標(biāo)記為失??;
[0039]監(jiān)聽(tīng)單元,用于監(jiān)聽(tīng)所述變量的數(shù)值是否增加;
[0040]重試扣減單元,用于當(dāng)所述變量的數(shù)值增加時(shí),對(duì)標(biāo)記為失敗的扣減記錄單進(jìn)行重試扣減。
[0041]可選的,所述重試扣減單元,包括:
[0042]第一判斷子單元,用于判斷當(dāng)前進(jìn)行重試扣減的扣減記錄單的扣減值是否小于或等于所述變量的數(shù)值;
[0043]第一執(zhí)行子單元,用于當(dāng)當(dāng)前進(jìn)行重試扣減的扣減記錄單的扣減值小于或等于所述變量的數(shù)值時(shí),完成當(dāng)前進(jìn)行重試扣減的扣減記錄單,并將完成的所述扣減記錄單的標(biāo)記更改為成功;
[0044]第二判斷子單元,用于判斷是否存在下一條標(biāo)記為失敗的扣減記錄單;
[0045]第二執(zhí)行子單元,用于如果存在下一條標(biāo)記為失敗的扣減記錄單,將下一條標(biāo)記為失敗的扣減記錄單作為當(dāng)前進(jìn)行重試扣減的扣減記錄單,并返回所述第一判斷子單元,否則,結(jié)束重試扣減。
[0046]可選的,所述重試扣減單元,包括:
[0047]差值計(jì)算子單元,用于依次計(jì)算所述變量的數(shù)值和標(biāo)記為失敗的扣減記錄單的扣減值的差值;
[0048]第三判斷子單元,用于判斷所述差值是否全部小于O ;
[0049]第三執(zhí)行子單元,用于如果所述差值全部小于0,停止重試扣減,否則,
[0050]如果存在大于或等于O的差值,選取大于或等于O且最小的差值,完成所述差值對(duì)應(yīng)的標(biāo)記為失敗的扣減記錄單,將完成的標(biāo)記為失敗的扣減記錄單的標(biāo)記更改為成功,并返