更新積分排名的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ] 本公開涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種更新積分排名的方法及裝置。
【背景技術(shù)】
[0002]在網(wǎng)絡(luò)服務(wù)的數(shù)據(jù)處理實踐中,如何利用盡可能低的開銷對海量數(shù)據(jù)的排名進行實時更新,已經(jīng)成為相關(guān)技術(shù)人員必須要解決的問題。
[0003]在相關(guān)技術(shù)中,通常使用平衡二叉樹算法對海量數(shù)據(jù)進行實時排名。比如,對平衡二叉樹的每個節(jié)點,定義其包括3個值,分別為:數(shù)據(jù)區(qū)間、個數(shù)值和指針。利用平衡二叉樹查詢該數(shù)據(jù)排名分為以下三個步驟:1、創(chuàng)建平衡二叉樹,確定每個節(jié)點的數(shù)據(jù)區(qū)間,數(shù)據(jù)區(qū)間用來表明該節(jié)點包括的數(shù)據(jù)取值范圍,例如數(shù)據(jù)區(qū)間[6,8]表示取值范圍為6,7,8三個整數(shù);2、統(tǒng)計每個節(jié)點的個數(shù)值,該個數(shù)值指節(jié)點包括的數(shù)據(jù)的個數(shù);3、查詢某個數(shù)據(jù)的排名。具體的查詢算法是對于查找路徑上的任意節(jié)點,如果數(shù)據(jù)在左節(jié)點區(qū)間,則累加右節(jié)點區(qū)間的計數(shù),最終累加計數(shù)的結(jié)果加I即是數(shù)據(jù)的名次。
[0004]然而,當(dāng)數(shù)據(jù)量增加到百萬級、千萬級或者更高數(shù)量級時,用來處理這些數(shù)據(jù)排名的平衡二叉樹會占用極高的內(nèi)存和運算資源,且需要較高的維護開銷。
【發(fā)明內(nèi)容】
[0005]為了克服相關(guān)技術(shù)中存在的問題,本公開實施例提供了一種更新積分排名的方法及裝置,所述技術(shù)方案如下:
[0006]根據(jù)本公開實施例的第一方面,提供了一種更新積分排名的方法,該方法包括:
[0007]獲取至少兩個對象的積分;
[0008]根據(jù)至少兩個對象的積分建立積分排名表,積分排名表中包含m個積分以及m個積分的排名數(shù)值,m多2,且m為整數(shù);
[0009]對于至少兩個對象中的每一個對象,當(dāng)對象的積分由s變化為t時,根據(jù)s和t確定排名變化區(qū)間,s和t是m個積分中的兩個;
[0010]對積分排名表中,處于排名變化區(qū)間內(nèi)的各個積分的排名數(shù)值進行更新。
[0011]可選地,根據(jù)至少兩個對象的積分建立積分排名表,包括:
[0012]生成由m個積分組成的積分數(shù)組,m個積分在積分數(shù)組中按照指定大小順序排列,積分數(shù)組中包括已有積分和空缺積分;已有積分是至少兩個對象的積分;空缺積分是積分數(shù)組中,除已有積分之外的其它積分;
[0013]確定已有積分的排名數(shù)值為已有積分之間的排名數(shù)值;
[0014]確定空缺積分的排名數(shù)值為空缺積分的后一個已有積分的排名數(shù)值,或者,確定空缺積分的排名數(shù)值為空缺積分的前一個已有積分的排名數(shù)值+1 ;
[0015]其中,空缺積分的后一個已有積分的排名數(shù)值為:排名比空缺積分靠后的第一個已有積分的排名數(shù)值;空缺積分的前一個已有積分的排名數(shù)值為:排名比空缺積分靠前的第一個已有積分的排名數(shù)值。
[0016]可選地,該積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成負相關(guān),當(dāng)對象的積分由s變化為t時,根據(jù)s和t確定排名變化區(qū)間,包括:
[0017]當(dāng)s小于t時,確定排名變化區(qū)間為[s,t);
[0018]對積分排名表中,處于排名變化區(qū)間內(nèi)的各個積分的排名數(shù)值進行更新,包括:
[0019]將積分排名表中,處于[s,t)區(qū)間內(nèi)的各個積分的排名數(shù)值+1。
[0020]可選地,該積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成負相關(guān),當(dāng)對象的積分由s變化為t時,根據(jù)s和t確定排名變化區(qū)間,還包括:
[0021]當(dāng)s大于t時,確定排名變化區(qū)間為[t,s);
[0022]對積分排名表中,處于排名變化區(qū)間內(nèi)的各個積分的排名數(shù)值進行更新,包括:
[0023]將積分排名表中,處于[t,s)區(qū)間內(nèi)的各個積分的排名數(shù)值-1。
[0024]可選地,該積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成負相關(guān),方法還包括:
[0025]當(dāng)至少兩個對象中新增一個積分為P的對象時,將積分排名表中,小于P的各個積分的排名數(shù)值+1,P是m個積分中的一個;
[0026]當(dāng)至少兩個對象中刪除一個積分為q的對象時,將積分排名表中,小于q的各個積分的排名數(shù)值-1,q是m個積分中的一個。
[0027]可選地,該積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成正相關(guān),當(dāng)對象的積分由s變化為t時,根據(jù)s和t確定排名變化區(qū)間,包括:
[0028]當(dāng)s小于t時,確定排名變化區(qū)間為(s,t];
[0029]對積分排名表中,處于排名變化區(qū)間內(nèi)的各個積分的排名數(shù)值進行更新,包括:
[0030]將積分排名表中,處于(s,t]區(qū)間內(nèi)的各個積分的排名數(shù)值-1。
[0031]可選地,該積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成正相關(guān),當(dāng)對象的積分由s變化為t時,根據(jù)s和t確定排名變化區(qū)間,包括:
[0032]當(dāng)s大于t時,確定排名變化區(qū)間為(t,s];
[0033]對積分排名表中,處于排名變化區(qū)間內(nèi)的各個積分的排名數(shù)值進行更新,包括:
[0034]將積分排名表中,處于(t,s]區(qū)間內(nèi)的各個積分的排名數(shù)值+1。
[0035]可選地,該積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成正相關(guān),方法還包括:
[0036]當(dāng)至少兩個對象中新增一個積分為P的對象時,將積分排名表中,大于P的各個積分的排名數(shù)值+1,P是m個積分中的一個;
[0037]當(dāng)至少兩個對象中刪除一個積分為q的對象時,將積分排名表中,大于q的各個積分的排名數(shù)值-1,q是m個積分中的一個。
[0038]根據(jù)本公開實施例的第二方面,提供了一種更新積分排名的裝置,該裝置包括:
[0039]積分獲取模塊,被設(shè)置為用于獲取至少兩個對象的積分;
[0040]排名表建立模塊,被設(shè)置為用于根據(jù)積分獲取模塊獲取到的至少兩個對象的積分建立積分排名表,積分排名表中包含m個積分以及m個積分的排名數(shù)值,m多2,且m為整數(shù);
[0041]區(qū)間確定模塊,被配置為對于至少兩個對象中的每一個對象,當(dāng)對象的積分由s變化為t時,根據(jù)s和t確定排名變化區(qū)間,s和t是m個積分中的兩個;
[0042]第一更新模塊,被配置為對積分排名表中,處于區(qū)間確定模塊確定的排名變化區(qū)間內(nèi)的各個積分的排名數(shù)值進行更新。
[0043]可選地,排名表建立模塊,包括:
[0044]數(shù)組生成子模塊,被配置為生成由m個積分組成的積分數(shù)組,m個積分在積分數(shù)組中按照指定大小順序排列,積分數(shù)組中包括已有積分和空缺積分;已有積分是至少兩個對象的積分;空缺積分是積分數(shù)組中,除已有積分之外的其它積分;
[0045]第一數(shù)值確定子模塊,被配置為確定已有積分的排名數(shù)值為已有積分之間的排名數(shù)值;
[0046]第二數(shù)值確定子模塊,被配置為確定空缺積分的排名數(shù)值為空缺積分的后一個已有積分的排名數(shù)值,或者,確定空缺積分的排名數(shù)值為空缺積分的前一個已有積分的排名數(shù)值+1 ;
[0047]其中,空缺積分的后一個已有積分的排名數(shù)值為:排名比空缺積分靠后的第一個已有積分的排名數(shù)值;空缺積分的前一個已有積分的排名數(shù)值為:排名比空缺積分靠前的第一個已有積分的排名數(shù)值。
[0048]可選地,積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成負相關(guān),區(qū)間確定豐吳塊,包括:
[0049]第一區(qū)間確定子模塊,被配置為當(dāng)s小于t時,確定排名變化區(qū)間為[s,t);
[0050]第一更新模塊,包括:
[0051]第一更新子模塊,被配置為將積分排名表中,處于第一區(qū)間確定子模塊確定的[S,t)區(qū)間內(nèi)的各個積分的排名數(shù)值+1。
[0052]可選地,積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成負相關(guān),區(qū)間確定豐吳塊,包括:
[0053]第二區(qū)間確定子模塊,被配置為當(dāng)s大于t時,確定排名變化區(qū)間為[t,s);
[0054]第一更新模塊,包括:
[0055]第二更新子模塊,被配置為將積分排名表中,處于第二區(qū)間確定子模塊確定的[t,s)區(qū)間內(nèi)的各個積分的排名數(shù)值-1。
[0056]可選地,該裝置還包括:
[0057]第二更新模塊,被配置為當(dāng)積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成負相關(guān),且至少兩個對象中新增一個積分為P的對象時,將積分排名表中,小于P的各個積分的排名數(shù)值+1,P是m個積分中的一個;
[0058]第三更新模塊,被配置為當(dāng)積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成負相關(guān),且至少兩個對象中刪除一個積分為q的對象時,將積分排名表中,小于q的各個積分的排名數(shù)值-1,q是m個積分中的一個。
[0059]可選地,積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成正相關(guān),區(qū)間確定豐吳塊,包括:
[0060]第三區(qū)間確定子模塊,被配置為當(dāng)s小于t時,確定排名變化區(qū)間為(s,t];
[0061]第一更新模塊,包括:
[0062]第三更新子模塊,被配置為將積分排名表中,處于第三區(qū)間確定子模塊確定的(S,t]區(qū)間內(nèi)的各個積分的排名數(shù)值-1。
[0063]可選地,積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成正相關(guān),區(qū)間確定豐吳塊,包括:
[0064]第四區(qū)間確定子模塊,被配置為當(dāng)s大于t時,確定排名變化區(qū)間為(t,s];
[0065]第一更新模塊,包括:
[0066]第四更新子模塊,被配置為將積分排名表中,處于第四區(qū)間確定子模塊確定的(t,s]區(qū)間內(nèi)的各個積分的排名數(shù)值+1。
[0067]可選地,該裝置還包括:
[0068]第四更新模塊,被配置為當(dāng)積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成正相關(guān),且至少兩個對象中新增一個積分為P的對象時,將積分排名表中,大于P的各個積分的排名數(shù)值+1,P是m個積分中的一個;
[0069]第五更新模塊,被配置為當(dāng)積分排名表的排名規(guī)則為:積分數(shù)值與積分排名數(shù)值成正相關(guān),且至少兩個對象中刪除一個積分為q的對象時,將積分排名表中,大于q的各個積分的排名數(shù)值-1,q是m個積分中的一個。
[0070]根據(jù)本公開實施例的第三方面,提供了一種更新積分排名的裝置,該裝置包括:
[0071]處理器;
[0072]被配置為存儲處理器的可執(zhí)行指令的存儲器;
[0073]其中,處理器被配置為:
[0074]獲取至少兩個對象的積分;
[0075]根據(jù)至少兩個對象的積分建立積分排名表,積分排名表中包含m個積分以及m個