1.冰山立方體的相關概念
部分物化的立方體成為冰山立方體,其中部分物化所使用的標准或最小閾值稱為最小支持度閾值或簡稱為最小支持度。
冰山立方體SQL查詢語句:
conpute cube sales_ice as
select month,city,customer_group,count(*) from salesinfo
cube by month,city,customer_group having count(*)>=min
其中,cube by表示對給定維所有可能的自己形成聚集,having子句指定約束條件,在這里如果沒有having子句,該例則得到完全立方體。
2.入閉覆蓋與閉單元
目的:進一步系統的壓縮數據立方體;
原理:對於某個立方體,由於在其他維固定的情況下,某一個或多個維上的數值為空,從而導致是否對該維聚集,度量值都不變,為了減少存儲空間,不多次存儲相同的度量值(進一步減少預計算的立方體數)。其中,對於最底層的立方體稱為閉立方體。
閉單元的特點:在閉單元中,用*替換其中對應維上的非*值,度量值不變。如果將它們看為一個家族,則閉單元是該家族中,*值最少的一個。即在該家族中,不存在替換閉單元中的*值,切度量值不變的單元。
3.數據立方體計算的一般策略
1.排序,三列和分組。對維屬性進行排序,三列和分組。其中的關鍵在於,對共享一組相同維值的元祖進行聚集,共享聚集計算。同樣共享排序,共享划分在多個立方體之間。
2.同時聚集和共享中間結果.關鍵在於分治,然后合並中間結果。而不是從基本事實表計算較高層的聚集。
3.當存在多個子女方體時,由最小的子女聚集 。例如我可以通過年份銷量或天銷量來計算總銷量,則選用年份來聚集。
4.可以使用先檢驗,剪枝方法有效的計算冰山立方體。如果給定單元不滿足最小支持度,則它的特殊化更不能滿足。特殊化是指將該單元中的*用非*替換。
5.完全立方體的多維數組聚集
計算策略所需注意的問題:
(1)盡量減少塊反復調入內存的次數。
(2)盡量利用較少的內存空間完成計算。
因為要減少塊調入調出內存的次數就要緩存中間的計算結果,又因為數據立方體有多維數據,所以塊的計算順序,決定聚集的順序(滿足問題1),從而決定計算所需的內存大小。
難點一:內存大小的計算:
一般情況下,一般先從基數小的維開始聚集。在本例中設A=40,B=400,C=4000,則先聚集A,計算2-D面BC.然后是AC,最后是AB.
因為計算剛開始的四個塊1,2,3,4就可以得到BC面的第一塊,並且之后每連續的四個塊一組得到下一個BC面的塊,則在計算BC面時只需要緩沖BC面一個塊的大小100*1000就可以,之后計算的16次均重復利用此內存塊。
因為只有在調入塊13的時候才可以計算得AC面的一塊,則前面的12塊都應該得到緩存,所以在計算AC面的時候,緩存的結果大小為AC面的一行,即40*1000;
因為只有調入第49塊的時候才可以計算AB面,則前面計算結果均需保存,所需內存應為AB整個平面的面積,即40*400.
所以在此次計算中所需的內存為:100*1000+40*1000+40*400。
6.多維數組聚集計算冰山立方體的缺點:
因為該計算方法從基本方體開始計算,逐步向上得到更加泛化的方體,所以不能通過先驗剪枝的方法進行優化。
7.數組多維聚集相對於ROLAP(基於關系記錄的)的優勢:
(1)數組結構不需要空間來存放搜索碼;
(2)使用數組直接尋址,比其基於關鍵字的尋址策略快;
(3)不直接使用表進行計算立方體,而是用數組計算立方體,然后再將結果轉換成表,更加快速。