第二章 資料倉儲開發模型 2. 1 資料倉儲開發模型概述 2. 2 資料倉儲概念模型 2. 3 資料倉儲的邏輯模型 2 第二章 資料倉儲開發模型 2.1 資料倉儲開發模型概述 2.2 資料倉儲概念模型 2.3 資料倉儲的邏輯模型 2.4 資料倉儲的實體模型 2.5 資料倉儲的超資料模型 2.6 資料倉儲的粒度和聚集模型 習題
2.1 資料倉儲開發模型概述 模型是對實際世界進行抽象化的工具。在資訊管理 中需要將實際世界的事物及其有關特徵轉換為資訊 2.1 資料倉儲開發模型概述 模型是對實際世界進行抽象化的工具。在資訊管理 中需要將實際世界的事物及其有關特徵轉換為資訊 世界的資料才能對資訊進行處理與管理,這就需要 依靠資料模型作為這種轉換的橋樑。
資料倉儲設計的模型,除了描繪概念世界的概念模 型、描述邏輯世界的邏輯模型和描述電腦世界的實 體模型之外,還有超資料模型、粒度模型和聚集模 型,如圖2.2所示。
2.2 資料倉儲概念模型 2.2.1 概念資料模型 在建構資料倉儲的概念模型時,可以採用在交易資 2.2 資料倉儲概念模型 2.2.1 概念資料模型 在建構資料倉儲的概念模型時,可以採用在交易資 料處理系統中經常應用的實體關係模型 ──E-R圖 (ERD, Entity Relation Diagram)
資料類型的差距 資料倉儲的資料模型中不包含操作型的資料,資料 倉儲的資料模型只包含客戶所感興趣的分析資料、 描述資料和細節性資料。 資料的歷史變遷性 資料倉儲的資料模型延伸了關鍵字結構,增加了時 間屬性,作為關鍵字的一部分。
資料的一般性 傳統的企業資料模型主要採用實體-關係圖 (ERD)建構。實體-關係圖用實體以及實體之間的 關係來描述實際世界。 因為傳統的實體-關係圖無法表述資料倉儲中所需要 的分析資料、描述資料和細節資料的關係,無法反 映出時間屬性的存在和功能,更無法呈現出資料的 導出關係。
為解決這些問題,可以將傳統的資料模型建構工 具ERD稍作修改,將原ERD中的實體分成指標實體 (事實實體)、維度實體和詳細類別實體 (引用實 體)。 資料模型中的指標實體用矩形表示,如圖2.4(a) 所示,它們處於資料模型的中心,是資料倉儲活動 的中心。
高層資料模型中的指標實體,應該具有下列 特性: 可以為客戶提供定量的資料 商務資料或實際資料的基本分析點 資料模型中的維度實體用菱形表示,如圖2.4(b)
維度實體應該具有這樣一些特色:可以形成一個 維度系統,具備存取和過濾指標實體的能力,提供 相關的非標準實體。 資料模型中的詳細類別實體用六角形表示,如圖 2.4(c)。
詳細類別實體應該具有這樣一些特色:包含有參考資料和有助於完成指標資料智慧的支援資訊
2.2.2 規格化的資料模型 資料的規格化是將資料結構分解成較小的合適的組 成程序,規格化主要強調執行記憶體的靈活性和高 2.2.2 規格化的資料模型 資料的規格化是將資料結構分解成較小的合適的組 成程序,規格化主要強調執行記憶體的靈活性和高 效性,可使規範化的結構佔用最小的記憶體空間, 增強資料庫的記憶體效率。
第一範式 第一範式具有以下特點: 所有的屬性都是原子化的。 它們不可能有相同的一組值。 它們不可能有任何的嵌套關係。 第二範式 資料模式規格的第二範式是在第一範式的基礎上消 除非關鍵列對關鍵列的部分依賴關係所得到的資料 模式。
第三範式 第三範式具有下列特徵: 所有的非主屬性都完全相依於關鍵列。 所有的主屬性都完全相依於不屬於它們的鍵。 沒有非主屬性完全相依於任一個非主屬性集。
因此,在將資料模式從非規格化到第三範式的轉換 程序中,需要採取以下步驟: 消除所有的重複序對,執行第一範式。 將實體的所有非主屬性相依於所有的主鍵列。 將所有非主鍵列直接相依於主鍵列
資料倉儲的反規格化處理 利用資料模型的反規格化處理可以提高資料倉儲的 執行效率。因此,在資料倉儲的模型建構中,為了 提高資料倉儲的執行效率,採用反規格化處理是必 要的。
2.2.3 星型模型 ERD資料模型為一種資料倉儲的設計基礎,在實際 應用中存在很多缺點。如圖2.5所示的簡單資料模型 2.2.3 星型模型 ERD資料模型為一種資料倉儲的設計基礎,在實際 應用中存在很多缺點。如圖2.5所示的簡單資料模型 中有四個相互關聯的簡單實體。
每一個維度表透過一個主鍵與事實表作連接,如圖 2.6所示。
事實表(Fact Table)主要包了描述特定商業事件的資 料,即某些特定商業事件的度量值。一般情況下, 事實表中的資料不允許修改,新的資料只是簡單地 添加於事實表中,維度表主要包含了記憶體在事實 表中資料的特徵資料。
2.2.4 雪花模型
2.3 資料倉儲的邏輯模型
透過中層邏輯模型的設計,可以向客戶提供一個 比概念模型更詳細的設計結果,使客戶了解到資料 倉儲能夠給他們提供一些什麼資訊。邏輯模型也就 成為資料倉儲開發者與使用者之間進行資料倉儲開 發的交流與討論的工具。
2.3.1 事實表模型設計 事實表設計 a. 客戶事實表。 b. 客戶交易事實表。 c. 客戶回饋記錄表。 d. 客戶信用狀況表。
事實表中的事實特性 事實表中一般要包含兩部分:一是由主鍵和外鍵所 組成的鍵部分,另一是客戶希望在資料倉儲中所了 解的數值指標。
事實是一種度量,所以事實表中的這種指標往往需要具有數值化和可加性的特徵。 事實表模型的設計中還需要注意到衍生事實。 事實表模型的設計中必須要考慮到事實表中的這些事實特性。
2.3.2 維度模型設計 維度表模型也需要依據邏輯模型來設計。在設計程 序中考量到維度表模型是客戶分析資料的介面,因 2.3.2 維度模型設計 維度表模型也需要依據邏輯模型來設計。在設計程 序中考量到維度表模型是客戶分析資料的介面,因 此維度表應該含有商業項目的文字描述。
例如,根據圖2.10的邏輯模型可以設計出量販店客戶 主題維度表模型。 客戶主題維度表模型:時間維度表(年度Date,月份Date,日期Date)。 地點維度表(省Character20,縣Character20,市Character20,街Character20)。 交易維度表(現金交易Charcter20,信用交易Character2O)。
2.4 資料倉儲的實體模型 2.4.1 資料倉儲實體模型的記憶體結構 2.4 資料倉儲的實體模型 2.4.1 資料倉儲實體模型的記憶體結構 在資料倉儲的實體模型設計中首先要確定資料的記 憶體結構,對大量資料記憶體可以採用平行記憶體 結構──RAID(Redundant Array of Inexpensive Disk,廉價冗餘磁碟陣列)。
這種陣列主要採用以下技術: 磁碟鏡像:這一技術使用了附在同一控制器上的兩個驅動器。 磁碟複製:其中每一個驅動器都有自己的控制器。 奇偶性校定:在資料中額外加入一位元校定位元,以保證該資訊的正確傳遞。 磁碟分段:透過某種演算法按磁區或位元組將資料分佈在多個磁碟上。
RAID陣列分為六個級別執行 RAID0級: 資料記錄在多組驅動器的磁區上交錯分佈,沒有奇偶校定,這就是分段。 RAID1級: 亦稱為鏡像(Mirror Image),這種方法的缺點是,因為它包含了資料的完整拷貝,所以要求雙倍磁片容量。
RAID2級: 資料記錄在成組的驅動器上位交錯存放,有些驅動器上記憶體有除錯碼。 RAID3級: 資料記錄在成組驅動器上位交錯存放,但只有一個驅動器存有奇偶校定資訊。
RAID4級: 這一方法需要一個專有的奇偶校定驅動器,資料記錄磁區交錯地存放在成組的的驅動器上。 RAID5級: 如果採用了這一個水平的技術,資料記錄就在成組的驅動器上磁區交錯存放
2.4.2 資料倉儲實體模型的索引建構 位元圖索引 在資料倉儲的記憶體結構中,位元圖索引是一項非 2.4.2 資料倉儲實體模型的索引建構 位元圖索引 在資料倉儲的記憶體結構中,位元圖索引是一項非 常重要的索引技術。它的思路很簡單,但也非常有 創意,如圖2.11所示。
由於一個點陣圖索引是一串位元流,並符合二進位 操作,就可以通過布林操作將兩種位元圖索引組合 起來形成一個位元圖索引,如圖2.11所示
一般化索引的建構 一般化索引的內容一般包含客戶最關心的問題。例如,在將銷售事實資料加入資料倉儲時,可能建立的一般化索引有: (1)一次性購買數量最大的交易編號是什麼? (2)本星期購買的總金額是多少? (3)本星期購買的商品總量是多少? (4)本星期銷售商品數量最多的分店是哪家? (5)本星期銷售商品數量最少的分店是哪家?
連接索引
索引的選擇 如果需要建立索引,往往採用B樹索引。B樹索引是資料庫中應用最多的索引。 B樹索引適合從某一大表中查詢少數的幾個記錄。 B樹索引在資料發生變化率超過10%時,就需要重新建構
2.4.3 資料倉儲實體模型的最佳化問題 在進行資料倉儲的實體資料模型設計時,考慮到資 料倉儲資料量大,但是操作單一的特色,可以採取 2.4.3 資料倉儲實體模型的最佳化問題 在進行資料倉儲的實體資料模型設計時,考慮到資 料倉儲資料量大,但是操作單一的特色,可以採取 以下列技術提高資料倉儲I/O的性能:
合併表 在資料倉儲中,存在著一些例行的分析處理,它們 要求的查詢也是例行的,具有一定程度的固定性。 建立資料序列 我們可以將資料嚴格地按照處理順序存放到一個或 幾個連續的實體塊中形成所謂的資料序列,將實體 I/O降到最低。
引入冗餘度 引入冗餘的方法則是對表的關係模式進行改變。在 引入冗餘之後,需要注意維護資料各個拷貝之間的 一致性。 一般在交易資料庫中,引入冗餘的方法不可取,一 是它破壞了關聯式模式的規格化,二是交易環境中 的資料是即時更新的。
列表的實體分割 列表的實體分割的主要依據是資料的存取頻率和資 料的穩定性。每個主題中的各個屬性存取頻率是不 同的,可以將一張表報按各屬性被存取的頻率分成 兩個或多個表,將具有相似存取頻率的資料組織在 一起,就可以使資料的存取更有效。
生成導出資料 在完成資料倉儲的實體資料模型設計之後,就可以 根據實體資料模型的特性,選擇某一資料倉儲創建 工具來完成資料倉儲的實體執行。
2.5 資料倉儲的超資料模型 資料倉儲中的超資料是關於資料的資料。正是有了 超資料,才使得資料倉儲的終端客戶可以隨心所欲 2.5 資料倉儲的超資料模型 資料倉儲中的超資料是關於資料的資料。正是有了 超資料,才使得資料倉儲的終端客戶可以隨心所欲 地使用資料倉儲,利用資料倉儲進行各種管理決策 模式的探討 。
2.5.1 超資料的類型與架構 靜態超資料主要與資料結構有關,其中包括名 稱、描述、格式、資料類型、關係、域和業務規 則…等。 2.5.1 超資料的類型與架構 靜態超資料主要與資料結構有關,其中包括名 稱、描述、格式、資料類型、關係、域和業務規 則…等。 靜態超資料中的名稱用於為系統提供識別和區分 資料的符號,例如 Customer_ID、Employee_ID、 Customer_Name…等。
超資料的關係用於說明資料倉儲中各種資料物件之 間的關係。例如,“客戶”資料與“商品”資料之間存在 購買關係。 資料生成時間:記錄資料在資料來源處的生成時間,一般用於內部資料,對外部資料的生成時間可以不做記錄。 來源:說明資料的來源。 索引:說明該資料所擁有或相依的索引列。 類別:對資料按照其所屬主題進行分類,便於資料倉儲的管理應用。
超資料的處理描述了資料倉儲系統的使用方法和管 理的特性。 記憶體位置:說明該資料記憶體在哪一個位置,尤其對記憶體在外部記憶體設備上的資料量大的週邊資料更重要。 記憶體大小:說明該資料所需要的容量大小。 引用處:說明引用該資料的一些操作。
2.5.2 超資料在資料倉儲中的功能 資料倉儲超資料的重要性 為資料倉儲與DSS分析人員及高層決策人員服務 2.5.2 超資料在資料倉儲中的功能 資料倉儲超資料的重要性 為資料倉儲與DSS分析人員及高層決策人員服務 解決操作型環境和資料倉儲的複雜關係 資料倉儲中資料的管理
超資料在資料倉儲開發期間的用途 資料倉儲的開發程序是一個工程開發的程序。因 此,它必須提供清晰的文件,該程序產生的超資料 主要用於資料倉儲的應用管理目的。 超資料在資料倉儲設計中的另一個重要功能是在讀 取、精煉和重建工程,程序中要隨時保持從資源到 資料倉儲之間的映射關係。
這些關係可以用於下列三個目標 確認資料品質 映射關係包含有關資料在記憶體到資料倉儲之前所 經歷的各種變化資訊。 同步化和更新 隨著新的交易處理資訊的產生以及對資料倉儲的更 新,新的資料必須經過轉換,使其等值於以前載入 的倉儲資料。
映射 映射在反映最終客戶所關心的商業規則和資料之間 建立了一種關係。如果沒有這種映射關係,客戶所 得到的只是無益於決策的孤立資料區塊。
超資料在資料來源萃取中的功能 資源領域的確定 利用超資料可以確定將資料來源的哪些資源域載入 到資料倉儲中去,而傳統的資料字典則是無法做到 的。 追蹤歷史資料結構變化的程序 資料倉儲的資料記憶體需要一致的資料結構,但是 原始資料中有各種各樣的資料結構,需要將這些原 始格式轉化為資料倉儲的目標格式。
屬性到屬性的映射 多個系統資料源的相似欄位必須映射到一起,以便 能夠把這些欄位中的資料載入到資料倉儲內的同一 目標欄位中。 屬性轉換 一般情況下,從多個資料欄位新形成的資訊欄位存 在不同的格式(長度和資料類型),必須用超資料 來指出每個新欄位的格式。
超資料在資料精煉與重建工程上的功能 資料的分割 分割程序將單一的資料區塊分成資料倉儲中的兩個 或多個資料區塊。 一般化與聚集 最簡單的一般化格式是形成累積的結構,把各種屬 性累加到一起即可。
預算與推導 預算與推導創建附加的資料欄位,預算與推導是應 用於資料倉儲的、無需客戶干預或要求的事先計算 結果。 轉換與再映射 向資料倉儲提供資料的原始交易資料,通常組織成 標準化的或基本標準化的關係表。
2.5.3 超資料的收集 資料倉儲涉及到眾多的超資料來源,因此在超資料 的收集程序中應該儘量採用自動收集方式進行。 2.5.3 超資料的收集 資料倉儲涉及到眾多的超資料來源,因此在超資料 的收集程序中應該儘量採用自動收集方式進行。 超資料的收集一般不會給開發人員帶來額外的工作 量,相反將有益於資料倉儲的開發。
資料來源的超資料 超資料的主要來源之一也就是資料倉儲資料的出 處,包含交易處理系統的資料庫、可以獲得的外部 資料及手工處理的資料。 資料模型的超資料 資料倉儲中超資料的第二個重要來源是有關資料模 型的資訊,從資料模型中可以了解到交易的實體、 關係和規則。
資料來源與資料倉儲映射的超資料 資料來源與資料倉儲之間的映射關係是十分重要 的,它決定了資料倉儲的資料在原始資料中萃取出 來、轉換、載入到資料倉儲程序中發生了哪些變 化。
資料倉儲應用的超資料 收集客戶使用資料倉儲的超資料是資料倉儲超資料 模型建構中最後的、最困難的與最重要的內容。 要收集這些超資料,必須依靠某種系統監控工具擷 取並解釋每一個查詢,然後將資料傳送到超資料庫 中進行分析與跟蹤。
2.6 資料倉儲的粒度和聚集模型 所謂粒度是指資料倉儲中資料單元的詳細程度和級 別。資料越詳細,粒度就越小,級別也就越低;資 2.6 資料倉儲的粒度和聚集模型 所謂粒度是指資料倉儲中資料單元的詳細程度和級 別。資料越詳細,粒度就越小,級別也就越低;資 料整合度越高,粒度就越大,級別也就越高,如表 2-3所示。
2.6.1 資料粒度的劃分 適當劃分粒度的第一步是估算資料倉儲中將來要 使用的資料行數和所需要的直接存取記憶體設備 數。 2.6.1 資料粒度的劃分 適當劃分粒度的第一步是估算資料倉儲中將來要 使用的資料行數和所需要的直接存取記憶體設備 數。 要劃分資料粒度,首先要估算資料倉儲中需要建 立的列表數目,估算每個列表的大致行數,通常需 要估計行數的上下限。
2.6.2 確定粒度的級別 在資料倉儲中確定粒度的級別時,需要考量這樣一 些因素:要接受的分析類型、可接受的資料最低粒 2.6.2 確定粒度的級別 在資料倉儲中確定粒度的級別時,需要考量這樣一 些因素:要接受的分析類型、可接受的資料最低粒 度和能記憶體的資料量。
資料倉儲通常在同一模式中使用多重粒度。 定義資料倉儲粒度的另外一個要素是資料倉儲可以使用多種記憶體介質的空間量。 選擇一個合適的粒度是資料倉儲設計程序中所要解決的一個複雜的問題。 資料粒度的劃分策略一定要保證資料的粒度確實能夠滿足客戶的決策分析需要
2.6.3 資料倉儲的聚集模型確定 在進行聚集模型設計時應該注意將聚集資料記憶體在其事實表中,並與其底層資料相區別 。 2.6.3 資料倉儲的聚集模型確定 在進行聚集模型設計時應該注意將聚集資料記憶體在其事實表中,並與其底層資料相區別 。 在設計聚集模型時,首先需要考量客戶的使用需求,其次要考量資料倉儲的粒度模型和資料的統計分配情況。
在資料倉儲的聚集設計中,應該對每個維度進行審查,以確定哪些屬性經常用於分組,這些屬性的組合有多少。 資料倉儲的聚集模型的設計與資料倉儲的粒度模型緊密相關。 在建立聚集模型時還需要考慮作為聚集屬性的數量因素。
2.6.4 聚集模型的處理 聚集資料的處理方法可能有這樣幾種。 2.6.4 聚集模型的處理 聚集資料的處理方法可能有這樣幾種。 聚集事實表己經獨立存在並且可以與基本事實表一同儲存。此時可以對輸入的粒度資料排序,並對斷行進行計算,這樣就可以創建聚集。 透過將當前載入的資料添加到系統中的累積”桶”中,可以創建某時間段的聚集。
將資料的聚集與資料倉儲的載入執行,組合同一處理程序,此時聚集將與所載入的資料處於同一資料庫中。 在將資料倉儲的資料載入以後,再作聚集處理。 每次在載入資料倉儲的資料時,都需要對各種聚集進行計算和累加,及時保持聚集與基本資料的同步性。在處理聚集模型時可能需要經由多次處理才能完成所有類別聚集的創建。
2.6.5 聚集模型的管理 在聚集模型的管理中需要了解聚集事實表有多大; 每次在資料倉儲載入程序中創建與增加新的聚集需 2.6.5 聚集模型的管理 在聚集模型的管理中需要了解聚集事實表有多大; 每次在資料倉儲載入程序中創建與增加新的聚集需 要多少時間;及最好還能夠估計出應用聚集進行查 詢可以節省多少時間。
在聚集事實表設計時,還需要注意將聚集獨立記憶 體在自己的事實表中,每一個不同的聚集都應該使 用自己的事實表。