天天看點

次元設計

1.次元設計基礎

次元是次元模組化的基礎和靈魂。

在次元模組化中,将度量稱為”事實“,将環境描述為”次元“,次元是用于分析事實所需要的多樣環境。

次元所包含的表示次元的列,稱為次元屬性。

次元屬性是查詢限制條件、分組和報表标簽生成的基本來源,是資料易用性的關鍵。

次元的作用一般是查詢限制、分類彙總以及排序等。

擷取次元或次元屬性的方式:一是在報表中擷取;二是可以在和業務人員的交談中發現次元或次元屬性。

次元使用主鍵辨別其唯一性,主鍵也是確定與之相連的任何事實表之間存在引用完整性的基礎。

主鍵的分類:代理鍵和自然鍵。它們都是用于辨別某次元的具體值。

兩者的差別:代理鍵是不具有業務含義的鍵,一般用于處理緩慢變化維;自然鍵是具有業務含義的鍵。

次元的設計過程就是确定次元屬性的過程,如何生成次元屬性,以及所生成的次元屬性的優劣,決定了次元使用的友善性,成為資料倉庫易用性的關鍵。

次元設計方法步驟:

第一步,選擇次元或建立次元

第二步,确定主維表

第三步,确定相關維表

第四步,确定次元屬性

第一階段,是從主維表中選擇次元屬性或生成新的次元屬性

第二階段,是從相關維表中選擇次元屬性或生成新的次元屬性

确定次元屬性的幾點提示:

1)盡可能生成豐富的次元屬性

2)盡可能多地給出包括一些富有意義的文字性描述

3)區分數值型屬性和事實

4)盡量沉澱出通用的次元屬性

次元中的一些描述屬性以層次方式或一對多的方式相關關聯,可以被了解為包含連續主從關系的屬性層次。

當屬性層次被執行個體化為一系列次元,而不是單一的次元時,被稱為雪花模式。大多數聯機事務處理系統(OLTP)的底層資料結構在設計時采用此種規範化技術,通過規範化處理将重複屬性移至其自身所屬的表中,删除備援資料。

将次元的屬性層次合并到單個次元中的操作稱為反規範化。

資料倉庫總線架構的重要基石之一就是一緻性次元。在針對不同資料域進行疊代建構或并行建構時,存在很多需求是對于不同資料域的業務過程或者同一資料域的不同業務過程合并在一起觀察。

将不同資料域的商品的事實合并在一起進行資料探查,如計算轉化率等,稱為交叉探查。

次元一緻性的幾種表現形式:

共享維表;

一緻性上卷,其中一個次元的次元屬性是另一個次元的次元屬性的子集,且兩個次元的公共次元屬性結構和内容相同;

交叉屬性,兩個次元具有部分相同的次元屬性。

2.次元設計進階主題

1)次元整合

将面向應用的資料轉換為面向主題的資料倉庫資料,本身就是一種內建。

具體展現在如下幾個方面:

命名規範的統一;字段類型的統一;公共代碼及代碼值的統一;業務含義相同的表的統一。

通常有如下幾種內建方式:

采用主從表的設計方式,将兩個表或多個表都有的字段放在主表中(主要基本資訊),從屬資訊分别放在各自的從表中;直接合并,共有資訊和個性資訊都放在同一個表中;不合并。

表級别的整合,有兩種表現形式:

第一種,垂直整合,即不同的來源表包含相同的資料集,隻是存儲的資訊不同;

第二種,水準整合,即不同的來源表包含不同的資料集,不同子集之間無交叉,也可以存在部分交叉。

2)水準拆分

在設計過程中需要重點考慮以下三個原則:擴充性,效能,易用性。

根據資料模型設計思想,在對次元進行水準拆分時,主要考慮如下兩個依據:

第一個依據是次元的不同分類的屬性差異情況;

第二個依據是業務的關聯程度。

3)垂直拆分

4)曆史歸檔

歸檔政策方式:

第一種,同前台歸檔政策,在資料倉庫中實作前台歸檔算法,定期對曆史資料進行歸檔;

第二種,同前台歸檔政策,但采用資料庫變更日志的方式;

第三種,資料倉庫自定義歸檔政策。

注:如果技術條件允許,能夠解析資料庫binlog日志,建議使用歸檔政策中的第二種,規避前台歸檔算法。

3.次元變化

1)緩慢變化維

緩慢變化維的提出是因為在現實世界中,次元的屬性并不是靜态的,它會随着時間的流逝發生緩慢的變化。

三種處理緩慢變化維的方式:

第一種,重寫次元值;

第二種,插入新的次元行;

第三種,添加次元列。

2)快照維表

處理緩慢變化維的方法是采用快照方式。

優點:簡單有效,開發和維護成本低;使用友善,了解性好。

缺點:存儲浪費大。

3)極限存儲

在快照維表的基礎上,又可以降低存儲的方式就是極限存儲。

采用緩慢變化維的第二種處理方式處理,但是這種存儲方式對于下遊使用方存在一定的了解障礙,是以會存在較高的解釋成本。同時,随着時間的推移,分區數量會極度膨脹。故而引出極限存儲。

透明化,分月做曆史拉連結清單。

采用極限存儲的處理方式,優點:極大地壓縮了全量存儲的成本,又可以達到對下遊使用者透明的效果,是一種比較理想的存儲方式;缺點:産出效率很低,對于變化頻率高的資料并不能達到節約成本的效果。

4)微型存儲

微型次元的建立是通過将一部分不穩定的屬性從主次元中移出,并将它們放置到擁有自己代理鍵的新表中來實作的。

未被采用的原因如下:微型次元的局限性;ETL邏輯複雜;破壞了次元的可浏覽性。

繼續閱讀