專利名稱:一種統(tǒng)計查詢方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,更具體地說,涉及一種統(tǒng)計查詢方法。
背景技術(shù):
在通過分布式數(shù)據(jù)庫進(jìn)行統(tǒng)計查詢時,一般的運(yùn)行方式為客戶端把查詢請求下發(fā)到各服務(wù)器中,由各服務(wù)器上的服務(wù)進(jìn)程返回滿足條件并已經(jīng)初步聚集的統(tǒng)計數(shù)據(jù)傳輸給客戶端;客戶端在收到各服務(wù)器傳輸?shù)降臄?shù)據(jù)后,通過進(jìn)行進(jìn)一步的聚集,以及動態(tài)列轉(zhuǎn)置、信息擴(kuò)展等處理,然后生成用戶所需的數(shù)據(jù)并進(jìn)行顯示。由于在分布式環(huán)境下,數(shù)據(jù)分散在多個服務(wù)器中,所以通過分布式數(shù)據(jù)庫進(jìn)行統(tǒng)計查詢通常要對已存儲的數(shù)據(jù)進(jìn)行匯總、行列轉(zhuǎn)置、數(shù)值翻譯或行間合并等處理后才能生成報表,其中,再在進(jìn)行數(shù)據(jù)匯總時,客戶端需要將所有服務(wù)器中的所需的數(shù)據(jù)全部收集后再進(jìn)行匯總。這樣,需要由服務(wù)器傳輸大量的數(shù)據(jù)至客戶端,從而使資源有限的客戶端承擔(dān)了大量的數(shù)據(jù)交互計算工作,從而使得統(tǒng)計查詢?nèi)蝿?wù)的運(yùn)行效率和性能低下?,F(xiàn)有技術(shù)中,為了解決統(tǒng)計查詢?nèi)蝿?wù)的運(yùn)行效率和性能低下的問題,有一種方式為采用數(shù)據(jù)庫互聯(lián)SQL技術(shù),但是,這種方式更加適用于實現(xiàn)簡單的查詢,復(fù)雜的統(tǒng)計查詢需要多步的處理才能完成,而且,SQL語言無法實現(xiàn)行間合并以及行列轉(zhuǎn)置等處理,需要復(fù)雜的程序邏輯來完成,所以無法進(jìn)行高效的統(tǒng)計查詢。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實施例提供一種統(tǒng)計查詢方法,以實現(xiàn)高效的統(tǒng)計查詢的目的。本發(fā)明實施例是這樣實現(xiàn)的一種統(tǒng)計查詢方法,包括獲取統(tǒng)計查詢請求;將所述統(tǒng)計查詢請求所包括的單元模式進(jìn)行模式解析,將單元模式劃分為事前計算邏輯、聚合計算和事后計算邏輯;為統(tǒng)計查詢過程中接收數(shù)據(jù)和所述事前計算邏輯分配單獨(dú)的計算線程進(jìn)行運(yùn)算, 同時,為聚合計算分配單獨(dú)的計算線程進(jìn)行運(yùn)算生成聚合結(jié)果集;所有所述聚合計算完成后,所述事后計算邏輯根據(jù)所述聚合結(jié)果集生成統(tǒng)計查詢結(jié)果。優(yōu)選的,在本發(fā)明實施例中,所述事前計算邏輯用于對數(shù)據(jù)源記錄進(jìn)行適配處理, 以形成聚合所需的數(shù)據(jù)記錄結(jié)構(gòu)。優(yōu)選的,在本發(fā)明實施例中,所述事前計算邏輯包括讀取原始數(shù)據(jù)、事前過濾、選擇列、字段變換和字段擴(kuò)展中的一種或任意組合。優(yōu)選的,在本發(fā)明實施例中,所述事后計算邏輯用于對聚合結(jié)果集的記錄進(jìn)行處理。優(yōu)選的,在本發(fā)明實施例中,所述事后計算邏輯包括事后過濾、字段翻譯、結(jié)果排序、top-n處理。優(yōu)選的,在本發(fā)明實施例中,所述聚合計算包括多級聚合計算。優(yōu)選的,在本發(fā)明實施例中,所述聚合結(jié)果集為多個。優(yōu)選的,在本發(fā)明實施例中,所述事后計算邏輯根據(jù)所述聚合結(jié)果集生成統(tǒng)計查詢結(jié)果具體為對多個聚合結(jié)果同時計算。從上述技術(shù)方案可以看出,在本發(fā)明實施例中,通過將單元模式劃分為事前計算邏輯、聚合計算和事后計算邏輯;然后,同時為統(tǒng)計查詢過程中接收數(shù)據(jù)和事前計算邏輯, 以及,聚合計算分配單獨(dú)的計算線程進(jìn)行運(yùn)算生成聚合結(jié)果集;最后在所有聚合計算完成后,事后計算邏輯根據(jù)聚合結(jié)果集生成統(tǒng)計查詢結(jié)果。由于在本發(fā)明實施例中,單元模式包括了所有所需的通用算法和固定的邏輯等,可以滿足各種統(tǒng)計查詢業(yè)務(wù)的需求,所以可以完成諸如行間合并和行列轉(zhuǎn)置等處理;此外,通過本發(fā)明實施例,可以在作為后臺的服務(wù)器端完成全部的數(shù)據(jù)處理操作,而作為前臺的客戶端只需要提交統(tǒng)計查詢請求和顯示最終結(jié)果即可,不但減少了前臺和后臺之間的數(shù)據(jù)交互,提高了高統(tǒng)計查詢的效率,而且,還減少了前臺的數(shù)據(jù)處理操作,由于作為前臺的客戶端一般數(shù)據(jù)處理能力較弱,所以減少前臺的數(shù)據(jù)處理操作也會提高統(tǒng)計查詢的整體效率。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例中所述統(tǒng)計查詢的步驟示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。為了實現(xiàn)成本較低、且可以使獲得的評估結(jié)果準(zhǔn)確反映移動數(shù)據(jù)網(wǎng)絡(luò)用戶體驗質(zhì)量,本發(fā)明實施例提供一種統(tǒng)計查詢方法,如圖1所示,包括步驟S11、獲取統(tǒng)計查詢請求;通過作為前臺的客戶端,用戶可以根據(jù)需求設(shè)定統(tǒng)計查詢請求;作為后臺的服務(wù)器端則會接收該統(tǒng)計查詢請求。S12、將統(tǒng)計查詢請求所包括的單元模式進(jìn)行模式解析,將單元模式劃分為事前計算邏輯、聚合計算和事后計算邏輯;在通過前臺發(fā)起的統(tǒng)計查詢請求邏輯中,包含了聚合結(jié)果描述聚合維度、指標(biāo)字段的描述等。這些描述都遵循固定的規(guī)則,通過對這些規(guī)則進(jìn)行概括提煉,形成一些固定的模式,包括字段計算的模式和聚合計算模式等,這些固定的模式即為單元模式;在本發(fā)明實施例中,單元模式包括了所有所需的通用算法和固定的邏輯等,可以滿足各種統(tǒng)計查詢業(yè)務(wù)的需求,可以完成諸如行間合并和行列轉(zhuǎn)置等處理。在統(tǒng)計查詢實例形成時,如果選擇某些單元模式,就選擇了這些單元模式所暗含的模式語義,即計算規(guī)則。通過字段模式列表,可以告知后臺這些字段的求值語義,通過聚合模式列表,可以告知后臺聚合結(jié)果集的組織方式。單元模式在設(shè)計時,大都只限定它們作用于某個單元性的算法邏輯,這為邏輯表達(dá)的動態(tài)生成提供了良好的基礎(chǔ),對統(tǒng)計結(jié)果邏輯的表達(dá)就是適用一個個單元模式的過程。每個單元化的模式實例都有模式輸入?yún)?shù),也有模式的輸出參數(shù),這些參數(shù)都是字段。某個單元模式的輸出就是另外的單元模式的輸入,從而使模式實例之間有依賴關(guān)系。 這種依賴關(guān)系決定了字段的計算時序,也是判斷邏輯表達(dá)是否完整一致的準(zhǔn)則。每個單元模式,都暗含著在某一個或者某幾個統(tǒng)計計算時段(具體的,可以是包括事前計算、聚合計算和事后計算三個統(tǒng)計計算時段)中存在一些單元性的邏輯。例如,模式語義“該字段是從數(shù)據(jù)源某個字段而來,它在聚合運(yùn)算中只能作為維度”。此模式語義暗含著事前計算時,它和數(shù)據(jù)源的某個字段的對應(yīng)關(guān)系,以及,聚合運(yùn)算時,它是維度鍵值。 即,每一種定義的單元模式,都在其語義中暗含著它的計算時序。這是形成計算執(zhí)行計劃的基礎(chǔ)之一。綜上所述,模式分析的過程,就是解釋各個單元模式,以各單元模式之間的依存關(guān)系和各單元模式的執(zhí)行時序為準(zhǔn)則劃分這些單元模式中的邏輯,具體的,可以劃分為事前計算邏輯、聚合計算和事后計算邏輯。具體的,在本發(fā)明實施例中,聚合結(jié)果集可以為多個。 聚合計算可以包括多級聚合計算,具體內(nèi)容可以包括COUNT、SUM、MAX、MIN、AVG等匯總操作。在本發(fā)明實施中,多級聚合計算關(guān)聯(lián)的實現(xiàn)主要是借助hash算法,形成諸如表1 至表3實例的父子統(tǒng)計結(jié)果集、以及父子索引關(guān)聯(lián)機(jī)制表1為主統(tǒng)計A,是關(guān)于diml,dim2, sum(indexl)的聚合結(jié)果集。表2為主統(tǒng)計A的記錄鍵到子統(tǒng)計B的記錄鍵之間的hash索引表。表3為子統(tǒng)計B,是關(guān)于diml,dim2, dim3, sum(indexl)的聚合結(jié)果。兩個結(jié)果集通過從主統(tǒng)計A的記錄鍵到子統(tǒng)計B的記錄鍵之間的hash索引完成, 這樣可以從主統(tǒng)計A的某條記錄快速索引到它的子記錄而子記錄則可以通過自身攜帶的父記錄鍵直接找到父記錄。表1 StatA
權(quán)利要求
1.一種統(tǒng)計查詢方法,其特征在于,包括 獲取統(tǒng)計查詢請求;將所述統(tǒng)計查詢請求所包括的單元模式進(jìn)行模式解析,將單元模式劃分為事前計算邏輯、聚合計算和事后計算邏輯;為統(tǒng)計查詢過程中接收數(shù)據(jù)和所述事前計算邏輯分配單獨(dú)的計算線程進(jìn)行運(yùn)算,同時,為聚合計算分配單獨(dú)的計算線程進(jìn)行運(yùn)算生成聚合結(jié)果集;所有所述聚合計算完成后,所述事后計算邏輯根據(jù)所述聚合結(jié)果集生成統(tǒng)計查詢結(jié): O
2.根據(jù)權(quán)利要求1所述統(tǒng)計查詢方法,其特征在于,所述事前計算邏輯用于對數(shù)據(jù)源記錄進(jìn)行適配處理,以形成聚合所需的數(shù)據(jù)記錄結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述統(tǒng)計查詢方法,其特征在于,所述事前計算邏輯包括讀取原始數(shù)據(jù)、事前過濾、選擇列、字段變換和字段擴(kuò)展中的一種或任意組合。
4.根據(jù)權(quán)利要求1所述統(tǒng)計查詢方法,其特征在于,所述事后計算邏輯用于對聚合結(jié)果集的記錄進(jìn)行處理。
5.根據(jù)權(quán)利要求4所述統(tǒng)計查詢方法,其特征在于,所述事后計算邏輯包括事后過濾、 字段翻譯、結(jié)果排序、top-n處理。
6.根據(jù)權(quán)利要求1所述統(tǒng)計查詢方法,其特征在于,所述聚合計算包括多級聚合計算。
7.根據(jù)權(quán)利要求1所述統(tǒng)計查詢方法,其特征在于,所述聚合結(jié)果集為多個。
8.根據(jù)權(quán)利要求7所述統(tǒng)計查詢方法,其特征在于,所述事后計算邏輯根據(jù)所述聚合結(jié)果集生成統(tǒng)計查詢結(jié)果具體為對多個聚合結(jié)果同時計算。
全文摘要
本實施例公開了一種統(tǒng)計查詢方法,包括獲取統(tǒng)計查詢請求;將統(tǒng)計查詢請求所包括的單元模式進(jìn)行模式解析,將單元模式劃分為事前計算邏輯、聚合計算和事后計算邏輯;為統(tǒng)計查詢過程中接收數(shù)據(jù)和所述事前計算邏輯分配單獨(dú)的計算線程進(jìn)行運(yùn)算,同時,為聚合計算分配單獨(dú)的計算線程進(jìn)行運(yùn)算生成聚合結(jié)果集;所有聚合計算完成后,事后計算邏輯根據(jù)所述聚合結(jié)果集生成統(tǒng)計查詢結(jié)果。本發(fā)明實施例中,由作為后臺完成全部的數(shù)據(jù)處理操作,而前臺只需要提交統(tǒng)計查詢請求和顯示最終結(jié)果即可,不但減少了前臺和后臺之間的數(shù)據(jù)交互,還減少了前臺的數(shù)據(jù)處理操作,從而提高了統(tǒng)計查詢的整體效率。
文檔編號G06F17/30GK102323942SQ20111025742
公開日2012年1月18日 申請日期2011年9月1日 優(yōu)先權(quán)日2011年9月1日
發(fā)明者賈林, 馬立斌 申請人:北京中創(chuàng)信測科技股份有限公司