一、資料立方體的基本概念
資料立方體是多維資料庫的基本結構,並作為在多維資料庫上定義的所有操作符的輸入輸出基本單位。將它定義為一個四元組<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。
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(建立時間) = {日,月,年}
可以注意到上面的三個屬性集合是互不相交的,因此中繼資料立方體滿足上述定義,:
二、資料立方體的計算
資料立方體的全部或部分預計算可以大幅降低回應時間,提高查詢效率,提高線上分析處理效能[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 的就可以不予考慮,這樣可以大大減少計算時間,節省空間的,但又不影響分析和做出決策。