国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種OLAP預(yù)計(jì)算模型、自動(dòng)建模方法及自動(dòng)建模系統(tǒng)與流程

      文檔序號(hào):11627749閱讀:341來(lái)源:國(guó)知局
      一種OLAP預(yù)計(jì)算模型、自動(dòng)建模方法及自動(dòng)建模系統(tǒng)與流程

      本發(fā)明涉及olap多維數(shù)據(jù)分析的技術(shù)領(lǐng)域,尤其涉及一種olap預(yù)計(jì)算模型、自動(dòng)建模方法及自動(dòng)建模系統(tǒng)。



      背景技術(shù):

      在信息化和數(shù)據(jù)化的時(shí)代,如何對(duì)數(shù)據(jù)進(jìn)行多維分析以進(jìn)行決策支持,是商務(wù)智能和數(shù)據(jù)挖掘領(lǐng)域的重要課題,olap(尤其是molap)就是為了解決這一問(wèn)題而產(chǎn)生的。

      一般情況下,數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)量較大,直接在大量數(shù)據(jù)上進(jìn)行多維聚合運(yùn)算需要耗費(fèi)大量的計(jì)算資源,以及過(guò)長(zhǎng)的查詢(xún)耗時(shí)。olap提供了一種基于預(yù)計(jì)算提高多維分析效率的解決方案,即通過(guò)實(shí)現(xiàn)一個(gè)“數(shù)據(jù)立方體”對(duì)數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)按不同的維度組合進(jìn)行預(yù)聚合,并把結(jié)果保存下來(lái);當(dāng)分析師進(jìn)行實(shí)際業(yè)務(wù)查詢(xún)時(shí),無(wú)需重新對(duì)數(shù)據(jù)執(zhí)行聚合運(yùn)算,而是直接讀取預(yù)計(jì)算結(jié)果,這使得對(duì)百萬(wàn)甚至上億數(shù)據(jù)規(guī)模的分析變得可能。

      olapcube(數(shù)據(jù)立方體)是數(shù)據(jù)倉(cāng)庫(kù)中對(duì)于多維分析數(shù)據(jù)模型的抽象,包含了多維分析中不同的維度組合,例如,下圖6所示中包含了4個(gè)維度,分別是time、item、location、supplier,這4個(gè)維度間不同的組合構(gòu)成olapcube中的不同節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)代表在這些維度組合下的度量聚合結(jié)果。當(dāng)用戶(hù)進(jìn)行多維分析時(shí),所選定的維度組合對(duì)應(yīng)cube中的一個(gè)點(diǎn),考量的數(shù)值就是節(jié)點(diǎn)背后的度量聚合結(jié)果。

      在常見(jiàn)的olap解決方案中,為了更加快速地對(duì)選定維度進(jìn)行分析,會(huì)對(duì)olapcube進(jìn)行物化,即提前通過(guò)預(yù)計(jì)算將olapcube上每個(gè)節(jié)點(diǎn)的度量進(jìn)行聚合,并把結(jié)果保存起來(lái)。當(dāng)業(yè)務(wù)分析人員執(zhí)行查詢(xún)時(shí),系統(tǒng)可以直接對(duì)預(yù)計(jì)算結(jié)果進(jìn)行返回。把o(n)級(jí)別的聚合運(yùn)算轉(zhuǎn)化成o(1)的結(jié)果查詢(xún),查詢(xún)效率的提高可想而知。

      olapcube還基于維度定義了維度的層級(jí)。例如year,month,day這三個(gè)維度之間存在著一種層級(jí)關(guān)系:year>month>day,這些層級(jí)關(guān)系往往可以和現(xiàn)有應(yīng)用中的概念進(jìn)行映射,方便分析師在數(shù)據(jù)挖掘系統(tǒng)中更加靈活地應(yīng)用。

      但是,在大數(shù)據(jù)多維分析場(chǎng)景中,數(shù)據(jù)規(guī)模往往在千億甚至萬(wàn)億級(jí)別,且維度數(shù)量過(guò)多、維度基數(shù)超大,存在維度爆炸的隱患。如果依然對(duì)所有維度組合的情況進(jìn)行預(yù)計(jì)算,一定會(huì)導(dǎo)致預(yù)計(jì)算時(shí)間過(guò)長(zhǎng)、結(jié)果數(shù)據(jù)量過(guò)大,這一方面增加了預(yù)計(jì)算和存儲(chǔ)成本,另一方面也給大量預(yù)計(jì)算結(jié)果的掃描帶來(lái)了挑戰(zhàn)。



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

      本發(fā)明所要解決的技術(shù)問(wèn)題是:目前的技術(shù)對(duì)于維度數(shù)量過(guò)多、維度基數(shù)超大的數(shù)據(jù)分析業(yè)務(wù),存在維度爆炸的隱患,并且預(yù)計(jì)算時(shí)間過(guò)長(zhǎng)、結(jié)果數(shù)據(jù)量過(guò)大,一方面增加了預(yù)計(jì)算和存儲(chǔ)成本,另一方面也給大量預(yù)計(jì)算結(jié)果的掃描帶來(lái)了挑戰(zhàn)。

      為解決上面的技術(shù)問(wèn)題,本發(fā)明提供了一種olap預(yù)計(jì)算模型,該預(yù)計(jì)算模型包括:維度模塊、聚合組模塊、度量模塊;所述的維度模塊包括普通維度單元和衍生維度單元;所述普通維度單元,用于對(duì)事實(shí)表上的字段進(jìn)行預(yù)計(jì)算;所述衍生維度單元,用于對(duì)維表上的主鍵進(jìn)行預(yù)計(jì)算,并記錄維表上的列和主鍵的映射關(guān)系;所述衍生維度單元中的衍生維度的維表主鍵和所述普通維度單元中的普通維度作為預(yù)計(jì)算維度,符合特定排列順序;所述聚合組模塊,用于將在維度模塊中預(yù)計(jì)算維度劃分成多個(gè)聚合組;所述度量模塊,用于按照維度模塊中所有預(yù)計(jì)算維度的組合聚合生成預(yù)計(jì)算結(jié)果。

      本發(fā)明的有益效果:通過(guò)增加衍生維度、聚合組等概念,對(duì)預(yù)計(jì)算維度進(jìn)行更加有效的組合,減少冗余計(jì)算和數(shù)據(jù)存儲(chǔ),具有更高的計(jì)算效率和更小的存儲(chǔ)占用,從而在大數(shù)據(jù)多維分析應(yīng)用中取得更好的效果。

      進(jìn)一步地,所述的聚合組模塊包括:必須維度單元、組合維度單元、層級(jí)維度單元、維數(shù)范圍單元;所述的必須維度單元,用于記錄包含某一特定維度a的所有維度組合;所述的組合維度單元,用于記錄包含某一特定組合維度ab的所有維度組合;所述的層級(jí)維度單元,用于記錄包含具有層級(jí)關(guān)系的某一特定組合維度abc的所有維度組合;所述維數(shù)范圍單元,用于記錄包含維度數(shù)量在一定范圍的所有維度組合;所述的聚合組模塊在將維度模塊中的所有預(yù)計(jì)算維度劃分成多個(gè)聚合組,同時(shí)保存維度模塊中的所有預(yù)計(jì)算維度,用于對(duì)不同聚合組之間的的多維查詢(xún)。

      上述進(jìn)一步的有益效果:本發(fā)明提出了聚合組概念,即把所有的預(yù)計(jì)算維度劃分成若干個(gè)聚合組,只在每一個(gè)聚合組內(nèi)部產(chǎn)生不同組合,不同聚合組之間不會(huì)交叉組合。此外,還會(huì)保留全維度的組合,用于應(yīng)對(duì)跨聚合組的多維查詢(xún)。根據(jù)業(yè)務(wù)間的依賴(lài)關(guān)系把相關(guān)的維度劃分到同一個(gè)聚合組,就可以有效去除無(wú)意義的維度組合,降低了預(yù)計(jì)算代價(jià)。

      進(jìn)一步地,所述的衍生維度單元中包括:衍生維度,所述的衍生維度是維度基數(shù)與主鍵基數(shù)近似相等的維度。

      上述進(jìn)一步的有益效果:衍生維度本身并不會(huì)參與進(jìn)行預(yù)計(jì)算,而是對(duì)維表主鍵進(jìn)行預(yù)計(jì)算。此外,還把維表鏡像保存下來(lái),用于記錄衍生維度列和主鍵的映射關(guān)系。因?yàn)榫S表的記錄比較固定,且數(shù)據(jù)量往往不大,所以在查詢(xún)時(shí),可以快速查找維表鏡像進(jìn)行衍生維度和主鍵值的轉(zhuǎn)換,再根據(jù)外鍵值查詢(xún)維表鏡像以找到度的值。當(dāng)維表中設(shè)置了多個(gè)衍生維度,實(shí)際上只增加了一個(gè)預(yù)計(jì)算維度,實(shí)現(xiàn)了降維。

      本發(fā)明還涉及一種基于olap預(yù)計(jì)算模型的自動(dòng)建模方法,該方法包括如下步驟:

      s1,根據(jù)用戶(hù)給定的數(shù)據(jù)模型和數(shù)據(jù)源進(jìn)行數(shù)據(jù)統(tǒng)計(jì),得到數(shù)據(jù)統(tǒng)計(jì)結(jié)果;

      s2,根據(jù)用戶(hù)所給定的數(shù)據(jù)模型以及目標(biāo)查詢(xún)進(jìn)行查詢(xún)預(yù)演,確定業(yè)務(wù)模型;

      s3,對(duì)樣例進(jìn)行查詢(xún)預(yù)演,并收集查詢(xún)統(tǒng)計(jì);

      s4,基于s2中的業(yè)務(wù)模型以及s1中數(shù)據(jù)統(tǒng)計(jì)結(jié)果,進(jìn)行物理建模,并定義預(yù)計(jì)算模型的維度、度量、聚合組;

      s5,基于s3中的查詢(xún)統(tǒng)計(jì)對(duì)s4中進(jìn)行物理建模后的模型進(jìn)行調(diào)整,得到業(yè)務(wù)建模結(jié)果;

      s6,對(duì)s5中的業(yè)務(wù)建模進(jìn)行優(yōu)化調(diào)整,得到預(yù)計(jì)算模型。

      本發(fā)明的有益效果:通過(guò)本發(fā)明的方法解決大數(shù)據(jù)場(chǎng)景下的數(shù)據(jù)爆炸問(wèn)題,提高查詢(xún)效率,同時(shí)通過(guò)智能化手段提高生產(chǎn)效率,另外,自動(dòng)建模方法運(yùn)用到基于apachekylin的大數(shù)據(jù)分析平臺(tái)上驗(yàn)證,通過(guò)自動(dòng)建模創(chuàng)建的cube(預(yù)計(jì)算模型)在百億數(shù)據(jù)規(guī)模上依然能夠保證秒級(jí)的查詢(xún)相應(yīng)時(shí)間,并保證10倍以?xún)?nèi)的膨脹率,有效降低了apachekylin用戶(hù)的學(xué)習(xí)難度和試錯(cuò)成本,優(yōu)化了用戶(hù)體驗(yàn)。

      進(jìn)一步地,所述s4中的物理建模包括:維度設(shè)置、度量設(shè)置、聚合組設(shè)置。

      進(jìn)一步地,所述的維度設(shè)置包括:普通維度設(shè)置和衍生維度設(shè)置,計(jì)算每一個(gè)維度的f(i)值,如果f(i)小于指定閥值,則設(shè)置為第i個(gè)維度為衍生維度,否則設(shè)置為普通維度;其中,定義函數(shù)f(i)=cd(col_i)/cd(pk),其中cd(col_i)是第i個(gè)維度的基數(shù),cd(pk)是主鍵基數(shù)。衍生維度主鍵和普通維度作為預(yù)計(jì)算維度,根據(jù)基數(shù)按從大到小順序排列。

      進(jìn)一步地,所述的聚合組設(shè)置,該聚合組設(shè)置的規(guī)則為:設(shè)置維數(shù)范圍最小值、最大值為特定默認(rèn)值;當(dāng)cd(i)等于1,則設(shè)置該維度為必須維度;當(dāng)cd(i)*cd(j)大于或等于cd(i,j),則設(shè)置第i維度和第j維度為一組組合維度;當(dāng)cd(j)等于cd(i,j),則設(shè)置第i維度、第j維度為一組層級(jí)維度;其中,定義函數(shù)cd(i)是第i個(gè)維度的基數(shù);第i維度、第j維度為層級(jí)關(guān)系。

      進(jìn)一步地,所述的s5中的進(jìn)行調(diào)整,其調(diào)整包括:預(yù)計(jì)算維度順序的調(diào)整和聚合組的調(diào)整。

      進(jìn)一步地,所述的預(yù)計(jì)算維度順序的調(diào)整,該預(yù)計(jì)算順序的調(diào)整規(guī)則為:定義score(i)=wp*cd(i)+wb*f(i)/f,則依據(jù)score(i)的值按照從大到小順序?qū)λ蓄A(yù)計(jì)算維度進(jìn)行排序;其中,定義f(i)為第i維度在查詢(xún)中作為過(guò)濾條件的次數(shù),f為查詢(xún)統(tǒng)計(jì)中的過(guò)濾條件總數(shù),定義wp為物理建模權(quán)重,wb為業(yè)務(wù)建模權(quán)重,cd(i)為第i維度的基數(shù)。

      進(jìn)一步地,所述聚合組的調(diào)整,該聚合組的調(diào)整的規(guī)則為:定義score(i)=wp*cd(i)+wb*p(i)/p,如果score(i)等于1,則設(shè)置第i維度為必須維度;定義score(i,j)=wp*cd(i)*cd(j)/cd(i,j)+wb*p(i,j)/p,如果第i維度和第j維度的score值大于設(shè)定閾值,則設(shè)置第i維度和第j維度為一個(gè)組合維度,其中,定義p(i)為第i維度在查詢(xún)中出現(xiàn)的次數(shù),p為樣例個(gè)數(shù),定義wp為物理建模權(quán)重,wb為業(yè)務(wù)建模權(quán)重,cd(i)為第i維度的基數(shù);定義scorejoint(i,j)=score(i)*score(j),如果scorejoint(i,j)小于特定閾值,則將第i組組合維度和第j組組合維度合并為一組組合維度。定義max為查詢(xún)統(tǒng)計(jì)結(jié)果中單次查詢(xún)最大維度數(shù),定義w為特定值的維數(shù)膨脹系數(shù),則設(shè)置維數(shù)范圍的最大值為max*w。

      上述進(jìn)一步的有益效果:物理建模和業(yè)務(wù)建模的平衡十分重要。如果物理建模權(quán)重過(guò)高,會(huì)導(dǎo)致模型泛化能力較強(qiáng),但對(duì)于目標(biāo)sql的查詢(xún)性能可能無(wú)法做到最優(yōu);如果業(yè)務(wù)建模權(quán)重過(guò)高,會(huì)導(dǎo)致模型過(guò)擬合,僅對(duì)于目標(biāo)sql能取得最優(yōu)查詢(xún)性能,但對(duì)目標(biāo)sql之外的查詢(xún)無(wú)法保證最優(yōu)性能。因此,本發(fā)明的方法能夠有效地避免這些問(wèn)題的出現(xiàn),提高模型的準(zhǔn)確性。

      本發(fā)明還涉及一種基于olap預(yù)計(jì)算模型的自動(dòng)建模系統(tǒng),該系統(tǒng)包括:數(shù)據(jù)統(tǒng)計(jì)模塊、業(yè)務(wù)模型模塊、查詢(xún)統(tǒng)計(jì)模塊、建模建立模塊;數(shù)據(jù)統(tǒng)計(jì)模塊,用于根據(jù)用戶(hù)給定的數(shù)據(jù)模型和數(shù)據(jù)源進(jìn)行數(shù)據(jù)統(tǒng)計(jì),得到數(shù)據(jù)統(tǒng)計(jì)結(jié)果;業(yè)務(wù)模型模塊,用于根據(jù)用戶(hù)所給定的數(shù)據(jù)模型以及目標(biāo)查詢(xún)進(jìn)行查詢(xún)預(yù)演,確定業(yè)務(wù)模型;查詢(xún)統(tǒng)計(jì)模塊,用于對(duì)樣例進(jìn)行查詢(xún)預(yù)演,并收集查詢(xún)統(tǒng)計(jì);建模建立模塊,用于根據(jù)數(shù)據(jù)統(tǒng)計(jì)模塊、業(yè)務(wù)模型模塊、查詢(xún)統(tǒng)計(jì)模塊得到業(yè)務(wù)建模的結(jié)果。

      附圖說(shuō)明

      圖1為本發(fā)明的一種olap預(yù)計(jì)算模型的結(jié)構(gòu)示意圖;

      圖2為本發(fā)明的一種基于olap預(yù)計(jì)算模型的自動(dòng)建模方法的流程圖;

      圖3為本發(fā)明的實(shí)施例衍生維度原理的示意圖;

      圖4為本發(fā)明的實(shí)施例聚合組規(guī)則示意圖;

      圖5為本發(fā)明的一種基于olap預(yù)計(jì)算模型的自動(dòng)建模系統(tǒng)的示意圖;

      圖6為本發(fā)明現(xiàn)有技術(shù)中的維度組合示意圖。

      具體實(shí)施方式

      以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。

      實(shí)施例1

      如圖1所示的,本發(fā)明的一種olap預(yù)計(jì)算模型,該預(yù)計(jì)算模型包括:維度模塊、聚合組模塊、度量模塊;所述的維度模塊包括:普通維度單元和衍生維度單元;所述普通維度單元,用于對(duì)事實(shí)表上的字段進(jìn)行預(yù)計(jì)算;所述的衍生維度單元,用于對(duì)維表上的主鍵進(jìn)行預(yù)計(jì)算,并記錄維表上的列和主鍵的映射關(guān)系;衍生維度的維表主鍵和普通維度作為預(yù)計(jì)算維度,符合特定排列順序;所述的聚合組模塊,用于將在維度模塊中計(jì)算得到的多個(gè)預(yù)計(jì)算維度劃分成多個(gè)聚合組;所述度量模塊,用于按照維度模塊中的所有預(yù)計(jì)算維度組合聚合生成預(yù)計(jì)算結(jié)果。

      衍生維度

      維表包含了某一維度的詳細(xì)信息。也就是說(shuō),維表上很多列往往和維表主鍵有著緊密的映射關(guān)系。如圖3所示的,以時(shí)間維表為例,維表主鍵cal_dt代表以日為單位的日期,維表列week_beg_dt代表主鍵日期所在周的起始日,維表列month_beg_dt代表主鍵日期所在月的起始日。如果對(duì)這些維度都進(jìn)行預(yù)計(jì)算,那么這3個(gè)維度就會(huì)產(chǎn)生8種維度組合。但是,如果只對(duì)cal_dt進(jìn)行預(yù)計(jì)算,而當(dāng)查詢(xún)需要week_beg_dt和month_beg_dt時(shí)通過(guò)映射關(guān)系把維度值轉(zhuǎn)換成cal_dt的值,就可以?xún)H需要把cal_dt參與預(yù)計(jì)算組合,這樣只會(huì)產(chǎn)生2種維度組合,最終節(jié)省了75%的預(yù)計(jì)算代價(jià)。

      為了實(shí)現(xiàn)這種方案,本發(fā)明提出了衍生維度的概念。衍生維度來(lái)源于維表,而且衍生維度本身并不會(huì)參與進(jìn)行預(yù)計(jì)算,而是對(duì)維表主鍵進(jìn)行預(yù)計(jì)算。此外,還需要把維表鏡像保存下來(lái),用于記錄衍生維度列和主鍵的映射關(guān)系。因?yàn)榫S表的記錄比較固定,且數(shù)據(jù)量往往不大,所以在查詢(xún)時(shí),可以快速查找維表鏡像進(jìn)行衍生維度和主鍵值的轉(zhuǎn)換。再根據(jù)外鍵值查詢(xún)維表鏡像以找到度的值。當(dāng)維表中設(shè)置了多個(gè)衍生維度,實(shí)際上只增加了一個(gè)預(yù)計(jì)算維度,實(shí)現(xiàn)了降維。

      預(yù)計(jì)算維度順序

      在一般的查詢(xún)引擎中,對(duì)于給定的維度組合,位于組合前端的維度,在作為查詢(xún)過(guò)濾條件時(shí),查詢(xún)性能比位于末端的維度高。因此,把業(yè)務(wù)模型中經(jīng)常作為過(guò)濾條件的維度放置在組合前端會(huì)提供查詢(xún)效率。此外,高基數(shù)維度放置在組合前端也有助于大幅減小數(shù)據(jù)掃描和計(jì)算代價(jià),縮短查詢(xún)時(shí)間。

      聚合組

      在實(shí)際的多維分析場(chǎng)景中,并不是所有的維度組合都是有意義的。例如,供貨商維度和網(wǎng)站流量維度并不會(huì)經(jīng)常同時(shí)出現(xiàn)在多維度分析的案例中,如果依然對(duì)這種利用率極低的維度組合進(jìn)行預(yù)計(jì)算是較為浪費(fèi)的。

      本發(fā)明提出了聚合組概念,即把所有的預(yù)計(jì)算維度劃分成若干個(gè)聚合組,只在每一個(gè)聚合組內(nèi)部產(chǎn)生不同組合,不同聚合組之間不會(huì)交叉組合。此外,還會(huì)保留全維度的組合,用于應(yīng)對(duì)跨聚合組的多維查詢(xún)。根據(jù)業(yè)務(wù)間的依賴(lài)關(guān)系把相關(guān)的維度劃分到同一個(gè)聚合組,就可以有效去除無(wú)意義的維度組合,降低了預(yù)計(jì)算代價(jià)。

      在同一個(gè)聚合組內(nèi)部,維度間往往還存在一些關(guān)系。例如,某些維度幾乎出現(xiàn)在所有的分析查詢(xún)中,導(dǎo)致那些不包含該維度的維度組合使用率極低;某些維度總是同時(shí)出現(xiàn)在查詢(xún)中,導(dǎo)致他們單獨(dú)出現(xiàn)的維度組合使用率極低;某些維度存在層級(jí)關(guān)系,導(dǎo)致子維度單獨(dú)出現(xiàn)的維度組合使用率極低;一次查詢(xún)所使用的維度數(shù)量是有限的,導(dǎo)致高維數(shù)維度組合使用率極低。為了解決這些問(wèn)題,本發(fā)明為一個(gè)聚合組定義了四種規(guī)則:必須維度規(guī)則、層級(jí)維度規(guī)則、組合維度規(guī)則、維數(shù)范圍規(guī)則。其中,必須維度規(guī)則指的是某維度會(huì)出現(xiàn)在當(dāng)前聚合組的每一種組合當(dāng)中,即去除不包含必須維度的維度組合;組合維度規(guī)則指定若干組維度,每一組的維度會(huì)同時(shí)在維度組合中出現(xiàn),即單獨(dú)出現(xiàn)的組合被去除;層級(jí)維度規(guī)則也指定若干組維度,每組的維度間需要存在層級(jí)關(guān)系,如地域(國(guó)家、省、市)、時(shí)間(年、月、日)等,生成最終的維度組合時(shí)會(huì)舍棄所有的孤兒子樹(shù)。如圖4所示的,聚合組規(guī)則,a、b、c為三個(gè)維度,其中a為必須維度,a和b組合一起為組合維度,a>b>c設(shè)置為層級(jí)維度。維數(shù)范圍規(guī)則指定一個(gè)最大值和最小值,即維度數(shù)量不在最小值到最大值范圍間的組合被去除。

      實(shí)施例2

      如圖2所示的,本發(fā)明的一種基于olap預(yù)計(jì)算模型的自動(dòng)建模方法,該方法包括如下步驟:

      s1,根據(jù)用戶(hù)給定的數(shù)據(jù)模型和數(shù)據(jù)源進(jìn)行數(shù)據(jù)統(tǒng)計(jì),得到數(shù)據(jù)統(tǒng)計(jì)結(jié)果;

      s2,根據(jù)用戶(hù)所給定的數(shù)據(jù)模型以及目標(biāo)查詢(xún)進(jìn)行查詢(xún)預(yù)演,確定業(yè)務(wù)模型;

      s3,對(duì)樣例進(jìn)行查詢(xún)預(yù)演,并收集查詢(xún)統(tǒng)計(jì);

      s4,基于s2中的業(yè)務(wù)模型以及s1中數(shù)據(jù)統(tǒng)計(jì)結(jié)果,進(jìn)行物理建模,并定義預(yù)計(jì)算模型的維度、度量、聚合組;

      s5,基于s3中的查詢(xún)統(tǒng)計(jì)對(duì)s4中進(jìn)行物理建模后的模型進(jìn)行調(diào)整,得到業(yè)務(wù)建模結(jié)果;

      s6,對(duì)s5中的業(yè)務(wù)建模進(jìn)行優(yōu)化調(diào)整,得到預(yù)計(jì)算模型。

      通過(guò)上述的方法解決大數(shù)據(jù)場(chǎng)景下的數(shù)據(jù)爆炸問(wèn)題,提高查詢(xún)效率,同時(shí)通過(guò)智能化手段提高生產(chǎn)效率,另外,自動(dòng)建模方法運(yùn)用到基于apachekylin的大數(shù)據(jù)分析平臺(tái)上驗(yàn)證,通過(guò)自動(dòng)建模創(chuàng)建的cube(預(yù)計(jì)算模型)在百億數(shù)據(jù)規(guī)模上依然能夠保證秒級(jí)的查詢(xún)相應(yīng)時(shí)間,并保證10倍以?xún)?nèi)的膨脹率,有效降低了apachekylin用戶(hù)的學(xué)習(xí)難度和試錯(cuò)成本,優(yōu)化了用戶(hù)體驗(yàn)。

      如圖5所示的,本發(fā)明自動(dòng)建模的技術(shù)方案總體構(gòu)架圖,整個(gè)架構(gòu)以預(yù)計(jì)算模型為目標(biāo)輸出,具體包含模型的維度(包含普通維度和衍生維度)、度量(預(yù)計(jì)算列及其算子)、聚合組等。因此,自動(dòng)建模的工作就是以數(shù)據(jù)模型、數(shù)據(jù)統(tǒng)計(jì)特性、樣例等作為輸入,選擇合適的維度列及維度類(lèi)型,添加所需的度量及預(yù)計(jì)算算子,并設(shè)置合理的聚合組。

      數(shù)據(jù)統(tǒng)計(jì)

      對(duì)模型涉及的所有源數(shù)據(jù)表進(jìn)行統(tǒng)計(jì),可以為建模提供精確的數(shù)據(jù)支撐。尤其是維度的基數(shù),通過(guò)基數(shù)可以預(yù)估一個(gè)維度對(duì)預(yù)計(jì)算結(jié)果的膨脹度。此外,很多olap系統(tǒng)會(huì)對(duì)維度編碼以節(jié)省存儲(chǔ)空間,了解列值的最大長(zhǎng)度和數(shù)據(jù)類(lèi)型有助于選擇合適的編碼方式。因此,自動(dòng)建模之前需要對(duì)源數(shù)據(jù)表統(tǒng)計(jì)列的基數(shù)、極值、長(zhǎng)度極值,以及數(shù)據(jù)采樣。

      在數(shù)據(jù)倉(cāng)庫(kù)中,數(shù)據(jù)模型定義好了表間關(guān)系和維度范疇,提供了預(yù)計(jì)算模型的樣板。數(shù)據(jù)模型(datamodel)是數(shù)據(jù)特征的抽象,是數(shù)據(jù)庫(kù)管理的教學(xué)形式框架。數(shù)據(jù)庫(kù)系統(tǒng)中用以提供信息表示和操作手段的形式構(gòu)架。數(shù)據(jù)模型包括數(shù)據(jù)庫(kù)數(shù)據(jù)的結(jié)構(gòu)部分、數(shù)據(jù)庫(kù)數(shù)據(jù)的操作部分和數(shù)據(jù)庫(kù)數(shù)據(jù)的約束條件。數(shù)據(jù)(data)是描述事物的符號(hào)記錄。模型(model)是現(xiàn)實(shí)世界的抽象。事實(shí)上,數(shù)據(jù)模型上很多列之間有著很強(qiáng)的相關(guān)性,如一個(gè)訂單的配送時(shí)間和下單時(shí)間,這兩列的值往往符合相似的分布特征。在預(yù)計(jì)算建模階段,可以利用這種相關(guān)性特征,恰當(dāng)?shù)卦O(shè)置聚合組規(guī)則,以解決維度災(zāi)難問(wèn)題。因此,自動(dòng)建模之前需要對(duì)數(shù)據(jù)模型上列與列的相關(guān)性進(jìn)行統(tǒng)計(jì)。

      查詢(xún)預(yù)演

      首先,本發(fā)明需要一個(gè)sql查詢(xún)預(yù)演引擎,基于用戶(hù)給定的數(shù)據(jù)模型,執(zhí)行樣例sql。本發(fā)明中的樣例是指以前在進(jìn)行sql的計(jì)算時(shí),有得到的一些數(shù)據(jù)模板,這個(gè)引擎并不返回任何有意義的查詢(xún)結(jié)果,而是在查詢(xún)過(guò)程中對(duì)查詢(xún)計(jì)劃的分析結(jié)果進(jìn)行整理和統(tǒng)計(jì),主要包括:

      生成業(yè)務(wù)模型:數(shù)據(jù)模型定義了業(yè)務(wù)分析的最大范疇,但實(shí)際的分析場(chǎng)景往往只關(guān)注數(shù)據(jù)模型的局部,本發(fā)明稱(chēng)之為業(yè)務(wù)模型。業(yè)務(wù)模型包含實(shí)際參與查詢(xún)的維度和度量計(jì)算因子,也是初始化預(yù)計(jì)算模型的基礎(chǔ)。

      統(tǒng)計(jì)維度用途:在sql中,一個(gè)維度列主要用途是filter和groupby。這一步將統(tǒng)計(jì)每一個(gè)維度作為filter和groupby的次數(shù)。此外也統(tǒng)計(jì)了維度間兩兩同時(shí)出現(xiàn)的次數(shù),用于從業(yè)務(wù)角度推測(cè)列與列的相關(guān)性。

      物理建模

      這一步是本發(fā)明的核心步驟。業(yè)務(wù)模型包含了業(yè)務(wù)分析所需的所有維度和度量,定義了預(yù)計(jì)算建模的基礎(chǔ)。這一步基于各項(xiàng)數(shù)據(jù)統(tǒng)計(jì),在業(yè)務(wù)模型的基礎(chǔ)上進(jìn)行建模,按照?qǐng)?zhí)行順序,主要包括以下流程:

      維度設(shè)置:維表上的維度列有兩種類(lèi)型可選:普通維度和衍生維度。其中,維度基數(shù)與主鍵基數(shù)相當(dāng)?shù)木S度適合作為衍生維度。定義函數(shù)f(i)=cd(col_i)/cd(pk),其中cd(col_i)是第i個(gè)維度的基數(shù),cd(pk)是主鍵基數(shù)。計(jì)算每一個(gè)維度的f(i)值,如果f(i)小于指定閥值,就設(shè)置第i個(gè)維度為衍生維度,否則設(shè)為普通維度。衍生維度主鍵和普通維度作為預(yù)計(jì)算維度,根據(jù)基數(shù)按從大到小順序排列。

      度量設(shè)置:經(jīng)過(guò)查詢(xún)預(yù)演,所有預(yù)計(jì)算需求已經(jīng)統(tǒng)計(jì)在業(yè)務(wù)模型當(dāng)中。直接基于業(yè)務(wù)模型的度量集合生成預(yù)計(jì)算度量即可。

      聚合組設(shè)置:為了簡(jiǎn)化操作,默認(rèn)把所有列添加到一個(gè)聚合組中。再根據(jù)聚合組中維度特性設(shè)置聚合組規(guī)則。定義函數(shù)cd(i)是第i個(gè)維度的基數(shù),對(duì)所有維度進(jìn)行如下檢查:

      當(dāng)cd(i)≈1,則設(shè)置該維度為必須維度。

      當(dāng)cd(i)*cd(j)>>cd(i,j),則設(shè)置第i維度和第j維度為一組組合維度。

      當(dāng)cd(j)≈cd(i,j),則設(shè)置第i維度、第j維度為一組層級(jí)維度,層級(jí)關(guān)系為:第i維度、第j維度。

      如果第i維度和第j維度同時(shí)是數(shù)據(jù)模型上表間join條件,且不參與其他表間join條件,則設(shè)置第i維度和第j維度為一組組合維度。

      當(dāng)cd(i)小于定義的閾值,則添加到組合維度候選組。最后將維度候選組劃分為多個(gè)組合維度組,并保證每組的基數(shù)乘積在設(shè)定范圍內(nèi)。

      對(duì)于維數(shù)范圍規(guī)則,設(shè)置維數(shù)范圍最小值、最大值為特定默認(rèn)值。

      業(yè)務(wù)建模

      這一步以樣例sql為主要依據(jù),對(duì)物理建模給出的模型進(jìn)行調(diào)整,以期優(yōu)化目標(biāo)sql的查詢(xún)性能、收縮存儲(chǔ)用量。但是,過(guò)度采用業(yè)務(wù)建模會(huì)使模型出現(xiàn)過(guò)擬合現(xiàn)象。因此,本發(fā)明設(shè)置權(quán)重來(lái)平衡物理建模和業(yè)務(wù)建模的結(jié)果。在本小節(jié)涉及的數(shù)學(xué)公式中,定義wp為物理建模權(quán)重,wb為業(yè)務(wù)建模權(quán)重,cd(i)為第i維度的基數(shù)。模型調(diào)整的主要過(guò)程如下:

      調(diào)整聚合組規(guī)則:目標(biāo)sql中維度使用次數(shù)及維度間的共存關(guān)系可以用來(lái)調(diào)整聚合組的規(guī)則。定義p(i)為第i維度在查詢(xún)中出現(xiàn)的次數(shù),p為樣例個(gè)數(shù),依照以下規(guī)則:

      定義score(i)=wp*cd(i)+wb*p(i)/p,如果score(i)≈1,則考慮設(shè)置第i維度為必須維度;

      定義score(i,j)=wp*cd(i)*cd(j)/cd(i,j)+wb*p(i,j)/p,如果第i維度和第j維度的score值大于設(shè)定閾值,則考慮設(shè)置第i維度和第j維度為一個(gè)組合維度;定義scorejoint(i,j)=score(i)*score(j),如果scorejoint(i,j)小于特定閾值,則將第i組組合維度和第j組組合維度合并為一組組合維度。

      定義max為查詢(xún)統(tǒng)計(jì)結(jié)果中單次查詢(xún)最大維度數(shù),定義w為特定值的維數(shù)膨脹系數(shù),則設(shè)置維數(shù)范圍的最大值為max*w。

      定義score(i)=wp*cd(i)+wb*f(i)/f,則依據(jù)score(i)的值按照從大到小順序?qū)λ蓄A(yù)計(jì)算維度進(jìn)行排序;其中,定義f(i)為第i維度在查詢(xún)中作為過(guò)濾條件的次數(shù),f為查詢(xún)統(tǒng)計(jì)中的過(guò)濾條件總數(shù),定義wp為物理建模權(quán)重,wb為業(yè)務(wù)建模權(quán)重,cd(i)為第i維度的基數(shù)。

      物理建模和業(yè)務(wù)建模的平衡十分重要。如果物理建模權(quán)重過(guò)高,會(huì)導(dǎo)致模型泛化能力較強(qiáng),但對(duì)于目標(biāo)sql的查詢(xún)性能可能無(wú)法做到最優(yōu);如果業(yè)務(wù)建模權(quán)重過(guò)高,會(huì)導(dǎo)致模型過(guò)擬合,僅對(duì)于目標(biāo)sql能取得最優(yōu)查詢(xún)性能,但對(duì)目標(biāo)sql之外的查詢(xún)無(wú)法保證最優(yōu)性能。因此,在實(shí)際應(yīng)用當(dāng)中,需要根據(jù)實(shí)際需求設(shè)定建模方法的權(quán)重。

      實(shí)施例3

      如圖5所示的,本發(fā)明的一種olap預(yù)計(jì)算模型的自動(dòng)建模系統(tǒng),該系統(tǒng)包括:數(shù)據(jù)統(tǒng)計(jì)模塊、業(yè)務(wù)模型模塊、查詢(xún)統(tǒng)計(jì)模塊、建模建立模塊;數(shù)據(jù)統(tǒng)計(jì)模塊,用于根據(jù)用戶(hù)給定的數(shù)據(jù)模型和數(shù)據(jù)源進(jìn)行數(shù)據(jù)統(tǒng)計(jì),得到數(shù)據(jù)統(tǒng)計(jì)結(jié)果;業(yè)務(wù)模型模塊,用于根據(jù)用戶(hù)所給定的數(shù)據(jù)模型以及樣例進(jìn)行查詢(xún)預(yù)演,確定業(yè)務(wù)模型;查詢(xún)統(tǒng)計(jì)模塊,用于對(duì)樣例進(jìn)行查詢(xún)預(yù)演,并收集查詢(xún)統(tǒng)計(jì);建模建立模塊,用于根據(jù)數(shù)據(jù)統(tǒng)計(jì)模塊、業(yè)務(wù)模型模塊、查詢(xún)統(tǒng)計(jì)模塊得到業(yè)務(wù)建模的結(jié)果。

      在本說(shuō)明書(shū)中,對(duì)上述術(shù)語(yǔ)的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說(shuō)明書(shū)中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。

      以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1