天天看點

【資料立方cube】資料立方

一、資料立方體的基本概念

資料立方體是多元資料庫的基本結構,并作為在多元資料庫上定義的所有操作符的輸入輸出基本機關。将它定義為一個四元組<d,m,a,f>,這四個元件分别表示資料立方體的特征:

1. n 個維的集合d={d1 ,d2,。。。 ,dn },其中每個di 為從維域中抽取的維名。

2. k 個度量的集合m={ m1 ,m2,。。。 ,mn },其中每個mi 為從度量域中抽取的度量名。

3. 維名集合與度量名集合是不相交的,即d∩m=。

4. t 個屬性的集合a={a1, a2,。。。at},其中每個ai 為從維域中抽取的屬性名。

5. 一對多映射f:d→a,即每個維存在一個對應的屬性集合。與不同維對應的屬性集互不相交,即對所有i,j,i不等于j,f(di)∩f(dj)= 空。

在典型的olap 應用中,存在一個中心關系或資料集合,稱作事實表。事實表代表感興趣的事件或對象。事實表通常有幾個表示維的屬性和一個或多個度量屬性,這些度量屬性一般是使用者想要查詢到的一些值。下面給出例子來說明資料立方體的定義。表2.1 是一個資料庫中表示檔案中繼資料的基本關系表files,owner、type、etime、size 分别表示檔案的所有者、類型、建立時間、大小,機關kb。

【資料立方cube】資料立方

files 關系:files(owner,type,etime,size)是個事實表。維owner、type、etime用來定義分類,size 是度量屬性,它是向這個資料庫所提出的聚集查詢所需要的,用它來進行一定的分析。

現在用與基本關系表files 相對應的中繼資料立方體來表示存儲系統中檔案中繼資料的多元資料庫。中繼資料立方體具有如下的特征:

(1) 使用者關心是的檔案大小這個度量,對于中繼資料立方體來說,m={檔案大小}。

(2) 使用者習慣于用三維來分析檔案,即檔案所有者、類型、建立時間,也就是說使用者經常會提出這樣的問題,“使用者o1 在上周建立的檔案的總大小是多少?”(用檔案所有者和建立時間維詢問),或“在一定時間内,使用者o2 所建立的文本檔案的總大小是多少?”(用全部三個維詢問)。于是對中繼資料立方體來說,d={檔案所

有者,檔案類型,建立時間}。

(3)建立時間維是用屬性日、月和年來描述的;檔案所有者維是用john、xiaoguo、yy 來描述的;檔案類型維是用doc、exe、txt 等來描述的。于是,對中繼資料立方體而言,a={john,xiaoguo,yy,doc,exe,txt,日,月,年}。

(4)在前面解釋的每一個維都用特定的屬性來描述,對中繼資料立方體而言,映射f 為:

f(檔案所有者) = { john,xiaoguo,yy }

f(檔案類型) = {doc、exe、txt}

f(建立時間) = {日,月,年}

可以注意到上面的三個屬性集合是互不相交的,是以中繼資料立方體滿足上述定義,如圖所示:

【資料立方cube】資料立方

二、資料立方體的計算

        資料立方體的全部或部分預計算可以大幅降低響應時間,提高查詢效率,提高聯機分析處理性能[18]。資料立方體的物化有三種政策:

1. 預先計算任何方體,即完全立方體物化(full materialization)[19]。一個n 維的資料立方體,有2n 種組合(group by),即有2n 個方體。是以完全立方體物化就是聚集度量m 對n 個維的所有可能組合計算。完全物化優點:可以對提出的任何查詢快速響應,快速傳回預計算好的結果,不用線上等待計算結果,提高互動性。缺點:完全物化時間複雜度是次元的指數,随着次元的增大,将發生“維災”。計算代價非常大,而且消耗大量的存儲空間和系統資源,同時當它的資料源發生改變時,為了保持資料的一緻性,需要重新的計算所有的方體。當立方體的次元比較高時,對完全物化政策的立方體進行更新維護将耗費大量的時間和系統資源。完全物化主要有多路數組聚集方法。

2. 不預先計算任何的方體(不物化,no materialization),資料立方體中每一個方體都不對聚集度量m 進行預計算,相當于隻提供一個多元的索引,這樣對于使用者送出的查詢,需要線上計算結果,響應時間較長。當總的資料量很大時,那查詢的結果集也會很大,線上計算将需要很長的時間,進而導緻無法忍受的響應時間,在海量資料情況下,該政策是不可取的。

3. 部分物化(partial materialization)提供了存儲空間和響應時間的有效折衷。替代計算完全立方體,我們可以計算立方體的一個子集,或計算由各種方體的單元組成的子立方體。優點是節省了大量的計算時間和存儲空間;缺點是隻能命中大部分查詢而且結果可能不太精确, 對于沒命中的查詢需要線上計算( onlinecomputation)。

       完全立方體的每個單元記錄一個聚集值,通常使用諸如count、sum 等度量。對于方體中的許多單元,路徑成本将為0。當相對于存放在該方體中的非零值元組的數量,方體維的基數的乘積很大時,那麼該方體是稀疏的。如果一個立方體包含許多稀疏方體,則稱該立方體是稀疏的。

       在許多情況下,相當多的立方體空間可能被大量具有很低路徑成本的單元占據。這是因為立方體單元在多元空間中的分布常常是相當稀疏的。例如,某一類型的檔案非常少,這樣的事件将産生少量非空單元,使得其他大部分立方體單元為空。在這種情況下僅物化其路徑成本大于某個最小門檻值的方體(group by)單元是很有用的。比如說,在上面files 對就應的中繼資料立方體中,我們可能隻希望物化其size 100kb,這不僅能夠節省計算時間和空間,而且能夠導緻更聚集的分析。對于未來的分析,不能夠滿足門檻值的單元多半是微不足道的。這種部分物化的單元稱作冰山立方體(iceberg cube)[20,21,22],最小門檻值稱作最小支援度門檻值或簡稱最小支援度(min_sup)。

      實際上,決策者或管理者可能對許多方體的單元不太感興趣或不感興趣。例如,“某個檔案夾下檔案的總大小是多少?”這樣的話檔案小于100kb 的就可以不予考慮,這樣可以大大減少計算時間,節省空間,但又不影響分析和做出決策。