一種多維度拆分的計(jì)算方法以及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)一種多維度拆分的計(jì)算方法以及系統(tǒng),涉及多維度拆分計(jì)算領(lǐng)域,可以對(duì)海量數(shù)據(jù)進(jìn)行多維度拆分計(jì)算,從而降低計(jì)算復(fù)雜度。本發(fā)明實(shí)施例通過(guò)根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)?,所述遞推拓?fù)溆删S度組合以及各維度組合之間的遞推路徑構(gòu)成,所述維度組合由各維度的屬性名稱(chēng)以及與所述屬性名稱(chēng)對(duì)應(yīng)的所述海量預(yù)處理數(shù)據(jù)中的數(shù)據(jù)構(gòu)成;根據(jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑;根據(jù)所述遞推拓?fù)洌捎?jì)算任務(wù);根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù),計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果。本發(fā)明實(shí)施例提供的方案適于進(jìn)行多維拆分時(shí)采用。
【專(zhuān)利說(shuō)明】一種多維度拆分的計(jì)算方法以及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多維度拆分計(jì)算領(lǐng)域,尤其涉及一種多維度拆分的計(jì)算方法以及系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)中,多維度拆分系統(tǒng)通常基于關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),關(guān)系型數(shù)據(jù)庫(kù)為由二維表及各個(gè)二維表之間的聯(lián)系組成的一個(gè)數(shù)據(jù)組織。采用現(xiàn)有技術(shù)進(jìn)行多維度拆分計(jì)算時(shí),根據(jù)用戶(hù)的數(shù)據(jù)請(qǐng)求,通過(guò)關(guān)系型數(shù)據(jù)庫(kù)的多個(gè)二維表以及多個(gè)二維表之間的聯(lián)系聯(lián)合計(jì)算,從而獲得符合用戶(hù)數(shù)據(jù)請(qǐng)求的多維組合結(jié)果。
[0003]然而,采用現(xiàn)有技術(shù)進(jìn)行多維度拆分計(jì)算時(shí),由于基于關(guān)系型數(shù)據(jù)庫(kù)的多個(gè)二維表進(jìn)行多維度拆分計(jì)算,計(jì)算復(fù)雜度較高,并且處理數(shù)據(jù)量較小。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實(shí)施例提供一種多維度拆分的計(jì)算方法以及系統(tǒng),可以對(duì)海量數(shù)據(jù)進(jìn)行多維度拆分計(jì)算,從而降低計(jì)算復(fù)雜度。
[0005]第一方面,本發(fā)明實(shí)施例提供一種多維度拆分的計(jì)算方法,包括:
[0006]根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)洌鲞f推拓?fù)溆删S度組合以及各維度組合之間的遞推路徑構(gòu)成,所述維度組合由各維度的屬性名稱(chēng)以及與所述屬性名稱(chēng)對(duì)應(yīng)的所述海量預(yù)處理數(shù)據(jù)中的數(shù)據(jù)構(gòu)成;
[0007]根據(jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑;
[0008]根據(jù)所述遞推拓?fù)?,生成?jì)算任務(wù);
[0009]根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù),計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果。
[0010]第二方面,本發(fā)明實(shí)施例提供一種多維度拆分的計(jì)算系統(tǒng),包括:運(yùn)算決策模塊,運(yùn)算控制模塊,維度組合生成模塊;
[0011]所述運(yùn)算決策模塊,用于根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)洌鲞f推拓?fù)溆删S度組合以及各維度組合之間的遞推路徑構(gòu)成,所述維度組合由各維度的屬性名稱(chēng)以及與所述屬性名稱(chēng)對(duì)應(yīng)的所述海量預(yù)處理數(shù)據(jù)中的數(shù)據(jù)構(gòu)成;
[0012]所述運(yùn)算決策模塊,還用于根據(jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑;
[0013]運(yùn)算控制模塊,用于根據(jù)所述遞推拓?fù)?,生成?jì)算任務(wù);
[0014]所述運(yùn)算控制模塊,還用于根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù);
[0015]維度組合生成模塊,用于計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果。
[0016]本發(fā)明實(shí)施例提供一種多維度拆分的計(jì)算方法以及系統(tǒng),通過(guò)根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)洌桓鶕?jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑;根據(jù)所述遞推拓?fù)?,生成?jì)算任務(wù);根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù),計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果。與采用現(xiàn)有技術(shù)進(jìn)行多維度拆分計(jì)算時(shí),由于基于關(guān)系型數(shù)據(jù)庫(kù)的多個(gè)二維表進(jìn)行多維度拆分計(jì)算,計(jì)算復(fù)雜度較高,并且處理數(shù)據(jù)量較小相比,本發(fā)明實(shí)施例通過(guò)根據(jù)固化維度組合以及最優(yōu)固化維度組合的運(yùn)算路徑計(jì)算所述計(jì)算任務(wù),使得可以對(duì)海量數(shù)據(jù)進(jìn)行多維度拆分計(jì)算,從而降低計(jì)算復(fù)雜度。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0017]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1為本發(fā)明一個(gè)實(shí)施例提供的一種多維度拆分的計(jì)算方法的流程圖;
[0019]圖2為本發(fā)明一個(gè)實(shí)施例提供的遞推拓?fù)涫疽鈭D;
[0020]圖3為本發(fā)明另一個(gè)實(shí)施例提供的一種多維度拆分的計(jì)算方法的流程圖;
[0021]圖4為本發(fā)明另一個(gè)實(shí)施例提供的指標(biāo)的計(jì)算狀態(tài)的轉(zhuǎn)移示意圖;
[0022]圖5為本發(fā)明另一個(gè)實(shí)施例提供的列存儲(chǔ)的示意圖;
[0023]圖6為本發(fā)明另一個(gè)實(shí)施例提供的一種多維度拆分的計(jì)算系統(tǒng)的示意圖;
[0024]圖7為本發(fā)明另一個(gè)實(shí)施例提供的另一種多維度拆分的計(jì)算系統(tǒng)的示意圖。
【具體實(shí)施方式】
[0025]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0026]本發(fā)明實(shí)施例提供一種多維度拆分的計(jì)算方法,該方法的執(zhí)行主體可以為服務(wù)器,具體可以為多維度拆分系統(tǒng),該方法包括:
[0027]步驟101,根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)?,所述遞推拓?fù)溆删S度組合以及各維度組合之間的遞推路徑構(gòu)成,所述維度組合由各維度的屬性名稱(chēng)以及與所述屬性名稱(chēng)對(duì)應(yīng)的所述海量預(yù)處理數(shù)據(jù)中的數(shù)據(jù)構(gòu)成。
[0028]可選的,在生成遞推拓?fù)渲埃瑢⒔邮盏降暮A看幚頂?shù)據(jù)進(jìn)行預(yù)處理,從而獲得規(guī)范化的、適合進(jìn)行后續(xù)計(jì)算的海量預(yù)處理數(shù)據(jù)。
[0029]可選的,接收到的海量待處理數(shù)據(jù)可以為獲取的用戶(hù)一天的流水?dāng)?shù)據(jù),也可以為用戶(hù)預(yù)設(shè)時(shí)間段內(nèi)的流水?dāng)?shù)據(jù),預(yù)設(shè)時(shí)間段可以根據(jù)經(jīng)驗(yàn)設(shè)置,例如預(yù)設(shè)時(shí)間段可以為一周、8天等時(shí)間段。海量待處理數(shù)據(jù)可以為T(mén)B級(jí)海量待處理數(shù)據(jù)。
[0030]可選的,可以通過(guò)接口接收用戶(hù)上報(bào)的海量待處理數(shù)據(jù),或者還可以接收用戶(hù)通過(guò)文本文件的方式提供的海量待處理數(shù)據(jù)。
[0031]可選的,海量預(yù)處理數(shù)據(jù)可以包括用戶(hù)標(biāo)識(shí)以及數(shù)據(jù)來(lái)源等。根據(jù)海量預(yù)處理數(shù)據(jù)生成遞推拓?fù)鋾r(shí),可以根據(jù)海量預(yù)處理數(shù)據(jù)中的用戶(hù)標(biāo)識(shí)獲取用戶(hù)的相關(guān)信息,例如獲取用戶(hù)的地址、用戶(hù)的年齡、用戶(hù)性別等信息,可以根據(jù)海量預(yù)處理數(shù)據(jù)中的數(shù)據(jù)來(lái)源獲取用戶(hù)的登錄次數(shù)等信息。根據(jù)獲得的上述信息可以獲得維度組合,維度組合的各個(gè)維度的屬性名稱(chēng)即可以為用戶(hù)的地址、用戶(hù)的年齡、用戶(hù)性別、登錄次數(shù)等,屬性名稱(chēng)對(duì)應(yīng)的數(shù)據(jù)即為屬性值,例如,用戶(hù)的地址可以為杭州,用戶(hù)的年齡可以為30,用戶(hù)性別可以為女性,登錄次數(shù)可以為I次等。根據(jù)上述信息以及屬性的層級(jí)關(guān)系,可以生產(chǎn)遞推拓?fù)?。這里屬性的層級(jí)關(guān)系可以為屬性與屬性之間的關(guān)系,例如用戶(hù)的地址為杭州,可以將杭州歸結(jié)為江浙滬地區(qū),從而獲得一個(gè)高層的屬性,即江浙滬地區(qū)。
[0032]可選的,如圖2所示的遞推拓?fù)涫疽鈭D,圖中ABC為接收到的海量預(yù)處理數(shù)據(jù),其中,ABC可以為由三個(gè)維度構(gòu)成的維度組合(View),第二層中包括從View_ABC中獲取的View_AB以及View_AC兩個(gè)維度組合,第三層包括從View_AB中獲得View_A以及View_B,從View_AC中獲得的View_C。其中,維度組合之間的箭頭表示屬性之間的遞推路徑。
[0033]步驟102,根據(jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑。
[0034]預(yù)設(shè)固化策略用于指示固化維度組合的查詢(xún)數(shù)據(jù)來(lái)源。
[0035]固化維度組合即為預(yù)設(shè)的某些維度的組合,例如,預(yù)設(shè)的用戶(hù)的年齡、用戶(hù)的性另IJ、用戶(hù)的地址這三個(gè)維度的組合,或者,預(yù)設(shè)的用戶(hù)的年齡、用戶(hù)的性別這兩個(gè)維度的組人坐I=I 寸 O
[0036]最優(yōu)固化維度組合的運(yùn)算路徑可以為獲得需求的維度組合時(shí)計(jì)算代價(jià)最小的運(yùn)算路徑。
[0037]可選的,根據(jù)預(yù)設(shè)固化策略確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑時(shí),路徑端點(diǎn)的維度組合即可以為固化維度組合。
[0038]步驟103,根據(jù)所述遞推拓?fù)?,生成?jì)算任務(wù)。
[0039]可選的,根據(jù)遞推拓?fù)涞木S度組合以及維度組合之間的遞推路徑,生成包括各個(gè)維度組合的計(jì)算任務(wù)??梢岳斫獾?,計(jì)算任務(wù)即計(jì)算各維度組合,每一個(gè)維度對(duì)應(yīng)一個(gè)屬性。
[0040]步驟104,根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù),計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果。
[0041]可選的,計(jì)算所述計(jì)算任務(wù)時(shí),獲取確定的最優(yōu)固化維度組合的運(yùn)算路徑,然后可以根據(jù)最優(yōu)固化維度組合的運(yùn)算路徑中涉及的固化維度組合啟動(dòng)計(jì)算任務(wù),從而可以極大地減少維度組合的計(jì)算量??蛇x的,可以先計(jì)算高層維度組合(TopView),其中,TopView為從海量待處理數(shù)據(jù)中或者進(jìn)行預(yù)處理之后的處理數(shù)據(jù)中直接生成的維度組合,例如,附圖2中的View_AB以及View_AC為T(mén)opView。然后根據(jù)遞推路徑計(jì)算其他View。
[0042]本發(fā)明實(shí)施例提供一種多維度拆分的計(jì)算方法,通過(guò)根據(jù)接收到的海量待處理數(shù)據(jù),生成遞推拓?fù)?,所述遞推拓?fù)溆删S度組合以及各維度組合之間的遞推路徑構(gòu)成,所述維度組合由各維度的屬性名稱(chēng)以及與所述屬性名稱(chēng)對(duì)應(yīng)的所述海量待處理數(shù)據(jù)中的數(shù)據(jù)構(gòu)成;根據(jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑;根據(jù)所述遞推拓?fù)?,生成?jì)算任務(wù);根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù),計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果,從而實(shí)現(xiàn)可以對(duì)海量數(shù)據(jù)進(jìn)行多維度拆分計(jì)算,根據(jù)固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,計(jì)算所述計(jì)算任務(wù),使得降低計(jì)算復(fù)雜度。
[0043]本發(fā)明實(shí)施例提供一種多維度拆分的計(jì)算方法,該方法的執(zhí)行主體可以為服務(wù)器,具體可以為多維度拆分系統(tǒng),如圖3所示,該方法包括:
[0044]步驟301,接收海量待處理數(shù)據(jù)。
[0045]可選的,可以通過(guò)接口接收用戶(hù)上報(bào)的海量待處理數(shù)據(jù),或者還可以接收用戶(hù)通過(guò)文本文件的方式提供的海量待處理數(shù)據(jù)。
[0046]海量待處理數(shù)據(jù)可以為T(mén)B級(jí)海量待處理數(shù)據(jù)。
[0047]對(duì)本步驟中海量待處理數(shù)據(jù)的具體描述可以參見(jiàn)步驟101中的描述,在此不再
--贅述。
[0048]步驟302,對(duì)所述海量待處理數(shù)據(jù)進(jìn)行流水預(yù)處理,獲得海量預(yù)處理數(shù)據(jù),所述海量預(yù)處理數(shù)據(jù)為表示不同屬性的數(shù)據(jù)。
[0049]可選的,對(duì)所述海量待處理數(shù)據(jù)進(jìn)行流水預(yù)處理,可以獲得規(guī)范化的、便于后續(xù)計(jì)算的海量預(yù)處理數(shù)據(jù)。
[0050]本步驟包括:
[0051]A,根據(jù)所述海量待處理數(shù)據(jù)以及預(yù)設(shè)選擇預(yù)處理規(guī)則,確定與所述海量待處理數(shù)據(jù)對(duì)應(yīng)的預(yù)處理規(guī)則。
[0052]可選的,預(yù)設(shè)選擇預(yù)處理規(guī)則為指定海量待處理數(shù)據(jù)采用哪種預(yù)處理規(guī)則進(jìn)行處理的規(guī)則??蛇x的,海量待處理數(shù)據(jù)可以為接收到的用戶(hù)一天的數(shù)據(jù),此時(shí)可以采用預(yù)處理規(guī)則I進(jìn)行處理,預(yù)處理規(guī)則I可以為對(duì)海量待處理數(shù)據(jù)進(jìn)行非法字段過(guò)濾;海量待處理數(shù)據(jù)可以為接收到的用戶(hù)預(yù)設(shè)時(shí)間段的數(shù)據(jù),此時(shí)可以采用預(yù)設(shè)處理規(guī)則2進(jìn)行處理,預(yù)設(shè)處理規(guī)則2可以為先對(duì)海量待處理數(shù)據(jù)按照時(shí)間進(jìn)行分組,獲得用戶(hù)每一天的數(shù)據(jù),然后對(duì)分組后每一組數(shù)據(jù)進(jìn)行非法字段過(guò)濾。
[0053]B,根據(jù)所述預(yù)處理規(guī)則,對(duì)所述海量待處理數(shù)據(jù)進(jìn)行清洗處理,獲得第一處理數(shù)據(jù)。
[0054]可選的,根據(jù)上述描述的預(yù)處理規(guī)則對(duì)不同的海量待處理數(shù)據(jù)進(jìn)行清洗處理,SP對(duì)海量待處理數(shù)據(jù)中的非法字段過(guò)濾。
[0055]C,根據(jù)預(yù)設(shè)抽取字段規(guī)則,在所述第一處理數(shù)據(jù)中抽取多維度拆分所需的至少一個(gè)字段或者至少一個(gè)字段組合。
[0056]可選的,預(yù)設(shè)抽取字段規(guī)則可以為根據(jù)經(jīng)驗(yàn)設(shè)置的需要抽取的字段,即需要在第一處理數(shù)據(jù)中分別抽取需要的維度組合,例如,需要獲得用戶(hù)的性別、用戶(hù)的年齡的維度組合,或者需要獲得用戶(hù)的性別、用戶(hù)的地址的維度組合,則可以根據(jù)預(yù)設(shè)抽取字段規(guī)則,在第一處理數(shù)據(jù)中抽取用戶(hù)的性別、用戶(hù)的年齡這兩個(gè)字段,以及再第一處理數(shù)據(jù)中抽取用戶(hù)的性別、用戶(hù)的地址這兩個(gè)字段。
[0057]D,根據(jù)抽取的所述至少一個(gè)字段或者至少一個(gè)字段組合生成寬表,并將所述至少一個(gè)字段或者至少一個(gè)字段組合保存在所述寬表中。
[0058]寬表指以列存儲(chǔ)的形式存儲(chǔ)數(shù)據(jù)的表,即每一個(gè)字段占用寬表中的一列進(jìn)行存儲(chǔ)。
[0059]可選的,一個(gè)字段組合采用一個(gè)寬表存儲(chǔ),可以理解的,一個(gè)字段組合中不論有幾個(gè)字段,都采用一個(gè)寬表存儲(chǔ),例如抽取的字段組合為用戶(hù)的性別、用戶(hù)的年齡,則對(duì)應(yīng)的寬表中保存用戶(hù)的性別、用戶(hù)的年齡的數(shù)據(jù),抽取的字段組合為用戶(hù)的性別、用戶(hù)的地址,則對(duì)應(yīng)的寬表中保存用戶(hù)的性別、用戶(hù)的地址的數(shù)據(jù)。
[0060]E,將所述寬表中保存的所述至少一個(gè)字段或者至少一個(gè)字段組合進(jìn)行壓縮,獲得所述海量預(yù)處理數(shù)據(jù)。
[0061]可選的,為了減少保存寬表的空間,減少落地?cái)?shù)據(jù)量,則可以對(duì)寬表中保存的字段組合進(jìn)行壓縮,例如,可以采用輕量壓縮的方式進(jìn)行壓縮。其中,輕量壓縮指采用較小的壓縮比例壓縮數(shù)據(jù)。同樣的數(shù)據(jù)當(dāng)壓縮比例較大時(shí),壓縮后的數(shù)據(jù)的計(jì)算性能較差,即由于壓縮比例較大,后續(xù)處理壓縮后數(shù)據(jù)時(shí),需要解壓縮的時(shí)間較多,采用輕量壓縮后的數(shù)據(jù)的計(jì)算性能較好,因此優(yōu)選的,將所述寬表中保存的所述至少一個(gè)字段或者至少一個(gè)字段組合進(jìn)行輕量壓縮,獲得所述海量預(yù)處理數(shù)據(jù)。
[0062]進(jìn)一步可選的,如圖4所示的指標(biāo)計(jì)算狀態(tài)轉(zhuǎn)移示意圖,對(duì)海量待處理數(shù)據(jù)執(zhí)行預(yù)處理之后,如果預(yù)處理成功,則可以繼續(xù)后續(xù)操作,如果預(yù)處理失敗,則重新進(jìn)行預(yù)處理。當(dāng)進(jìn)行預(yù)處理的失敗次數(shù)達(dá)到預(yù)設(shè)閾值時(shí)還沒(méi)有成功,則結(jié)束操作,當(dāng)進(jìn)行預(yù)處理的失敗次數(shù)未達(dá)到預(yù)設(shè)閾值時(shí)預(yù)處理成功,則繼續(xù)后續(xù)操作。
[0063]步驟303,根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)洌鲞f推拓?fù)溆删S度組合以及各維度組合之間的遞推路徑構(gòu)成,所述維度組合由各維度的屬性名稱(chēng)以及與所述屬性名稱(chēng)對(duì)應(yīng)的所述海量預(yù)處理數(shù)據(jù)中的數(shù)據(jù)構(gòu)成。
[0064]可選的,本步驟與附圖1中步驟101相同,在此不再--贅述。
[0065]步驟304,根據(jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑。
[0066]可選的,本步驟與附圖1中步驟102相同,在此不再--贅述。
[0067]步驟305,根據(jù)所述遞推拓?fù)?,生成?jì)算任務(wù)。
[0068]可選的,本步驟與附圖1中步驟103相同,在此不再--贅述。
[0069]步驟306,根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)所述計(jì)算任務(wù),計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果。
[0070]可選的,所述根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù),包括:
[0071]獲取所述固化維度組合,并確定待計(jì)算的固化維度組合;根據(jù)所述待計(jì)算的固化維度組合,確定第一最優(yōu)固化維度組合的運(yùn)算路徑,所述最優(yōu)固化維度組合的運(yùn)算路徑包括所述第一最優(yōu)固化維度組合的運(yùn)算路徑;根據(jù)所述第一最優(yōu)固化維度組合的運(yùn)算路徑啟動(dòng)所述計(jì)算任務(wù)。
[0072]可選的,確定待計(jì)算的固化維度組合之前,從分布式數(shù)據(jù)庫(kù)中獲取配置表中的配置信息,此配置信息即為需要計(jì)算的固化維度組合,即待計(jì)算的固化維度組合。需要說(shuō)明的是,待計(jì)算的固化維度組合為獲取的固化維度組合中的至少一個(gè)維度組合。第一最優(yōu)固化維度組合的運(yùn)算路徑為與待計(jì)算的固化維度組合相關(guān)的最優(yōu)運(yùn)算路徑,即根據(jù)第一最優(yōu)固化維度組合的運(yùn)算路徑計(jì)算待計(jì)算的固化維度組合時(shí)計(jì)算代價(jià)最小。
[0073]可選的,計(jì)算所述計(jì)算任務(wù)時(shí),根據(jù)固化維度組合以及第一最優(yōu)固化維度組合的運(yùn)算路徑啟動(dòng)計(jì)算任務(wù),與現(xiàn)有技術(shù)中每次計(jì)算維度組合時(shí)都需要從原始流水?dāng)?shù)據(jù)中獲取數(shù)據(jù)進(jìn)行計(jì)算,本發(fā)明實(shí)施例采用的方案可以極大地減少維度組合的計(jì)算量??蛇x的,可以先計(jì)算高層維度組合(TopView),其中,TopView為從海量待處理數(shù)據(jù)中或者進(jìn)行預(yù)處理之后的處理數(shù)據(jù)中直接生成的維度組合,例如,附圖2中的View_AB以及View_AC為T(mén)opView。然后根據(jù)遞推路徑計(jì)算其他View。
[0074]具體的,根據(jù)所述第一最優(yōu)固化維度組合的運(yùn)算路徑啟動(dòng)所述計(jì)算任務(wù)時(shí),可以采用下述方法:
[0075]A,將所述第一最優(yōu)固化維度組合的運(yùn)算路徑中的所述待計(jì)算的固化維度組合按照路徑遞推關(guān)系進(jìn)行分組,獲得第一分組;例如,假設(shè)圖2所示的遞推拓?fù)錇榈谝蛔顑?yōu)固化維度組合的運(yùn)算路徑所在的遞推拓?fù)?,則將所述最優(yōu)固化維度組合的運(yùn)算路徑中的所述固化維度組合按照路徑遞推關(guān)系進(jìn)行分組,即為維度組合View_ABC可遞推View_AB和View_AC, View_AB可遞推View_A和View_B, View_AC可遞推View_C,這樣第一分組可以包括View_AB> View_AC、View_A、View_B> View_C 這五個(gè)子組。
[0076]B,當(dāng)所述第一分組中存在相同路徑遞推關(guān)系時(shí),合并所述第一分組中具有所述相同路徑遞推關(guān)系的固化維度組合,獲得第二分組;
[0077]可選的,第一分組中從View_ABC可遞推View_AB和View_AC,即 View_ABC為 View_AB和View_AC的共同父View,可以將View_AB和View_AC合并計(jì)算;同理,View_AB可遞推View_A和View_B,可在View_AB計(jì)算結(jié)束后,將View_A和View_B合并計(jì)算。這樣,第二分組可以包括View_AB和View_AC、View_A和View_B以及View_C這三個(gè)子組。
[0078]C,按照所述路徑遞推關(guān)系并行啟動(dòng)計(jì)算所述第二分組中的各個(gè)固化維度組合的所述計(jì)算任務(wù),多路獲得所述計(jì)算結(jié)果。
[0079]進(jìn)一步可選的,按照啟動(dòng)的所述計(jì)算任務(wù)進(jìn)行并行計(jì)算,多路獲得計(jì)算結(jié)果。
[0080]在計(jì)算各個(gè)固化維度組合時(shí),可以計(jì)算所需的維度,并從寬表中獲取相關(guān)列,按照固化維度組合指定的運(yùn)算邏輯選擇不同的算法進(jìn)行計(jì)算,可選的,在計(jì)算時(shí)可以支持多路合并、指標(biāo)值累加、指標(biāo)值去重累加等多種算法,在采用上述多種算法進(jìn)行計(jì)算時(shí),可以根據(jù)現(xiàn)有技術(shù)進(jìn)行計(jì)算,在此不再一一贅述。
[0081]可選的,父View生成后,將該父View可遞推的子View列表下發(fā),并進(jìn)行子View的計(jì)算,其中,子View列表為多個(gè)子View組成的列表,每個(gè)子View列表指從父View中獲取的相關(guān)列。在計(jì)算子View時(shí)可以從父View中獲取所需列,采用指定算法計(jì)算子View結(jié)果O
[0082]計(jì)算View時(shí),一次運(yùn)算可以涉及多個(gè)View,運(yùn)算的結(jié)果可以采用多路輸出。
[0083]可選的,本實(shí)施例根據(jù)固化維度組合以及優(yōu)固化維度組合的運(yùn)算路徑,計(jì)算所述計(jì)算任務(wù),使得整體計(jì)算所需的運(yùn)算資源較少,從而可以提高運(yùn)算速度。
[0084]進(jìn)一步可選的,如圖4所示的指標(biāo)計(jì)算狀態(tài)轉(zhuǎn)移示意圖,對(duì)執(zhí)行流水預(yù)處理成功之后的海量預(yù)處理數(shù)據(jù)啟動(dòng)計(jì)算任務(wù)的計(jì)算后,如果計(jì)算成功,則完成計(jì)算,結(jié)束操作。如果計(jì)算失敗,則可以重新從流水處理成功后的指標(biāo)狀態(tài)重新進(jìn)行計(jì)算。當(dāng)進(jìn)行計(jì)算的失敗次數(shù)達(dá)到預(yù)設(shè)閾值時(shí)還沒(méi)有計(jì)算成功,則計(jì)算失敗,結(jié)束操作,當(dāng)進(jìn)行計(jì)算的失敗次數(shù)未達(dá)到預(yù)設(shè)閾值時(shí)計(jì)算成功,則完成計(jì)算,結(jié)束操作。
[0085]步驟307,將所述多路獲得的所述計(jì)算結(jié)果,分別保存在對(duì)應(yīng)的列表中,所述一路計(jì)算結(jié)果對(duì)應(yīng)一個(gè)列表。
[0086]一路計(jì)算結(jié)果對(duì)應(yīng)一個(gè)列表,在本實(shí)施例中,落地的View表分表策略為根據(jù)ViewID (Identity,身份標(biāo)識(shí)號(hào)碼)進(jìn)行分表存儲(chǔ),即一個(gè)View計(jì)算的輸出結(jié)果保存在一個(gè)列表中。
[0087]步驟308,將保存在列表中的所述計(jì)算結(jié)果存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中,并對(duì)保存在列表中的所述計(jì)算結(jié)果中的關(guān)鍵維度組合保存在內(nèi)存中,所述關(guān)鍵維度組合包括用戶(hù)經(jīng)常查詢(xún)的維度組合或者用戶(hù)預(yù)設(shè)時(shí)間段內(nèi)使用的維度組合。
[0088]可選的,本實(shí)施例中將計(jì)算結(jié)果保存在分布式數(shù)據(jù)庫(kù)中,采用分布式文件系統(tǒng)的大表(Big Table)存儲(chǔ),即采用支持列存儲(chǔ)的方式存儲(chǔ)計(jì)算結(jié)果,分布式數(shù)據(jù)庫(kù)為數(shù)據(jù)分別存儲(chǔ)在計(jì)算機(jī)網(wǎng)絡(luò)中的不同臺(tái)計(jì)算機(jī)上的數(shù)據(jù)庫(kù),存儲(chǔ)的數(shù)據(jù)量較大,并且可以提供高效訪問(wèn)能力。需要說(shuō)明的是,當(dāng)采用支持列存儲(chǔ)的方式存儲(chǔ)計(jì)算結(jié)果時(shí),對(duì)于沒(méi)有數(shù)據(jù)的列則不占用存儲(chǔ)資源,即僅有數(shù)據(jù)的列占用存儲(chǔ)資源,與現(xiàn)有技術(shù)中存儲(chǔ)數(shù)據(jù)相比,可以節(jié)省大量存儲(chǔ)資源,用來(lái)存儲(chǔ)有效數(shù)據(jù)。
[0089]可選的,將關(guān)鍵維度組合保存在內(nèi)存中,可以提高查詢(xún)速度,增強(qiáng)用戶(hù)體驗(yàn)。
[0090]可選的,如圖5所示的列存儲(chǔ)示意圖,關(guān)鍵值(KEY)存儲(chǔ)數(shù)據(jù)日期和View的維度值,列存儲(chǔ)每個(gè)指標(biāo)對(duì)應(yīng)的指標(biāo)值,其中,數(shù)據(jù)日期即獲取用戶(hù)產(chǎn)生此數(shù)據(jù)的日期。例如,20130601_10_1_010表示數(shù)據(jù)產(chǎn)生日期為2013年6月I日,View的維度值分別為10、1、010,其中,第一個(gè)維度值可以為年齡的值,例如,年齡為10歲,第二個(gè)維度值可以為性別的值,例如,女性為1,男性為2,則表示此用戶(hù)為女性,第三個(gè)維度值可以為地址的值,例如,北京采用010表示,則當(dāng)前用戶(hù)的地址為北京,可選的,屬性采用哪些值表示可以預(yù)先設(shè)置好的。其中,101:200表示指標(biāo)ID_101的指標(biāo)值為200,例如,指標(biāo)可以為用戶(hù)活躍度,則當(dāng)前活躍的人數(shù)為200。102:108表示指標(biāo)ID_102的指標(biāo)值為108。
[0091]步驟309,根據(jù)用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求,判斷所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中是否保存有待查詢(xún)維度組合對(duì)應(yīng)的維度組合數(shù)據(jù)。
[0092]所述數(shù)據(jù)查詢(xún)請(qǐng)求中包括所述待查詢(xún)維度組合。
[0093]可選的,接收用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求,然后判斷分布式數(shù)據(jù)庫(kù)或者內(nèi)存中是否保存有待查詢(xún)維度組合對(duì)應(yīng)的維度組合數(shù)據(jù)。分布式數(shù)據(jù)庫(kù)中保存有各個(gè)固化維度組合,內(nèi)存中保存有關(guān)鍵固化維度組合,當(dāng)分布式數(shù)據(jù)庫(kù)或者內(nèi)存中保存有用戶(hù)請(qǐng)求的待查詢(xún)維度組合時(shí),則可以直接訪問(wèn)分布式數(shù)據(jù)庫(kù)或者內(nèi)存,從而可以直接獲得查詢(xún)結(jié)果。當(dāng)分布式數(shù)據(jù)庫(kù)或者內(nèi)存中未保存用戶(hù)請(qǐng)求的維度組合時(shí),則需要啟動(dòng)按需請(qǐng)求計(jì)算,即執(zhí)行步驟311。
[0094]步驟310,當(dāng)所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中保存有所述待查詢(xún)維度組合對(duì)應(yīng)的所述維度組合數(shù)據(jù)時(shí),則將所述數(shù)據(jù)查詢(xún)請(qǐng)求發(fā)送給所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存,并接收所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存發(fā)送的所述維度組合數(shù)據(jù)。
[0095]步驟311,當(dāng)所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中未保存所述待查詢(xún)維度組合對(duì)應(yīng)的所述維度組合數(shù)據(jù)時(shí),則合并預(yù)設(shè)時(shí)間段內(nèi)的至少一個(gè)用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求,并根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,批量啟動(dòng)維度組合計(jì)算的計(jì)算任務(wù),批量執(zhí)行所述維度組合計(jì)算的計(jì)算任務(wù),獲得計(jì)算結(jié)果。
[0096]可選的,為了提高計(jì)算速度,可以合并一段時(shí)間內(nèi)的數(shù)據(jù)查詢(xún)請(qǐng)求,進(jìn)行批量按需請(qǐng)求計(jì)算,預(yù)設(shè)時(shí)間段可以為3秒或者5秒等時(shí)間段。
[0097]進(jìn)一步的,在執(zhí)行批量按需請(qǐng)求計(jì)算時(shí),可以根據(jù)固化維度組合以及最優(yōu)固化維度組合的運(yùn)算路徑進(jìn)行計(jì)算,這樣可以提高按需View生成速度。
[0098]進(jìn)一步可選的,當(dāng)啟動(dòng)按需請(qǐng)求計(jì)算時(shí),獲得計(jì)算結(jié)果后將計(jì)算結(jié)果保存在列表中,并將列表保存在分布式數(shù)據(jù)庫(kù)中,或者保存在內(nèi)存中。
[0099]需要說(shuō)明的是,采用現(xiàn)有技術(shù)對(duì)多維組合結(jié)果采用數(shù)據(jù)分析系統(tǒng)分析數(shù)據(jù)時(shí),例如采用淘寶數(shù)據(jù)魔方、有夢(mèng)數(shù)據(jù)分析平臺(tái)等數(shù)據(jù)分析系統(tǒng)針對(duì)單維度查詢(xún)或者分析數(shù)據(jù),例如,分析預(yù)設(shè)年齡的活躍人數(shù),即分析活躍人數(shù)這個(gè)指標(biāo)時(shí),根據(jù)預(yù)設(shè)年齡這個(gè)維度進(jìn)行分析。采用本發(fā)明實(shí)施例提供的方法可以滿(mǎn)足用戶(hù)維度組合查詢(xún)需求的數(shù)據(jù),從而提高用戶(hù)體驗(yàn)。
[0100]本發(fā)明實(shí)施例提供一種多維度拆分的計(jì)算方法,通過(guò)將計(jì)算任務(wù)根據(jù)固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑進(jìn)行計(jì)算,并將計(jì)算結(jié)果保存在分布式數(shù)據(jù)庫(kù)或者內(nèi)存中,使得本發(fā)明實(shí)施例可以對(duì)海量數(shù)據(jù)進(jìn)行多維度拆分計(jì)算,從而降低計(jì)算復(fù)雜度,提聞訪問(wèn)能力。
[0101]本發(fā)明實(shí)施例提供一種多維度拆分的計(jì)算系統(tǒng),如圖6所示,該系統(tǒng)包括:運(yùn)算決策模塊601,運(yùn)算控制模塊602,維度組合生成模塊603 ;
[0102]所述運(yùn)算決策模塊601,用于根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)?,所述遞推拓?fù)溆删S度組合以及各維度組合之間的遞推路徑構(gòu)成,所述維度組合由各維度的屬性名稱(chēng)以及與所述屬性名稱(chēng)對(duì)應(yīng)的所述海量預(yù)處理數(shù)據(jù)中的數(shù)據(jù)構(gòu)成;
[0103]所述運(yùn)算決策模塊601,還用于根據(jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑;
[0104]運(yùn)算控制模塊602,用于根據(jù)所述遞推拓?fù)?,生成?jì)算任務(wù);
[0105]所述運(yùn)算控制模塊602,還用于根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù);
[0106]維度組合生成模塊603,用于計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果。
[0107]進(jìn)一步可選的,如圖7所示,所述系統(tǒng)還包括:流水預(yù)處理模塊604 ;
[0108]所述流水預(yù)處理模塊604,用于接收海量待處理數(shù)據(jù);以及,對(duì)所述海量待處理數(shù)據(jù)進(jìn)行流水預(yù)處理,獲得海量預(yù)處理數(shù)據(jù)。
[0109]可選的,接收到的海量待處理數(shù)據(jù)可以為獲取的用戶(hù)一天的流水?dāng)?shù)據(jù),也可以為用戶(hù)預(yù)設(shè)時(shí)間段內(nèi)的流水?dāng)?shù)據(jù),預(yù)設(shè)時(shí)間段可以根據(jù)經(jīng)驗(yàn)設(shè)置,例如預(yù)設(shè)時(shí)間段可以為一周、8天等時(shí)間段。海量待處理數(shù)據(jù)可以為T(mén)B級(jí)海量待處理數(shù)據(jù)。
[0110]可選的,可以通過(guò)接口接收用戶(hù)上報(bào)的海量待處理數(shù)據(jù),或者還可以接收用戶(hù)通過(guò)文本文件的方式提供的海量待處理數(shù)據(jù)。
[0111]進(jìn)一步可選的,所述流水預(yù)處理模塊,包括:選擇預(yù)處理規(guī)則子模塊6041,清洗子模塊6042,抽取子模塊6043,存儲(chǔ)模塊6044,壓縮模塊6045 ;
[0112]選擇預(yù)處理規(guī)則子模塊6041,用于根據(jù)所述海量待處理數(shù)據(jù)以及預(yù)設(shè)選擇預(yù)處理規(guī)則,確定與所述海量待處理數(shù)據(jù)對(duì)應(yīng)的預(yù)處理規(guī)則;可選的,預(yù)設(shè)選擇預(yù)處理規(guī)則為指定海量待處理數(shù)據(jù)采用哪種預(yù)處理規(guī)則進(jìn)行處理的規(guī)則。
[0113]清洗子模塊6042,用于根據(jù)所述預(yù)處理規(guī)則,對(duì)所述海量待處理數(shù)據(jù)進(jìn)行清洗處理,獲得第一處理數(shù)據(jù);可選的,根據(jù)上述描述的預(yù)處理規(guī)則對(duì)不同的海量待處理數(shù)據(jù)進(jìn)行清洗處理,即對(duì)海量待處理數(shù)據(jù)中的非法字段過(guò)濾。
[0114]抽取子模塊6043,用于根據(jù)預(yù)設(shè)抽取字段規(guī)則,在所述第一處理數(shù)據(jù)中抽取多維度拆分所需的至少一個(gè)字段或者至少一個(gè)字段組合;可選的,預(yù)設(shè)抽取字段規(guī)則可以為根據(jù)經(jīng)驗(yàn)設(shè)置的需要抽取的字段,即需要在第一處理數(shù)據(jù)中分別抽取需要的維度組合;
[0115]存儲(chǔ)模塊6044,用于根據(jù)抽取的所述至少一個(gè)字段或者至少一個(gè)字段組合生成寬表,并將所述至少一個(gè)字段或者至少一個(gè)字段組合保存在所述寬表中;
[0116]寬表指以列存儲(chǔ)的形式存儲(chǔ)數(shù)據(jù)的表,即每一個(gè)字段占用寬表中的一列進(jìn)行存儲(chǔ)。
[0117]壓縮模塊6045,用于將所述寬表中保存的所述至少一個(gè)字段或者至少一個(gè)字段組合進(jìn)行壓縮,獲得所述海量預(yù)處理數(shù)據(jù)。
[0118]可選的,所述壓縮模塊6045,用于:將所述寬表中保存的所述至少一個(gè)字段或者至少一個(gè)字段組合進(jìn)行輕量壓縮,獲得所述海量預(yù)處理數(shù)據(jù)。
[0119]進(jìn)一步可選的,如圖7所示,所述運(yùn)算控制模塊602根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù)時(shí),所述運(yùn)算控制模塊602包括:獲取子模塊6021,確定子模塊6022,運(yùn)算啟動(dòng)子模塊6023 ;
[0120]獲取子模塊6021,用于獲取所述固化維度組合;
[0121]確定子模塊6022,用于根據(jù)獲取的所述固化維度組合,確定待計(jì)算的固化維度組合;
[0122]所述確定子模塊6022,還用于根據(jù)所述待計(jì)算的固化維度組合,確定第一最優(yōu)固化維度組合的運(yùn)算路徑,所述最優(yōu)固化維度組合的運(yùn)算路徑包括所述第一最優(yōu)固化維度組合的運(yùn)算路徑;
[0123]運(yùn)算啟動(dòng)子模塊6023,用于根據(jù)所述第一最優(yōu)固化維度組合的運(yùn)算路徑啟動(dòng)所述計(jì)算任務(wù)。
[0124]進(jìn)一步可選的,所述運(yùn)算啟動(dòng)子模塊根據(jù)所述第一最優(yōu)固化維度組合的運(yùn)算路徑啟動(dòng)所述計(jì)算任務(wù)時(shí),所述運(yùn)算啟動(dòng)子模塊包括:分組單元,合并單元,啟動(dòng)單元;需要說(shuō)明的是,在附圖中不顯示運(yùn)算啟動(dòng)子模塊中包括的各個(gè)單元。
[0125]分組單元,用于將所述第一最優(yōu)固化維度組合的運(yùn)算路徑中的所述待計(jì)算的固化維度組合按照路徑遞推關(guān)系進(jìn)行分組,獲得第一分組;
[0126]合并單元,用于當(dāng)所述第一分組中存在相同路徑遞推關(guān)系時(shí),合并所述第一分組中具有所述相同路徑遞推關(guān)系的固化維度組合,獲得第二分組;
[0127]啟動(dòng)單元,用于按照所述路徑遞推關(guān)系并行啟動(dòng)計(jì)算所述第二分組中的各個(gè)固化維度組合的所述計(jì)算任務(wù),多路獲得所述計(jì)算結(jié)果。
[0128]可選的,所述維度組合生成模塊603,用于:按照啟動(dòng)的所述計(jì)算任務(wù)進(jìn)行并行計(jì)算,多路獲得計(jì)算結(jié)果。
[0129]進(jìn)一步可選的,如圖7所示,所述系統(tǒng),還包括:存儲(chǔ)模塊605 ;
[0130]按照啟動(dòng)的所述計(jì)算任務(wù)進(jìn)行并行計(jì)算,多路獲得計(jì)算結(jié)果之后,存儲(chǔ)模塊605,用于將所述多路獲得的所述計(jì)算結(jié)果,分別保存在對(duì)應(yīng)的列表中,所述一路計(jì)算結(jié)果對(duì)應(yīng)一個(gè)列表。
[0131]進(jìn)一步可選的,將所述多路獲得的所述計(jì)算結(jié)果,分別保存在對(duì)應(yīng)的列表中之后,所述存儲(chǔ)模塊605,還用于:將保存在列表中的所述計(jì)算結(jié)果存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中,并對(duì)保存在列表中的所述計(jì)算結(jié)果中的關(guān)鍵維度組合保存在內(nèi)存中,所述關(guān)鍵維度組合包括用戶(hù)經(jīng)常查詢(xún)的維度組合或者用戶(hù)預(yù)設(shè)時(shí)間段內(nèi)使用的維度組合。
[0132]可選的,將計(jì)算結(jié)果保存在分布式數(shù)據(jù)庫(kù)中,采用分布式文件系統(tǒng)的大表(BigTable)存儲(chǔ),即采用支持列存儲(chǔ)的方式存儲(chǔ)計(jì)算結(jié)果,分布式數(shù)據(jù)庫(kù)為數(shù)據(jù)分別存儲(chǔ)在計(jì)算機(jī)網(wǎng)絡(luò)中的不同臺(tái)計(jì)算機(jī)上的數(shù)據(jù)庫(kù),存儲(chǔ)的數(shù)據(jù)量較大,并且可以提供高效訪問(wèn)能力。需要說(shuō)明的是,當(dāng)采用支持列存儲(chǔ)的方式存儲(chǔ)計(jì)算結(jié)果時(shí),對(duì)于沒(méi)有數(shù)據(jù)的列則不占用存儲(chǔ)資源,即僅有數(shù)據(jù)的列占用存儲(chǔ)資源,與現(xiàn)有技術(shù)中存儲(chǔ)數(shù)據(jù)相比,可以節(jié)省大量存儲(chǔ)資源,用來(lái)存儲(chǔ)有效數(shù)據(jù)。
[0133]進(jìn)一步可選的,當(dāng)接收到用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求之后,所述運(yùn)算控制模塊602,還用于根據(jù)用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求,判斷所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中是否保存有待查詢(xún)維度組合對(duì)應(yīng)的維度組合數(shù)據(jù),所述數(shù)據(jù)查詢(xún)請(qǐng)求中包括所述待查詢(xún)維度組合;
[0134]所述運(yùn)算控制模塊602,還用于當(dāng)所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中保存有所述待查詢(xún)維度組合對(duì)應(yīng)的所述維度組合數(shù)據(jù)時(shí),則將所述數(shù)據(jù)查詢(xún)請(qǐng)求發(fā)送給所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存,并接收所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存發(fā)送的所述維度組合數(shù)據(jù);
[0135]所述運(yùn)算控制模塊602,還用于當(dāng)所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中未保存所述待查詢(xún)維度組合對(duì)應(yīng)的所述維度組合數(shù)據(jù)時(shí),則合并預(yù)設(shè)時(shí)間段內(nèi)的至少一個(gè)用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求,并根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,批量啟動(dòng)維度組合計(jì)算的計(jì)算任務(wù);
[0136]所述維度組合模塊603,還用于批量執(zhí)行所述維度組合計(jì)算的計(jì)算任務(wù),獲得計(jì)算結(jié)果。
[0137]進(jìn)一步可選的,所述系統(tǒng)還可以包括中控模塊,中控模塊負(fù)載子流程的串起,子流程的失敗重試、運(yùn)算告警等。
[0138]需要說(shuō)明的是,附圖6或附圖7所示裝置中,其各個(gè)模塊的具體實(shí)施過(guò)程以及各個(gè)模塊之間的信息交互等內(nèi)容,由于與本發(fā)明方法實(shí)施例基于同一發(fā)明構(gòu)思,可以參見(jiàn)方法實(shí)施例,在此不一一贅述。
[0139]本發(fā)明實(shí)施例提供一種多維度拆分的計(jì)算系統(tǒng),通過(guò)將計(jì)算任務(wù)根據(jù)固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑進(jìn)行計(jì)算,并將計(jì)算結(jié)果保存在分布式數(shù)據(jù)庫(kù)或者內(nèi)存中,使得本發(fā)明實(shí)施例可以對(duì)海量數(shù)據(jù)進(jìn)行多維度拆分計(jì)算,從而降低計(jì)算復(fù)雜度,提聞訪問(wèn)能力。
[0140]需說(shuō)明的是,以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
[0141]通過(guò)以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)專(zhuān)用硬件包括專(zhuān)用集成電路、專(zhuān)用CPU、專(zhuān)用存儲(chǔ)器、專(zhuān)用元器件等來(lái)實(shí)現(xiàn),但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤(pán),U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器、磁碟或者光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0142]本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于裝置和系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
[0143]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種多維度拆分的計(jì)算方法,其特征在于,包括: 根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)洌鲞f推拓?fù)溆删S度組合以及各維度組合之間的遞推路徑構(gòu)成,所述維度組合由各維度的屬性名稱(chēng)以及與所述屬性名稱(chēng)對(duì)應(yīng)的所述海量預(yù)處理數(shù)據(jù)中的數(shù)據(jù)構(gòu)成; 根據(jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑; 根據(jù)所述遞推拓?fù)?,生成?jì)算任務(wù); 根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù),計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)渲?,還包括: 接收海量待處理數(shù)據(jù); 對(duì)所述海量待處理數(shù)據(jù)進(jìn)行流水預(yù)處理,獲得海量預(yù)處理數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述對(duì)所述海量待處理數(shù)據(jù)進(jìn)行流水預(yù)處理,獲得海量預(yù)處理數(shù)據(jù),包括: 根據(jù)所述海量待處理數(shù)據(jù)以及預(yù)設(shè)選擇預(yù)處理規(guī)則,確定與所述海量待處理數(shù)據(jù)對(duì)應(yīng)的預(yù)處理規(guī)則; 根據(jù)所述預(yù)處理規(guī)則,對(duì)所述海量待處理數(shù)據(jù)進(jìn)行清洗處理,獲得第一處理數(shù)據(jù); 根據(jù)預(yù)設(shè)抽取字段規(guī)則,在所述第一處理數(shù)據(jù)中抽取多維度拆分所需的至少一個(gè)字段或者至少一個(gè)字段組合; 根據(jù)抽取的所述至少一個(gè)字段或者至少一個(gè)字段組合生成寬表,并將所述至少一個(gè)字段或者至少一個(gè)字段組合保存在所述寬表中; 將所述寬表中保存的所述至少一個(gè)字段或者至少一個(gè)字段組合進(jìn)行壓縮,獲得所述海量預(yù)處理數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所述寬表中保存的所述至少一個(gè)字段或者至少一個(gè)字段組合進(jìn)行壓縮,獲得所述海量預(yù)處理數(shù)據(jù),包括: 將所述寬表中保存的所述至少一個(gè)字段或者至少一個(gè)字段組合進(jìn)行輕量壓縮,獲得所述海量預(yù)處理數(shù)據(jù)。
5.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù),包括: 獲取所述固化維度組合,并確定待計(jì)算的固化維度組合; 根據(jù)所述待計(jì)算的固化維度組合,確定第一最優(yōu)固化維度組合的運(yùn)算路徑,所述最優(yōu)固化維度組合的運(yùn)算路徑包括所述第一最優(yōu)固化維度組合的運(yùn)算路徑; 根據(jù)所述第一最優(yōu)固化維度組合的運(yùn)算路徑啟動(dòng)所述計(jì)算任務(wù)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述第一最優(yōu)固化維度組合的運(yùn)算路徑啟動(dòng)所述計(jì)算任務(wù),包括: 將所述第一最優(yōu)固化維度組合的運(yùn)算路徑中的所述待計(jì)算的固化維度組合按照路徑遞推關(guān)系進(jìn)行分組,獲得第一分組; 當(dāng)所述第一分組中存在相同路徑遞推關(guān)系時(shí),合并所述第一分組中具有所述相同路徑遞推關(guān)系的固化維度組合,獲得第二分組; 按照所述路徑遞推關(guān)系并行啟動(dòng)計(jì)算所述第二分組中的各個(gè)固化維度組合的所述計(jì)算任務(wù),多路獲得所述計(jì)算結(jié)果。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果,包括: 按照啟動(dòng)的所述計(jì)算任務(wù)進(jìn)行并行計(jì)算,多路獲得計(jì)算結(jié)果。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述按照啟動(dòng)的所述計(jì)算任務(wù)進(jìn)行并行計(jì)算,多路獲得計(jì)算結(jié)果之后,還包括: 將所述多路獲得的所述計(jì)算結(jié)果,分別保存在對(duì)應(yīng)的列表中,所述一路計(jì)算結(jié)果對(duì)應(yīng)一個(gè)列表。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,在所述將所述多路獲得的所述計(jì)算結(jié)果,分別保存在對(duì)應(yīng)的列表中之后,還包括: 將保存在列表中的所述計(jì)算結(jié)果存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中,并對(duì)保存在列表中的所述計(jì)算結(jié)果中的關(guān)鍵維度組合保存在內(nèi)存中,所述關(guān)鍵維度組合包括用戶(hù)經(jīng)常查詢(xún)的維度組合或者用戶(hù)預(yù)設(shè)時(shí)間段內(nèi)使用的維度組合。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,在所述將保存在列表中的所述計(jì)算結(jié)果存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中,并對(duì)保存在列表中的所述計(jì)算結(jié)果中的關(guān)鍵維度組合保存在內(nèi)存中之后,還包括: 根據(jù)用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求,判斷所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中是否保存有待查詢(xún)維度組合對(duì)應(yīng)的維度組合數(shù)據(jù),所述數(shù)據(jù)查詢(xún)請(qǐng)求中包括所述待查詢(xún)維度組合; 當(dāng)所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中保存有所述待查詢(xún)維度組合對(duì)應(yīng)的所述維度組合數(shù)據(jù)時(shí),則將所述數(shù)據(jù)查詢(xún)請(qǐng)求發(fā)送給所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存,并接收所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存發(fā)送的所述維度組合數(shù)據(jù); 當(dāng)所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中未保存所述待查詢(xún)維度組合對(duì)應(yīng)的所述維度組合數(shù)據(jù)時(shí),則合并預(yù)設(shè)時(shí)間段內(nèi)的至少一個(gè)用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求,并根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,批量啟動(dòng)維度組合計(jì)算的計(jì)算任務(wù),批量執(zhí)行所述維度組合計(jì)算的計(jì)算任務(wù),獲得計(jì)算結(jié)果。
11.一種多維度拆分的計(jì)算系統(tǒng),其特征在于,包括:運(yùn)算決策模塊,運(yùn)算控制模塊,維度組合生成模塊; 所述運(yùn)算決策模塊,用于根據(jù)預(yù)處理后的海量預(yù)處理數(shù)據(jù),生成遞推拓?fù)?,所述遞推拓?fù)溆删S度組合以及各維度組合之間的遞推路徑構(gòu)成,所述維度組合由各維度的屬性名稱(chēng)以及與所述屬性名稱(chēng)對(duì)應(yīng)的所述海量預(yù)處理數(shù)據(jù)中的數(shù)據(jù)構(gòu)成; 所述運(yùn)算決策模塊,還用于根據(jù)預(yù)設(shè)固化策略,確定固化維度組合并確定構(gòu)成最優(yōu)固化維度組合的運(yùn)算路徑; 運(yùn)算控制模塊,用于根據(jù)所述遞推拓?fù)?,生成?jì)算任務(wù); 所述運(yùn)算控制模塊,還用于根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,啟動(dòng)計(jì)算任務(wù); 維度組合生成模塊,用于計(jì)算所述計(jì)算任務(wù),獲得計(jì)算結(jié)果。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述系統(tǒng),還包括: 流水預(yù)處理模塊,用于接收海量待處理數(shù)據(jù);以及,對(duì)所述海量待處理數(shù)據(jù)進(jìn)行流水預(yù)處理,獲得海量預(yù)處理數(shù)據(jù),所述海量預(yù)處理數(shù)據(jù)為表示不同屬性的數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,所述流水預(yù)處理模塊,包括: 選擇預(yù)處理規(guī)則子模塊,用于根據(jù)所述海量待處理數(shù)據(jù)以及預(yù)設(shè)選擇預(yù)處理規(guī)則,確定與所述海量待處理數(shù)據(jù)對(duì)應(yīng)的預(yù)處理規(guī)則; 清洗子模塊,用于根據(jù)所述預(yù)處理規(guī)則,對(duì)所述海量待處理數(shù)據(jù)進(jìn)行清洗處理,獲得第一處理數(shù)據(jù); 抽取子模塊,用于根據(jù)預(yù)設(shè)抽取字段規(guī)則,在所述第一處理數(shù)據(jù)中抽取多維度拆分所需的至少一個(gè)字段或者至少一個(gè)字段組合; 存儲(chǔ)模塊,用于根據(jù)抽取的所述至少一個(gè)字段或者至少一個(gè)字段組合生成寬表,并將所述至少一個(gè)字段或者至少一個(gè)字段組合保存在所述寬表中; 壓縮模塊,用于將所述寬表中保存的所述至少一個(gè)字段或者至少一個(gè)字段組合進(jìn)行壓縮,獲得所述海量預(yù)處理數(shù)據(jù)。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,所述壓縮模塊,用于: 將所述寬表中保存的所述至少一個(gè)字段或者至少一個(gè)字段組合進(jìn)行輕量壓縮,獲得所述海量預(yù)處理數(shù)據(jù)。
15.根據(jù)權(quán)利要求11-14中任一項(xiàng)所述的系統(tǒng),其特征在于,所述運(yùn)算控制模塊,包括: 獲取子模塊,用于獲取所述固化維度組合; 確定子模塊,用于根據(jù)獲取的所述固化維度組合,確定確定待計(jì)算的固化維度組合; 所述確定子模塊,還用于根據(jù)所述待計(jì)算的固化維度組合,確定第一最優(yōu)固化維度組合的運(yùn)算路徑,所述最優(yōu)固化維度組合的運(yùn)算路徑包括所述第一最優(yōu)固化維度組合的運(yùn)算路徑; 運(yùn)算啟動(dòng)子模塊,用于根據(jù)所述第一最優(yōu)固化維度組合的運(yùn)算路徑啟動(dòng)所述計(jì)算任務(wù)。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其特征在于,所述運(yùn)算啟動(dòng)子模塊,包括: 分組單元,用于將所述第一最優(yōu)固化維度組合的運(yùn)算路徑中的所述待計(jì)算的固化維度組合按照路徑遞推關(guān)系進(jìn)行分組,獲得第一分組; 合并單元,用于當(dāng)所述第一分組中存在相同路徑遞推關(guān)系時(shí),合并所述第一分組中具有所述相同路徑遞推關(guān)系的固化維度組合,獲得第二分組; 啟動(dòng)單元,用于按照所述路徑遞推關(guān)系并行啟動(dòng)計(jì)算所述第二分組中的各個(gè)固化維度組合的所述計(jì)算任務(wù),多路獲得所述計(jì)算結(jié)果。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于,所述維度組合生成模塊,用于: 按照啟動(dòng)的所述計(jì)算任務(wù)進(jìn)行并行計(jì)算,多路獲得計(jì)算結(jié)果。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其特征在于,所述系統(tǒng),還包括: 存儲(chǔ)模塊,用于將所述多路獲得的所述計(jì)算結(jié)果,分別保存在對(duì)應(yīng)的列表中,所述一路計(jì)算結(jié)果對(duì)應(yīng)一個(gè)列表。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其特征在于,所述存儲(chǔ)模塊,還用于: 將保存在列表中的所述計(jì)算結(jié)果存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中,并對(duì)保存在列表中的所述計(jì)算結(jié)果中的關(guān)鍵維度組合保存在內(nèi)存中,所述關(guān)鍵維度組合包括用戶(hù)經(jīng)常查詢(xún)的維度組合或者用戶(hù)預(yù)設(shè)時(shí)間段內(nèi)使用的維度組合。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其特征在于, 所述運(yùn)算控制模塊,還用于根據(jù)用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求,判斷所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中是否保存有待查詢(xún)維度組合對(duì)應(yīng)的維度組合數(shù)據(jù),所述數(shù)據(jù)查詢(xún)請(qǐng)求中包括所述待查詢(xún)維度組合; 所述運(yùn)算控制模塊,還用于當(dāng)所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中保存有所述待查詢(xún)維度組合對(duì)應(yīng)的所述維度組合數(shù)據(jù)時(shí),則將所述數(shù)據(jù)查詢(xún)請(qǐng)求發(fā)送給所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存,并接收所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存發(fā)送的所述維度組合數(shù)據(jù); 所述運(yùn)算控制模塊,還用于當(dāng)所述分布式數(shù)據(jù)庫(kù)或者內(nèi)存中未保存所述待查詢(xún)維度組合對(duì)應(yīng)的所述維度組合數(shù)據(jù)時(shí),則合并預(yù)設(shè)時(shí)間段內(nèi)的至少一個(gè)用戶(hù)發(fā)送的數(shù)據(jù)查詢(xún)請(qǐng)求,并根據(jù)所述固化維度組合以及所述最優(yōu)固化維度組合的運(yùn)算路徑,批量啟動(dòng)維度組合計(jì)算的計(jì)算任務(wù); 所述維度組合模塊,還用于批量執(zhí)行所述維度組合計(jì)算的計(jì)算任務(wù),獲得計(jì)算結(jié)果。
【文檔編號(hào)】G06F17/30GK104424251SQ201310381567
【公開(kāi)日】2015年3月18日 申請(qǐng)日期:2013年8月28日 優(yōu)先權(quán)日:2013年8月28日
【發(fā)明者】蔡馥晗, 李 浩, 武磊, 曾偉紀(jì) 申請(qǐng)人:騰訊科技(深圳)有限公司