亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種實時新增數(shù)據(jù)更新方法和裝置與流程

文檔序號:11133937閱讀:386來源:國知局
一種實時新增數(shù)據(jù)更新方法和裝置與制造工藝

本申請涉及互聯(lián)網(wǎng)領(lǐng)域,尤其涉及一種基于大數(shù)據(jù)的實時新增數(shù)據(jù)更新方法和裝置。



背景技術(shù):

在大數(shù)據(jù)時代,隨著各種數(shù)據(jù)的快速積累,對數(shù)據(jù)的有效搜集、存儲和利用已經(jīng)成為互聯(lián)網(wǎng)企業(yè)獲取商業(yè)優(yōu)勢的重要環(huán)節(jié)。

對大數(shù)據(jù)的利用存在多種形式,其中一種主要的需求是從各類數(shù)據(jù)中抽取出數(shù)據(jù)利用者關(guān)注維度的數(shù)據(jù)元素,形成新的更精簡的數(shù)據(jù)記錄。

例如,在移動互聯(lián)網(wǎng)領(lǐng)域,移動應(yīng)用供應(yīng)商發(fā)布一個新的應(yīng)用或?qū)?yīng)用進(jìn)行渠道活動推廣后,需要持續(xù)關(guān)注新增用戶和新增移動設(shè)備數(shù)量,尤其是實時新增用戶和實時新增移動設(shè)備數(shù)量,通過上述數(shù)據(jù)能夠預(yù)估應(yīng)用在一段時間內(nèi)可能的突發(fā)流量、推廣度以及推廣度的實時性等指標(biāo),進(jìn)而幫助移動應(yīng)用供應(yīng)商確保應(yīng)用的正常使用,及時判斷所做推廣活動的價值,以及對推廣結(jié)算做出衡量。在上述場景中,移動應(yīng)用供應(yīng)商獲取的原始數(shù)據(jù)是來自各個設(shè)備和各個用戶的下載、登錄以及訪問數(shù)據(jù),這些數(shù)據(jù)中包含大量的數(shù)據(jù)元素,但是移動應(yīng)用供應(yīng)商只希望根據(jù)這些數(shù)據(jù)判斷產(chǎn)生這些數(shù)據(jù)的用戶或者設(shè)備是否屬于新增用戶或者新增移動設(shè)備,并對新增用戶或新增移動設(shè)備這些新增指標(biāo)進(jìn)行統(tǒng)計。

所謂新增用戶和新增移動設(shè)備,是指歷史上從未使用過該應(yīng)用的用戶或移動設(shè)備;對某個用戶或者某個移動設(shè)備是否屬于“新增用戶”或者“新增移動設(shè)備”,需要根據(jù)已存儲的歷史數(shù)據(jù)進(jìn)行判斷。

目前,隨著應(yīng)用數(shù)量越來越多且每種應(yīng)用的用戶量的量級越來越大,歷史用戶和歷史設(shè)備以及已存儲的各種歷史數(shù)據(jù)數(shù)量往往會達(dá)到上億條記錄,海量的歷史信息通常存儲在文件系統(tǒng)中,移動應(yīng)用供應(yīng)商若要對獲得的實時數(shù)據(jù)信息進(jìn)行實時評判其是否為新增,需要使用服務(wù)器全量加載文件系統(tǒng)中的全部歷史數(shù)據(jù)到內(nèi)存中進(jìn)行檢索判斷,才能夠保證新增判斷的實時性和準(zhǔn)確性。另外,在同一時刻會有大量的實時數(shù)據(jù)到來,有時多達(dá)千萬條,目前通常采用分布式集群服務(wù)器并行對大量的實時數(shù)據(jù)進(jìn)行計算,所使用的集群服務(wù)器的集群規(guī)模 往往較大。因此,在這種基于大數(shù)據(jù)且又要保證實時性的背景下,集群中每臺服務(wù)器并發(fā)初始化全量加載文件系統(tǒng)中的歷史數(shù)據(jù)到各自的內(nèi)存時,會有以下問題:

1、并發(fā)加載對存儲全部歷史數(shù)據(jù)的文件系統(tǒng)帶來很大的性能壓力,也對單臺服務(wù)器的內(nèi)存帶來壓力,導(dǎo)致對文件系統(tǒng)性能和對單臺服務(wù)器性能有很高的要求。

2、全量加載的時間很長,并且會導(dǎo)致實時計算的延遲、資源被長期占據(jù)的問題,造成實時性差和資源浪費。

3、不具備擴展性。



技術(shù)實現(xiàn)要素:

本申請?zhí)峁┮环N實時新增數(shù)據(jù)更新方法和裝置,以解決現(xiàn)有的基于大數(shù)據(jù)背景下實時更新方法對物理設(shè)備性能要求高、計算實時性差、資源占有率高和不具備擴展性的問題。

為解決上述技術(shù)問題,本申請?zhí)峁┑膶崟r新增數(shù)據(jù)更新方法,包括:

獲取實時新增數(shù)據(jù),所述實時新增數(shù)據(jù)包括不同維度的數(shù)據(jù)元素;

根據(jù)預(yù)先確定的指標(biāo)因子算法,獲取對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例;該指標(biāo)因子實例由所述實時新增數(shù)據(jù)的被關(guān)注維度下的數(shù)據(jù)元素的具體數(shù)值組成,所述被關(guān)注維度稱為指標(biāo)因子;

基于預(yù)先設(shè)置的分桶存儲策略,把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中;

讀取被所述指標(biāo)因子實例定位的分桶,以所述指標(biāo)因子實例為依據(jù)從所述分桶中檢索,判斷所述分桶的現(xiàn)有數(shù)據(jù)中是否包含相同的指標(biāo)因子實例;

若判斷結(jié)果為是,則不對分桶數(shù)據(jù)進(jìn)行處理;

若判斷結(jié)果為否,則該指標(biāo)因子實例為新增,在所述被定位的分桶中加入對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例。

優(yōu)選的,所述指標(biāo)因子算法包括:

維度分配邏輯,該邏輯根據(jù)所述實時新增數(shù)據(jù)的具體內(nèi)容,對所述實時新增數(shù)據(jù)的被關(guān)注維度進(jìn)行分配;

指標(biāo)因子實例生成算法,該算法根據(jù)所述被關(guān)注維度,從所述實時新增數(shù) 據(jù)中獲取各個被關(guān)注維度的數(shù)據(jù)元素的取值,并將這些取值組合,形成所述指標(biāo)因子實例。

優(yōu)選的,所述維度分配邏輯是直接指定固定的預(yù)設(shè)維度。

可選的,所述維度分配邏輯包括一個待匹配集合,所述待匹配集合包含了不同場合下由不同維度信息組成的不同指標(biāo)因子子集,并且由不同場合下的實時新增數(shù)據(jù)與所述待匹配集合按預(yù)定的規(guī)則進(jìn)行匹配,獲取對應(yīng)的指標(biāo)因子子集,并根據(jù)該指標(biāo)因子子集獲取該具體的實時新增數(shù)據(jù)的被關(guān)注維度。

優(yōu)選的,所述根據(jù)所述被關(guān)注維度,從所述實時新增數(shù)據(jù)中獲取各個被關(guān)注維度的數(shù)據(jù)元素的取值,并將這些取值組合,形成所述指標(biāo)因子實例,其具體步驟為:

根據(jù)各個所述被關(guān)注維度,讀取所述實時新增數(shù)據(jù)對應(yīng)該被關(guān)注維度的取值;

將所獲得的該實時新增數(shù)據(jù)的各個被關(guān)注維度取值進(jìn)行字符拼接,由拼接后的字符構(gòu)成對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例,所述拼接后的字符能夠在所述分桶存儲策略中直接進(jìn)行運算。

可選的,所述分桶存儲策略包括Hash桶算法,該算法包括以下步驟:

獲取實時新增數(shù)據(jù)到來前已存在的歷史數(shù)據(jù);

根據(jù)所述歷史數(shù)據(jù)的信息量為所述分桶存儲策略設(shè)置合理的桶數(shù)N,每個所述分桶為Hash桶,所述Hash桶存儲容量的最大閾值能夠通過所述桶數(shù)N進(jìn)行調(diào)節(jié);

為每一個所述Hash桶分配一個桶號;

根據(jù)所述指標(biāo)因子實例分別獲取與每個所述指標(biāo)因子實例對應(yīng)的能夠直接進(jìn)行運算的變量;

對所述變量采用Hash算法得到散列的Hash值,每個所述Hash值均能夠唯一的歸屬到所述Hash桶的某個桶號;根據(jù)所述桶號,即可以將每個所述指標(biāo)因子實例定位到其相應(yīng)的分桶中。

優(yōu)選的,所述指標(biāo)因子實例以分桶形式存儲在指標(biāo)因子歷史累積池中,所述指標(biāo)因子歷史累計池獲得方式如下:

獲取實時新增數(shù)據(jù)到來前已存在的歷史數(shù)據(jù);

對所述歷史數(shù)據(jù)的每個數(shù)據(jù)通過所述指標(biāo)因子算法分別獲取所述每個歷史數(shù)據(jù)的指標(biāo)因子實例;

基于所述預(yù)先設(shè)置的分桶存儲策略,把所述歷史數(shù)據(jù)的所述指標(biāo)因子實例定位到其相應(yīng)的分桶,并將屬于不同分桶的指標(biāo)因子實例存儲到不同的分桶中;每一個分桶分配有一個桶號,從而建立分桶存儲的指標(biāo)因子歷史累積池。

優(yōu)選的,所述分桶存儲的指標(biāo)因子歷史累積池具體是存儲在分布式文件系統(tǒng)中,由分布式集群服務(wù)器共享所述分布式文件系統(tǒng)。

優(yōu)選的,在同一時刻能夠獲取一個或多個所述實時新增數(shù)據(jù),根據(jù)所述實時新增數(shù)據(jù)形成指標(biāo)因子實例后,所述指標(biāo)因子實例被分發(fā)至所述分布式集群服務(wù)器的各服務(wù)器上,通過各服務(wù)器把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中,各服務(wù)器從所述分布式文件系統(tǒng)中存儲的指標(biāo)因子歷史累積池中讀取被所述指標(biāo)因子實例定位的分桶,并由該服務(wù)器完成后續(xù)的判斷以及加入新的指標(biāo)因子實例的工作,各服務(wù)器的處理是并行處理。

優(yōu)選的,所述所述指標(biāo)因子實例被分發(fā)至所述分布式集群服務(wù)器的各服務(wù)器上,該分發(fā)過程依據(jù)預(yù)定的指標(biāo)因子實例分發(fā)算法實現(xiàn),包括以下步驟:

根據(jù)所述指標(biāo)因子實例中各個被關(guān)注維度的數(shù)據(jù)元素的取值,按照預(yù)定的算法計算所述指標(biāo)因子實例對應(yīng)的服務(wù)器的編號;所述算法能夠使各服務(wù)器的負(fù)載均衡;

將所述指標(biāo)因子實例分發(fā)到所述集群服務(wù)器的所述對應(yīng)的服務(wù)器上。

可選的,所述根據(jù)所述指標(biāo)因子實例中各個被關(guān)注維度的數(shù)據(jù)元素的取值,按照預(yù)定的算法計算所述指標(biāo)因子實例對應(yīng)的服務(wù)器的編號,采用如下方法實現(xiàn):

對所述分布式集群服務(wù)器的各個服務(wù)器進(jìn)行編號;

根據(jù)所述指標(biāo)因子實例各個被關(guān)注維度的數(shù)據(jù)元素的取值得到與其對應(yīng)的能夠直接進(jìn)行運算的變量;

對所述變量用md5算法得到十六進(jìn)制的數(shù)據(jù)后,使用該數(shù)據(jù)對所述分布式集群服務(wù)器的服務(wù)器數(shù)量進(jìn)行取模運算,得到所述服務(wù)器的編號;或者,對所述變量采用ASCII碼換算得到二進(jìn)制的數(shù)據(jù)后,使用該數(shù)據(jù)對所述分布式集群服務(wù)器的服務(wù)器數(shù)量進(jìn)行取模運算,得到所述服務(wù)器的編號。

優(yōu)選的,所述根據(jù)所述指標(biāo)因子實例中各個被關(guān)注維度的數(shù)據(jù)元素的取值, 按照預(yù)定的算法計算所述指標(biāo)因子實例對應(yīng)的服務(wù)器的編號,采用如下方法實現(xiàn):

對所述分布式集群服務(wù)器的各個服務(wù)器進(jìn)行編號;

將所述分桶的桶號均勻映射到所述分布式集群服務(wù)器的各個服務(wù)器上;

根據(jù)所述指標(biāo)因子實例各個被關(guān)注維度的數(shù)據(jù)元素的取值得到與其對應(yīng)的能夠直接進(jìn)行運算的變量;

根據(jù)所述變量,按所述分桶存儲策略獲取所述指標(biāo)因子實例所屬分桶的桶號;

根據(jù)所述桶號與所述服務(wù)器的映射關(guān)系,獲得所述指標(biāo)因子實例對應(yīng)的服務(wù)器的編號。

優(yōu)選的,所述把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中這一過程,在完成所述指標(biāo)因子實例被分發(fā)至所述分布式集群服務(wù)器的各服務(wù)器上的步驟后,所述通過各服務(wù)器把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中的步驟具體以下述方式執(zhí)行:

所述分布式集群服務(wù)器的各服務(wù)器根據(jù)分發(fā)來的指標(biāo)因子實例,按所述分桶存儲策略計算所述指標(biāo)因子實例所屬分桶的桶號,將所述桶號作為查找各服務(wù)器上分發(fā)來的所述指標(biāo)因子實例對應(yīng)分桶的特征值。

可選的,所述各服務(wù)器從所述分布式文件系統(tǒng)中存儲的指標(biāo)因子歷史累積池中讀取被所述指標(biāo)因子實例定位的分桶,是由各個服務(wù)器根據(jù)被分配的指標(biāo)因子實例所屬分桶的桶號,從分布式文件系統(tǒng)中存儲的指標(biāo)因子歷史累積池中查找相應(yīng)的分桶并讀取分桶中的數(shù)據(jù),具體以下述方式執(zhí)行:

根據(jù)所述指標(biāo)因子實例所屬分桶的桶號,判斷當(dāng)前服務(wù)器是否已讀取所述桶號對應(yīng)的分桶,若判斷結(jié)果為是,則直接使用已經(jīng)讀取的分桶數(shù)據(jù),若判斷結(jié)果為否,則進(jìn)入下一步;

根據(jù)所述桶號,在所述指標(biāo)因子歷史累積池中檢索所述桶號對應(yīng)的分桶;

判斷所述分桶是否存在,若判斷結(jié)果為是,則進(jìn)入下一步,若判斷結(jié)果為否,則為所述指標(biāo)因子實例建立新的分桶,該分桶數(shù)據(jù)為空,并進(jìn)入下一步;

將所述分桶數(shù)據(jù)加載到所述指標(biāo)因子實例被分發(fā)的服務(wù)器的內(nèi)存中;

判斷所述分桶是否加載到所述服務(wù)器的內(nèi)存中,若判斷結(jié)果為是,則在所 述服務(wù)器的內(nèi)存中執(zhí)行所述以所述指標(biāo)因子實例為依據(jù)從所述分桶中檢索,判斷所述分桶的現(xiàn)有數(shù)據(jù)中是否包含相同的指標(biāo)因子實例的步驟。

可選的,所述在所述被定位的分桶中加入對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例,包括以下步驟:

將所述指標(biāo)因子實例更新到所述被分發(fā)的服務(wù)器內(nèi)存中存儲的所述桶號對應(yīng)的分桶中;

在指標(biāo)因子歷史累積池中,將該指標(biāo)因子實例更新到該桶號所對應(yīng)的分桶中,使所述指標(biāo)因子歷史累積池同步到最新數(shù)據(jù);

更新新增數(shù)據(jù)指標(biāo)統(tǒng)計表,所述新增數(shù)據(jù)指標(biāo)統(tǒng)計表包括對新增用戶數(shù)量和新增移動設(shè)備數(shù)量的統(tǒng)計。

相應(yīng)的,本申請還提供一種實時新增數(shù)據(jù)更新裝置,包括:

實時新增數(shù)據(jù)獲取單元,用于獲取實時新增數(shù)據(jù),所述實時新增數(shù)據(jù)包括不同維度的數(shù)據(jù)元素;

指標(biāo)因子實例獲取單元,用于根據(jù)預(yù)先確定的指標(biāo)因子算法,獲取對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例;該指標(biāo)因子實例由所述實時新增數(shù)據(jù)的被關(guān)注維度下的數(shù)據(jù)元素的具體數(shù)值組成,所述被關(guān)注維度稱為指標(biāo)因子;

指標(biāo)因子實例定位單元,用于基于預(yù)先設(shè)置的分桶存儲策略,把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中;

新增實時判斷單元,用于讀取被所述指標(biāo)因子實例定位的分桶,以所述指標(biāo)因子實例為依據(jù)從所述分桶中檢索,判斷所述分桶的現(xiàn)有數(shù)據(jù)中是否包含相同的指標(biāo)因子實例;

指標(biāo)因子歷史累積池更新單元,用于根據(jù)指標(biāo)因子實例新增實時判斷子單元的判斷結(jié)果進(jìn)行相應(yīng)的更新處理,若判斷結(jié)果為是,則不對分桶數(shù)據(jù)進(jìn)行處理;若判斷結(jié)果為否,則該指標(biāo)因子實例為新增,在所述被定位的分桶中加入對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例。

優(yōu)選的,所述指標(biāo)因子實例獲取單元包括:

維度分配邏輯子單元,用于根據(jù)所述實時新增數(shù)據(jù)的具體內(nèi)容,對所述實時新增數(shù)據(jù)的被關(guān)注維度進(jìn)行分配;

指標(biāo)因子實例生成子單元,用于根據(jù)所述被關(guān)注維度,從所述實時新增數(shù) 據(jù)中獲取各個被關(guān)注維度的數(shù)據(jù)元素的取值,并將這些取值組合,形成所述指標(biāo)因子實例。

可選的,包括分桶存儲算法單元,所述分桶存儲算法單元包括:

歷史數(shù)據(jù)獲取子單元,用于獲取實時新增數(shù)據(jù)到來前已存在的歷史數(shù)據(jù);

桶數(shù)設(shè)置子單元,用于根據(jù)所述歷史數(shù)據(jù)的信息量為所述分桶存儲策略設(shè)置合理的桶數(shù)N,每個所述分桶為Hash桶,所述Hash桶存儲容量的最大閾值能夠通過所述桶數(shù)N進(jìn)行調(diào)節(jié);

桶號分配子單元,用于為每一個所述Hash桶分配一個桶號;

指標(biāo)因子實例預(yù)處理子單元,用于根據(jù)所述指標(biāo)因子實例分別獲取與每個所述指標(biāo)因子實例對應(yīng)的能夠直接進(jìn)行運算的變量;

分桶子單元,用于對所述變量采用Hash算法得到散列的Hash值,每個所述Hash值均能夠歸屬到所述Hash桶的某個桶號;根據(jù)所述桶號,即可以將每個所述指標(biāo)因子實例定位到其相應(yīng)的分桶中。

優(yōu)選的,包括指標(biāo)因子歷史累積池形成單元,所述指標(biāo)因子歷史累積池形成單元包括:

歷史數(shù)據(jù)獲取子單元,用于獲取實時新增數(shù)據(jù)到來前已存在的歷史數(shù)據(jù);

指標(biāo)因子實例子單元,用于對所述歷史數(shù)據(jù)的每個數(shù)據(jù)通過所述指標(biāo)因子算法分別獲取所述每個歷史數(shù)據(jù)的指標(biāo)因子實例;

指標(biāo)因子歷史累積池建立子單元,用于基于所述預(yù)先設(shè)置的分桶存儲策略,把所述歷史數(shù)據(jù)的所述指標(biāo)因子實例定位到其相應(yīng)的分桶,并將屬于不同分桶的指標(biāo)因子實例存儲到不同的分桶中;每一個分桶分配有一個桶號,從而建立分桶存儲的指標(biāo)因子歷史累積池。

相應(yīng)的,本申請還提供一種電子設(shè)備,包括:

顯示器;

處理器;以及

存儲器,所述存儲器被配置成存儲實時新增數(shù)據(jù)更新裝置,所述實時新增數(shù)據(jù)更新裝置被所述處理器執(zhí)行時,執(zhí)行如下步驟:

獲取實時新增數(shù)據(jù),所述實時新增數(shù)據(jù)包括不同維度的數(shù)據(jù)元素;

根據(jù)預(yù)先確定的指標(biāo)因子算法,獲取對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實 例;該指標(biāo)因子實例由所述實時新增數(shù)據(jù)的被關(guān)注維度下的數(shù)據(jù)元素的具體數(shù)值組成,所述被關(guān)注維度稱為指標(biāo)因子;

基于預(yù)先設(shè)置的分桶存儲策略,把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中;

讀取被所述指標(biāo)因子實例定位的分桶,以所述指標(biāo)因子實例為依據(jù)從所述分桶中檢索,判斷所述分桶的現(xiàn)有數(shù)據(jù)中是否包含相同的指標(biāo)因子實例;

若判斷結(jié)果為是,則不對分桶數(shù)據(jù)進(jìn)行處理;

若判斷結(jié)果為否,則該指標(biāo)因子實例為新增,在所述被定位的分桶中加入對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例。

本申請?zhí)峁┑膶崟r新增數(shù)據(jù)更新方法,基于預(yù)先設(shè)置的分桶存儲策略,將歷史數(shù)據(jù)以指標(biāo)因子實例的形式存儲到不同的分桶中,而實時新增數(shù)據(jù)對應(yīng)的指標(biāo)因子實例則按同樣的規(guī)則定位到其相應(yīng)的分桶中,繼而在其定位的分桶中檢索判斷指標(biāo)因子實例是否為新增,并進(jìn)行更新處理。這種方法應(yīng)用在分布式系統(tǒng)中,使得分布式集群服務(wù)器中每臺服務(wù)器不需要等待全部歷史數(shù)據(jù)全量加載完成后才能進(jìn)行實時計算,只需要每臺服務(wù)器實時加載部分分桶的數(shù)據(jù)即可準(zhǔn)確的完成更新處理,降低了初始化時文件系統(tǒng)承受的壓力和每臺服務(wù)器的負(fù)載,減少了對物理設(shè)備的性能要求。由于每個分桶的數(shù)據(jù)量相對較小,使短時間內(nèi)實現(xiàn)對分桶的實時加載成為可能。因此,本申請的方法提高了實時性,并降低了資源占用率。另外,即使指標(biāo)因子實例的歷史數(shù)據(jù)越來越多,基于上述分桶存儲策略,也可以通過升級或擴展物理設(shè)備的方式保證實時新增數(shù)據(jù)更新的準(zhǔn)確性和實時性,這使得本申請?zhí)峁┑姆椒ň哂袛U展性。

附圖說明

圖1是本申請的一種實時新增數(shù)據(jù)更新方法的實施例的流程圖。

圖2是建立指標(biāo)因子歷史累積池的流程圖。

圖3是指標(biāo)因子實例分發(fā)算法的實施例的流程圖。

圖4是一種實時新增數(shù)據(jù)更新裝置的實施例的示意圖。

具體實施方式

在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請。但是本申請能夠以很多不同于在此描述的其它方式來實施,本領(lǐng)域技術(shù)人員可以在不違背 本申請內(nèi)涵的情況下做類似推廣,因此本申請不受下面公開的具體實施的限制。

在本申請中,分別提供了一種實時新增數(shù)據(jù)更新方法和裝置,在下面的實施例中逐一進(jìn)行詳細(xì)說明。本實施例假定用于移動互聯(lián)網(wǎng)的移動應(yīng)用供應(yīng)商從各種訪問數(shù)據(jù)中獲取新增用戶和新增移動設(shè)備數(shù)據(jù)這一應(yīng)用場景,以下說明主要結(jié)合此應(yīng)用場景,同時兼顧其他應(yīng)用場景的情況。

請參考圖1,其為本申請的一種實時新增數(shù)據(jù)更新方法的實施例的流程圖。

所述方法包括如下步驟:

步驟101:獲取實時新增數(shù)據(jù),所述實時新增數(shù)據(jù)包括不同維度的數(shù)據(jù)元素。

本實施例在獲取實時新增數(shù)據(jù)時,首先實時讀取新的數(shù)據(jù)流,在讀取到的數(shù)據(jù)流中獲取當(dāng)前時刻的所有實時新增數(shù)據(jù)。

實時新增數(shù)據(jù)的數(shù)量有時多達(dá)千萬條,每條實時新增數(shù)據(jù)可以包含多個數(shù)據(jù)元素,每個數(shù)據(jù)元素反映不同方面的內(nèi)容。對于不同類型和來源的實時新增數(shù)據(jù),其包含的數(shù)據(jù)元素可能反映不同方面的內(nèi)容;對于數(shù)據(jù)中的不同方面稱為維度,維度基本上相當(dāng)于多個字段形成的一條數(shù)據(jù)記錄中的一個字段,當(dāng)然,由于并非所有數(shù)據(jù)都采用字段方式記錄,所以具體應(yīng)當(dāng)根據(jù)數(shù)據(jù)的實際情況確定??傊鼍S度是某個數(shù)據(jù)元素描述的特性是什么的抽象說法;一個實施新增數(shù)據(jù)一般包括多個維度的數(shù)據(jù)元素。

對本實施例的具體應(yīng)用場景而言,實時新增數(shù)據(jù)中至少包括應(yīng)用ID、用戶ID、移動設(shè)備ID等維度的數(shù)據(jù)元素。

步驟102:根據(jù)預(yù)先確定的指標(biāo)因子算法,獲取對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例;該指標(biāo)因子實例由所述實時新增數(shù)據(jù)的被關(guān)注維度下的數(shù)據(jù)元素的具體數(shù)值組成,所述被關(guān)注維度稱為指標(biāo)因子。

本申請要處理的對象是基于大數(shù)據(jù)的實時新增數(shù)據(jù),每個數(shù)據(jù)可能會包括復(fù)雜的數(shù)據(jù)結(jié)構(gòu),但每個數(shù)據(jù)被關(guān)注的信息只是其中的一部分,根據(jù)這些被關(guān)注的信息就可以判斷所述實時新增數(shù)據(jù)對待統(tǒng)計指標(biāo)而言是否為新增,因此本申請需要對每個數(shù)據(jù)生成指標(biāo)因子實例,該指標(biāo)因子實例由每個實時新增數(shù)據(jù)的被關(guān)注維度下的數(shù)據(jù)元素的具體數(shù)值組成,所述被關(guān)注維度稱為指標(biāo)因子。在本實施例中,應(yīng)用ID、用戶ID和移動設(shè)備ID是被關(guān)注維度,實時新增數(shù)據(jù)對應(yīng)的指標(biāo)因子實例由這些被關(guān)注維度下的數(shù)據(jù)元素的數(shù)值組成,具體組成方法由預(yù)先確定的指標(biāo)因子算法實現(xiàn)。

步驟102中的指標(biāo)因子算法包括維度分配邏輯和指標(biāo)因子實例生成算法兩個方面。

所述維度分配邏輯根據(jù)所述實時新增數(shù)據(jù)的具體內(nèi)容,對其被關(guān)注維度進(jìn)行分配;所述指標(biāo)因子實例生成算法,根據(jù)所述被關(guān)注維度,從所述實時新增數(shù)據(jù)中獲取各個被關(guān)注維度的數(shù)據(jù)元素的取值,并將這些取值組合,形成所述指標(biāo)因子實例。

對所述維度分配邏輯的具體說明如下。

對于不同類型的實時新增數(shù)據(jù),它們的被關(guān)注維度會有不同,例如某些場合需要針對不同應(yīng)用分別對使用某個具體應(yīng)用的用戶進(jìn)行統(tǒng)計,某些場合需要針對某個具體應(yīng)用分別對使用該應(yīng)用的用戶和終端設(shè)備同時進(jìn)行統(tǒng)計。因此,本申請?zhí)峁┚S度分配邏輯對實時新增數(shù)據(jù)的被關(guān)注維度進(jìn)行分配。

在僅統(tǒng)計固定維度數(shù)據(jù)的場合下,該維度分配邏輯可以直接指定固定的預(yù)設(shè)維度。例如,只關(guān)注應(yīng)用和用戶的關(guān)系,則只從實時新增數(shù)據(jù)中獲得應(yīng)用ID和用戶ID兩個維度即可,因此將維度分配邏輯設(shè)置為直接指定應(yīng)用ID和用戶ID為被關(guān)注維度,即指標(biāo)因子,這兩個維度下的數(shù)據(jù)元素的具體數(shù)值組成指標(biāo)因子實例;同理,若需同時關(guān)注應(yīng)用、用戶以及移動設(shè)備之間的關(guān)系,則需從實時新增數(shù)據(jù)中獲得應(yīng)用ID、用戶ID以及移動設(shè)備ID三個維度,因此將維度分配邏輯設(shè)置為直接指定應(yīng)用ID、用戶ID以及移動設(shè)備ID為被關(guān)注維度。

在另外一些情況下,需要根據(jù)不同的數(shù)據(jù)情況,關(guān)注不同的維度,則該維度分配邏輯通過設(shè)置待匹配集合的方法實現(xiàn)對實時新增數(shù)據(jù)的被關(guān)注維度的分配。

本申請在維度分配邏輯設(shè)置待匹配集合的情況下,在設(shè)置的待匹配集合下進(jìn)一步設(shè)置由不同維度信息組成的指標(biāo)因子子集,并且由不同場合下的實時新增數(shù)據(jù)與所述待匹配集合按預(yù)定規(guī)則進(jìn)行匹配,獲取對應(yīng)的指標(biāo)因子子集,并根據(jù)該指標(biāo)因子子集獲取該具體的實時新增數(shù)據(jù)的被關(guān)注維度。例如,待匹配集合下設(shè)置應(yīng)用ID、用戶ID組成的子集,以及應(yīng)用ID、用戶ID和移動設(shè)備ID組成的子集,實時新增數(shù)據(jù)分別與這些子集按應(yīng)用ID類別進(jìn)行匹配,由匹配結(jié)果確定該實時新增數(shù)據(jù)的被關(guān)注維度。

該維度分配邏輯能夠?qū)崟r新增數(shù)據(jù)的被關(guān)注維度進(jìn)行靈活分配,從而能夠?qū)Σ煌瑘龊舷碌膶崟r新增數(shù)據(jù)獲取到不同維度的指標(biāo)因子實例;或者,根據(jù) 不同的使用目的,對相同場合下的實時新增數(shù)據(jù)獲取到不同層次和粒度的指標(biāo)因子實例,從而對實時新增數(shù)據(jù)進(jìn)行預(yù)定的分析和更新處理。

對所述指標(biāo)因子實例生成算法的具體說明如下。

指標(biāo)因子實例生成算法根據(jù)所述被關(guān)注維度,從所述實時新增數(shù)據(jù)中獲取各個被關(guān)注維度的數(shù)據(jù)元素的取值,并將這些取值組合,形成所述指標(biāo)因子實例。具體組合辦法根據(jù)情況可以采用多種方法,例如,可直接按照順序進(jìn)行數(shù)據(jù)元素拼接;也可以按照字段記錄,或者采用其他的組合方式記錄。

在本實施例中,對每個實時新增數(shù)據(jù)分別獲取應(yīng)用ID、用戶ID和移動設(shè)備ID這些被關(guān)注維度下數(shù)據(jù)元素的取值,并將這些被關(guān)注維度下數(shù)據(jù)元素的取值按應(yīng)用ID、用戶ID和移動設(shè)備ID的維度順序進(jìn)行字符拼接,由拼接后的字符構(gòu)成對應(yīng)實時新增數(shù)據(jù)的指標(biāo)因子實例,該拼接后的字符能夠在本申請的分桶存儲策略中作為變量直接進(jìn)行運算。具體來說,例如,將其中一個實時新增數(shù)據(jù)中應(yīng)用ID的取值appId1、用戶ID的取值userNick以及移動設(shè)備ID的取值deviceId1進(jìn)行字符拼接,拼接后得到字符串a(chǎn)ppId1_userNick_deviceId1,則appId1_userNick_deviceId1成為指標(biāo)因子實例的取值,從而構(gòu)成該實時新增數(shù)據(jù)對應(yīng)的指標(biāo)因子實例。該指標(biāo)因子實例僅包括該實時新增數(shù)據(jù)中被關(guān)注維度下的數(shù)據(jù)信息,根據(jù)這些被關(guān)注維度下的數(shù)據(jù)信息就可以判斷該實時新增數(shù)據(jù)對待統(tǒng)計指標(biāo)而言是否為新增,達(dá)到了過濾原始數(shù)據(jù)中的冗余信息的效果,當(dāng)數(shù)據(jù)量非常大時,能夠明顯的節(jié)省實時計算占用的資源,并節(jié)省大量的存儲空間。

本申請還可以采用其它方法形成對應(yīng)實時新增數(shù)據(jù)的指標(biāo)因子實例,只要從該指標(biāo)因子實例能夠得到唯一的取值,并且這個取值能夠在本申請的分桶存儲策略中作為變量直接進(jìn)行運算即可。

步驟103:基于預(yù)先設(shè)置的分桶存儲策略,把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中。

本申請的重點在于實時性,對于傳統(tǒng)的方式,需要將大量實時新增數(shù)據(jù)分發(fā)到分布式集群服務(wù)器中的多臺服務(wù)器上去,每臺服務(wù)器在實時處理新增判斷的過程中,又要將全量的歷史數(shù)據(jù)組成的數(shù)據(jù)集加載進(jìn)內(nèi)存。歷史數(shù)據(jù)的數(shù)據(jù)量巨大,可能多達(dá)幾億條記錄,且每條記錄又包括多個維度的數(shù)據(jù)元素,這時,多臺服務(wù)器的內(nèi)存需要并行全量加載歷史數(shù)據(jù)組成的數(shù)據(jù)集,并且要等待全量加載完成后才能開始計算,不僅對物理設(shè)備的性能要求高,還造成很大的計算 延遲。本申請通過分桶存儲策略,一方面將全量的歷史數(shù)據(jù)切分成多個分桶數(shù)據(jù)進(jìn)行存儲,另一方面在實時新增判斷時,又將實時新增數(shù)據(jù)對應(yīng)的指標(biāo)因子實例定位到其相應(yīng)的分桶中,從而在分布式系統(tǒng)中,每臺服務(wù)器只需要加載所需的分桶的數(shù)據(jù)即可準(zhǔn)確的完成新增判斷,減少了對物理設(shè)備的性能要求、提高了實時性,且減小計算延遲使資源占用率降低。

本實施例中所有分桶存儲在分布式文件系統(tǒng)中,由分布式集群服務(wù)器共享該分布式文件系統(tǒng),以下步驟都基于這種分布式架構(gòu)實現(xiàn)。

步驟103中,在執(zhí)行把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中這個步驟前,需要根據(jù)預(yù)先設(shè)置的分桶存儲策略,對當(dāng)前時間已存在的歷史數(shù)據(jù)進(jìn)行分桶存儲,建立指標(biāo)因子歷史累積池,圖2為建立指標(biāo)因子歷史累積池的流程圖,包括以下步驟:

步驟201:獲取實時新增數(shù)據(jù)到來前已存在的歷史數(shù)據(jù)。

在本實施例中將當(dāng)前實時新增數(shù)據(jù)到來前的原有歷史數(shù)據(jù)的數(shù)據(jù)集作為已存在的歷史數(shù)據(jù),里面可能包括大量歷史記錄,可能的數(shù)據(jù)量級例如為上億條記錄。

步驟202:對上述歷史數(shù)據(jù)的每個歷史數(shù)據(jù)通過步驟102中的指標(biāo)因子算法分別獲取每個歷史數(shù)據(jù)對應(yīng)的指標(biāo)因子實例。

在本實施例中,對每個歷史數(shù)據(jù),首先將維度分配邏輯設(shè)置為直接指定應(yīng)用ID、用戶ID和移動設(shè)備ID為被關(guān)注維度;其次使用指標(biāo)因子實例生成算法生成該歷史數(shù)據(jù)對應(yīng)的指標(biāo)因子實例,具體步驟為:根據(jù)所述被關(guān)注維度,分別從該歷史數(shù)據(jù)中獲取所述被關(guān)注維度的數(shù)據(jù)元素的取值,并將這些取值按應(yīng)用ID、用戶ID和移動設(shè)備ID的維度順序進(jìn)行字符拼接,由拼接后的字符構(gòu)成對應(yīng)該歷史數(shù)據(jù)的指標(biāo)因子實例,該拼接后的字符能夠在本申請的分桶存儲策略中作為變量直接進(jìn)行運算。

步驟203:基于所述預(yù)先設(shè)置的分桶存儲策略,建立分桶存儲的指標(biāo)因子歷史累積池。

在本實施例中,上述分桶存儲策略基于Hash算法實現(xiàn),建立分桶存儲的指標(biāo)因子歷史累積池主要有以下步驟:

1)根據(jù)歷史數(shù)據(jù)的信息量為所述分桶算法設(shè)置合理的桶數(shù)N。在本實施例中,為每一個分桶分配一個桶號,并將這個桶號作為索引分桶的特征值。例如, 把N個分桶的編號設(shè)置為1、2、3、……、N,并根據(jù)該編號能夠索引到其對應(yīng)的分桶。

2)確定合適的Hash函數(shù),對每個歷史數(shù)據(jù)對應(yīng)的指標(biāo)因子實例的取值進(jìn)行Hash運算得到散列的Hash值,每個所述Hash值均能夠唯一的歸屬到所述Hash桶的某個桶號,從而根據(jù)桶號,把該歷史數(shù)據(jù)的指標(biāo)因子實例定位到其相應(yīng)的分桶。

確定合適的Hash函數(shù),是指該Hash函數(shù)需能將各指標(biāo)因子實例的取值均勻的散列到各分桶的桶號上,且每個分桶存儲容量的最大閾值還能夠通過桶數(shù)N進(jìn)行調(diào)節(jié)。例如乘法Hash,通過對指標(biāo)因子實例的取值進(jìn)行乘法Hash運算得到一系列散列的Hash值,每個Hash值均能夠唯一的歸屬到某個分桶的桶號,且各桶號對應(yīng)的指標(biāo)因子實例數(shù)量均勻。

上述每個Hash值均能夠唯一的歸屬到某個分桶的桶號,是指通過Hash運算得到的Hash值需要通過一定的算法映射到分桶的桶號上去,映射方法有多種,但要保證一個Hash值僅對應(yīng)唯一的桶號,本實施例中將該Hash值對桶數(shù)N取模,取模的結(jié)果作為該Hash值歸屬的桶號。

3)將屬于不同分桶的指標(biāo)因子實例存儲到不同的分桶中,從而建立指標(biāo)因子歷史累積池。如前所述桶號作為索引分桶的特征值,那么根據(jù)桶號,能夠檢索到指標(biāo)因子實例定位到的分桶,從而把指標(biāo)因子實例存儲到相應(yīng)的分桶中。本實施例是基于分布式架構(gòu)實現(xiàn),因此本實施例中,將建立好的指標(biāo)因子歷史累積池存儲在分布式文件系統(tǒng)中,分布式集群服務(wù)器通過共享該分布式文件系統(tǒng)來操作該指標(biāo)因子歷史累積池。

步驟103中,把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中,是指在指標(biāo)因子歷史累積池已經(jīng)建立好的前提下,根據(jù)預(yù)先設(shè)置的分桶存儲策略,把實時新增數(shù)據(jù)對應(yīng)的指標(biāo)因子實例定位到其相應(yīng)的分桶中。本實施例基于分布式架構(gòu)實現(xiàn),因此這一步驟包括兩個過程:將所述指標(biāo)因子實例分發(fā)至所述分布式集群服務(wù)器的各服務(wù)器上,該分發(fā)過程依據(jù)預(yù)定的指標(biāo)因子實例分發(fā)算法實現(xiàn);根據(jù)預(yù)先設(shè)置的分桶存儲策略,通過所述分布式集群服務(wù)器的各服務(wù)器把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中。

對所述預(yù)定的指標(biāo)因子實例分發(fā)算法,具體可以采用多種實現(xiàn)方法,但為保證本申請所述更新方法的可擴展性,指標(biāo)因子實例分發(fā)算法需要保證能夠使 各服務(wù)器內(nèi)存的負(fù)載均衡,例如能夠使各服務(wù)器加載的分桶數(shù)量均衡,或者使各服務(wù)器被分配到的指標(biāo)因子實例數(shù)量在一段時間內(nèi)保持均衡,或者相同的指標(biāo)因子實例被分配到相同的服務(wù)器上等。

圖3為指標(biāo)因子實例分發(fā)算法的實施例的流程圖,具體步驟為:

步驟301:對分布式集群服務(wù)器的各個服務(wù)器進(jìn)行編號,以便分桶分配到各個服務(wù)器上。例如分布式集群下有M臺服務(wù)器,按IP地址的大小順序設(shè)置各服務(wù)器的編號為1、2、3、……、M。

步驟302:將全部分桶的桶號均勻映射到分布式集群服務(wù)器的各個服務(wù)器上。在本實施例中具體步驟為:設(shè)置每臺服務(wù)器上加載的分桶個數(shù)為N/M,并且按桶號順序及服務(wù)器編碼順序,將全部分桶的桶號均勻分配到分布式集群服務(wù)器的各個服務(wù)器上,從而每個服務(wù)器根據(jù)所分配的桶號訪問該些桶號對應(yīng)的分桶。

步驟303:根據(jù)與實時新增數(shù)據(jù)對應(yīng)的指標(biāo)因子實例,按所述分桶存儲策略計算所述指標(biāo)因子實例所歸屬分桶的桶號。

在本實施例中具體步驟為:采用步驟203中的Hash函數(shù)對指標(biāo)因子實例的取值進(jìn)行散列,獲取到與指標(biāo)因子實例對應(yīng)的唯一值,將該唯一值對桶數(shù)N取模,取模的結(jié)果作為該指標(biāo)因子實例所歸屬分桶的桶號。

步驟304:根據(jù)步驟302中分桶桶號與各服務(wù)器的映射關(guān)系,獲取指標(biāo)因子實例對應(yīng)的服務(wù)器的編號。

步驟305:根據(jù)上述服務(wù)器編號,將該指標(biāo)因子實例分發(fā)到分布式集群服務(wù)器中對應(yīng)的服務(wù)器上。

指標(biāo)因子實例分發(fā)算法具體實現(xiàn)方法的另一種技術(shù)選擇是:

1)對分布式集群服務(wù)器的各個服務(wù)器進(jìn)行編號,以便分桶分配到各個服務(wù)器上。例如分布式集群下有M臺服務(wù)器,按IP地址的大小順序設(shè)置各服務(wù)器的編號為1、2、3、……、M。

2)對所述變量用md5算法得到十六進(jìn)制的數(shù)據(jù)后,使用該數(shù)據(jù)對所述分布式集群服務(wù)器的服務(wù)器數(shù)量進(jìn)行取模運算,得到所述服務(wù)器的編號;或者,對所述變量采用ASCII碼換算得到二進(jìn)制的數(shù)據(jù)后,使用該數(shù)據(jù)對所述分布式集群服務(wù)器的服務(wù)器數(shù)量進(jìn)行取模運算,得到所述服務(wù)器的編號。

3)根據(jù)上述服務(wù)器編號,將該指標(biāo)因子實例分發(fā)到分布式集群服務(wù)器中對 應(yīng)的服務(wù)器上。

指標(biāo)因子實例分發(fā)算法的上述第二種具體實現(xiàn)方法,使各服務(wù)器被分配到的指標(biāo)因子實例數(shù)量在一段時間內(nèi)保持均衡,且相同的指標(biāo)因子實例被分配到相同的服務(wù)器上,從而使各服務(wù)器內(nèi)存的負(fù)載均衡。

對根據(jù)預(yù)先設(shè)置的分桶存儲策略,通過所述分布式集群服務(wù)器的各服務(wù)器把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中,本實施例的具體實現(xiàn)是:所述分布式集群服務(wù)器的各服務(wù)器,根據(jù)分發(fā)來的指標(biāo)因子實例,按所述分桶存儲策略計算所述指標(biāo)因子實例所屬分桶的桶號,所述桶號作為查找各服務(wù)器上分發(fā)來的所述指標(biāo)因子實例對應(yīng)分桶的特征值。

步驟104:讀取被所述指標(biāo)因子實例定位的分桶,以所述指標(biāo)因子實例為依據(jù)從所述分桶中檢索,判斷所述分桶的現(xiàn)有數(shù)據(jù)中是否包含相同的指標(biāo)因子實例。

本申請的具體實施例基于分布式架構(gòu)部署,步驟104具體是指所述各服務(wù)器從所述分布式文件系統(tǒng)中存儲的指標(biāo)因子歷史累積池中讀取被所述指標(biāo)因子實例定位的分桶至各服務(wù)器的內(nèi)存上,并由各服務(wù)器在內(nèi)存中完成后續(xù)的判斷等操作,各服務(wù)器的處理是并行處理。

在本實施例中,讀取被所述指標(biāo)因子實例定位的分桶,是各服務(wù)器指根據(jù)步驟103得到的指標(biāo)因子實例所屬分桶的桶號,從分布式文件系統(tǒng)中存儲的指標(biāo)因子歷史累積池中查找相應(yīng)的分桶并讀取分桶中的數(shù)據(jù),具體包括以下步驟:

1)根據(jù)指標(biāo)因子實例所屬分桶的桶號,判斷當(dāng)前服務(wù)器是否已讀取該桶號對應(yīng)的分桶,若判斷結(jié)果為是,則直接使用已經(jīng)讀取的分桶數(shù)據(jù),若判斷結(jié)果為否,則進(jìn)入下一步。

2)根據(jù)分桶桶號,在指標(biāo)因子歷史累積池中檢索該桶號對應(yīng)的分桶;

3)判斷檢索的分桶是否存在,若判斷結(jié)果為是,則進(jìn)入下一步,若判斷結(jié)果為否,則為指標(biāo)因子實例建立新的分桶,該分桶數(shù)據(jù)為空,并進(jìn)入下一步。

4)將檢索到的或新建立的分桶數(shù)據(jù)加載到相應(yīng)指標(biāo)因子實例被分發(fā)的服務(wù)器的內(nèi)存中。

5)判斷分桶是否加載到相應(yīng)服務(wù)器的內(nèi)存中,若判斷結(jié)果為是,則以該指標(biāo)因子實例為依據(jù),從該分桶中檢索,判斷該分桶的現(xiàn)有數(shù)據(jù)中是否包含相同的指標(biāo)因子實例。

步驟105:若步驟104中判斷該分桶的現(xiàn)有數(shù)據(jù)中包含相同的指標(biāo)因子實例,則不對分桶數(shù)據(jù)進(jìn)行處理。

在本實施例中,指標(biāo)因子實例包含了實時新增數(shù)據(jù)的被關(guān)注維度的信息,指標(biāo)因子歷史累積池中分桶存儲的指標(biāo)因子實例也包含了歷史數(shù)據(jù)的被關(guān)注維度的信息;服務(wù)器根據(jù)實時新增數(shù)據(jù)的指標(biāo)因子實例定位到其相應(yīng)的指標(biāo)因子歷史累積池中的分桶,并加載該分桶到相應(yīng)的服務(wù)器內(nèi)存上,若以該指標(biāo)因子實例為依據(jù),從該分桶中檢索,判斷該分桶的現(xiàn)有數(shù)據(jù)中包含相同的指標(biāo)因子實例,則說明該實時新增數(shù)據(jù)的被關(guān)注維度信息,即在相應(yīng)應(yīng)用ID下的用戶ID或移動設(shè)備ID是歷史上已出現(xiàn)過的,不是新增的用戶也不是新增移動設(shè)備,因此不需要更新指標(biāo)因子歷史累積池,也不需要更新新增數(shù)據(jù)指標(biāo)統(tǒng)計表。

步驟106:若步驟104中判斷該分桶的現(xiàn)有數(shù)據(jù)中不包含相同的指標(biāo)因子實例,則該指標(biāo)因子實例為新增,在所述被定位的分桶中加入對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例。對于本實施例來說,此判斷表明實時新增數(shù)據(jù)的被關(guān)注維度信息,即在相應(yīng)應(yīng)用ID下的用戶ID或移動設(shè)備ID是歷史上從沒有出現(xiàn)過的,是新增用戶或新增移動設(shè)備,是需要更新和統(tǒng)計的新增指標(biāo)。本實施例中,在所述被定位的分桶中加入對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例的具體做法是:

1)將該指標(biāo)因子實例更新到其被分發(fā)的服務(wù)器內(nèi)存中存儲的該指標(biāo)因子實例所屬的分桶中。

2)在指標(biāo)因子歷史累積池中,將該指標(biāo)因子實例更新到該桶號所對應(yīng)的分桶中,使指標(biāo)因子歷史累積池同步到最新數(shù)據(jù)。

3)更新新增數(shù)據(jù)指標(biāo)統(tǒng)計表,所述新增數(shù)據(jù)指標(biāo)統(tǒng)計表包括對新增用戶數(shù)量和新增移動設(shè)備數(shù)量的統(tǒng)計。

在以上具體實施方式中,預(yù)先設(shè)置的分桶存儲策略,使分桶的最大閾值能夠通過所述桶數(shù)N進(jìn)行調(diào)節(jié),一定程度上保證了各服務(wù)器的負(fù)載均衡;同時,預(yù)先將分桶桶號均勻映射到分布式集群服務(wù)器的各個服務(wù)器上的指標(biāo)因子實例的分發(fā)算法,使各服務(wù)器上加載的分桶數(shù)量均衡,更進(jìn)一步的保證了各服務(wù)器的負(fù)載均衡,且這種在一段時間內(nèi)固定的映射關(guān)系又避免了各服務(wù)器對指標(biāo)因子歷史累積池中的分桶的頻繁加載;因此,本申請的更新方法使得資源利用更合理,可擴展性更強,達(dá)到了真正意義的分布式處理。

在上述的實施例中,提供了一種實時新增數(shù)據(jù)更新方法,與之相對應(yīng)的,本申請還提供一種實時新增數(shù)據(jù)更新裝置。請參看圖4,其為一種實時新增數(shù)據(jù)更新裝置的實施例的示意圖。由于裝置實施例基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。

本實施例的一種實時新增數(shù)據(jù)更新裝置,包括:指標(biāo)因子歷史累積池形成單元1、實時新增數(shù)據(jù)獲取單元2、指標(biāo)因子實例獲取單元3、指標(biāo)因子實例定位單元4、新增實時判斷單元5和指標(biāo)因子歷史累積池更新單元6。

所述指標(biāo)因子歷史累積池形成單元1,用于根據(jù)歷史數(shù)據(jù)建立按分桶存儲策略存儲的指標(biāo)因子歷史累積池。

所述實時新增數(shù)據(jù)獲取單元2,用于在同一時刻獲取一個或多個實時新增數(shù)據(jù),每個所述實時新增數(shù)據(jù)包括不同維度的數(shù)據(jù)元素。

所述指標(biāo)因子實例獲取單元3,用于根據(jù)預(yù)先確定的指標(biāo)因子算法,獲取各實時新增數(shù)據(jù)對應(yīng)的指標(biāo)因子實例;該指標(biāo)因子實例由所述實時新增數(shù)據(jù)的被關(guān)注維度下的數(shù)據(jù)元素的具體數(shù)值組成,所述被關(guān)注維度稱為指標(biāo)因子。

所述指標(biāo)因子實例定位單元4,用于基于預(yù)先設(shè)置的分桶存儲策略,把所述指標(biāo)因子實例定位到其相應(yīng)的分桶中。

所述新增實時判斷單元5,用于讀取被所述指標(biāo)因子實例定位的分桶,以所述指標(biāo)因子實例為依據(jù)從所述分桶中檢索,判斷所述分桶的現(xiàn)有數(shù)據(jù)中是否包含相同的指標(biāo)因子實例。

所述指標(biāo)因子歷史累積池更新單元6,用于根據(jù)指標(biāo)因子實例新增實時判斷子單元的判斷結(jié)果進(jìn)行相應(yīng)的更新處理,若判斷結(jié)果為是,則不對分桶數(shù)據(jù)進(jìn)行處理;若判斷結(jié)果為否,則該指標(biāo)因子實例為新增,在所述被定位的分桶中加入對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例。

在本實施例中,所述實時新增數(shù)據(jù)獲取單元2、指標(biāo)因子實例獲取單元3、指標(biāo)因子實例定位單元4、新增實時判斷單元5和指標(biāo)因子歷史累積池更新單元6共同完成實時新增數(shù)據(jù)的更新處理,該些單元執(zhí)行的前提是,指標(biāo)因子歷史累積池形成單元1已完成指標(biāo)因子歷史累積池的建立,所述新增實時判斷單元5和所述指標(biāo)因子歷史累積池更新單元6是依據(jù)所述指標(biāo)因子歷史累積池來進(jìn)行新增判斷以及更新處理的。

所述指標(biāo)因子歷史累積池形成單元1包括歷史數(shù)據(jù)獲取子單元1-1、指標(biāo)因子實例子單元1-2和指標(biāo)因子歷史累積池建立子單元1-3。

所述歷史數(shù)據(jù)獲取子單元1-1,用于獲取實時新增數(shù)據(jù)到來前已存在的歷史數(shù)據(jù)。

所述指標(biāo)因子實例子單元1-2,用于對所述歷史數(shù)據(jù)的每個數(shù)據(jù)通過所述指標(biāo)因子算法分別獲取所述每個歷史數(shù)據(jù)的指標(biāo)因子實例。

所述指標(biāo)因子歷史累積池建立子單元1-3,用于基于所述預(yù)先設(shè)置的分桶存儲策略,把所述歷史數(shù)據(jù)的所述指標(biāo)因子實例定位到其相應(yīng)的分桶,并將屬于不同分桶的指標(biāo)因子實例存儲到不同的分桶中;每一個分桶分配有一個桶號,從而建立分桶存儲的指標(biāo)因子歷史累積池。

上述指標(biāo)因子歷史累積池形成單元1、實時新增數(shù)據(jù)獲取單元2、指標(biāo)因子實例獲取單元3、指標(biāo)因子實例定位單元4、新增實時判斷單元5和指標(biāo)因子歷史累積池更新單元6,都是基于相同的指標(biāo)因子算法和相同的分桶存儲策略實施的,該指標(biāo)因子算法和該分桶存儲策略在方法實施例中已詳細(xì)介紹,在裝置的實施例中就不詳細(xì)描述了,具體步驟參見方法實施例。

可選的,所述實時新增數(shù)據(jù)更新裝置部署在分布式系統(tǒng)中,所述分桶存儲的指標(biāo)因子歷史累積池具體是存儲在分布式文件系統(tǒng)中,由分布式集群服務(wù)器共享所述分布式文件系統(tǒng),所述新增數(shù)據(jù)實時判斷模塊部署在所述分布式集群服務(wù)器上。

上述分別提供了一種實時新增數(shù)據(jù)更新方法和一種實時新增數(shù)據(jù)更新裝置的實施例,相應(yīng)的,本申請還提供一種電子設(shè)備,該電子設(shè)備包括:

顯示器;

處理器;以及

存儲器,所述存儲器被配置成存儲實時新增數(shù)據(jù)更新裝置,所述實時新增數(shù)據(jù)更新裝置被所述處理器執(zhí)行時,執(zhí)行如下步驟:

獲取實時新增數(shù)據(jù),所述實時新增數(shù)據(jù)包括不同維度的數(shù)據(jù)元素;

根據(jù)預(yù)先確定的指標(biāo)因子算法,獲取對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例;該指標(biāo)因子實例由所述實時新增數(shù)據(jù)的被關(guān)注維度下的數(shù)據(jù)元素的具體數(shù)值組成,所述被關(guān)注維度稱為指標(biāo)因子;

基于預(yù)先設(shè)置的分桶存儲策略,把所述指標(biāo)因子實例定位到其相應(yīng)的分桶 中;

讀取被所述指標(biāo)因子實例定位的分桶,以所述指標(biāo)因子實例為依據(jù)從所述分桶中檢索,判斷所述分桶的現(xiàn)有數(shù)據(jù)中是否包含相同的指標(biāo)因子實例;

若判斷結(jié)果為是,則不對分桶數(shù)據(jù)進(jìn)行處理;

若判斷結(jié)果為否,則該指標(biāo)因子實例為新增,在所述被定位的分桶中加入對應(yīng)所述實時新增數(shù)據(jù)的指標(biāo)因子實例。

本申請雖然以較佳實施例公開如上,但其并不是用來限定本申請,任何本領(lǐng)域技術(shù)人員在不脫離本申請的精神和范圍內(nèi),都可以做出可能的變動和修改,因此本申請的保護(hù)范圍應(yīng)當(dāng)以本申請權(quán)利要求所界定的范圍為準(zhǔn)。

在一個典型的配置中,計算設(shè)備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機可讀介質(zhì)的示例。

1、計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。

2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1