数据挖掘之数据仓库详述
數據倉庫和數據挖掘的OLAP 技術
構造數據倉庫涉及數據清理和數據集成,可以看作數據挖掘的一個重要預處理步驟。此外,數據倉庫提供聯機分析處理(OLAP)工具,用于各種粒度的多維數據分析,有利于有效的數據挖掘。進一步講,許多其它數據挖掘功能,如分類、預測、關聯、聚集,都可以與 OLAP 操作集成,以加強多個抽象層上的交互知識挖掘。因此,數據倉庫已經成為數據分析和聯機數據分析處理日趨重要的平臺,并將為數據挖掘提供有效的平臺。在系統地介紹數據挖掘技術之前,我們概括地介紹數據倉庫技術。對于理解數據挖掘技術,這種概述是必要的。
本章,你將學習數據倉庫和 OLAP 技術使用的基本概念、一般結構和主要實現技術,以及它們與數據挖掘的聯系。
?
什么是數據倉庫?
數據倉庫是一個面向主題的、集成的、時變的、非易失的數據集合,支持管理決策制定。
1???? 面向主題的:數據倉庫圍繞一些主題,如顧客、供應商、產品和銷售組織。數據倉庫關注決策者的數據建模與分析,而不是構造組織機構的日常操作和事務處理。因此,數據倉庫排除對于決策無用的數據,提供特定主題的簡明視圖。
2???? 集成的:通常,構造數據倉庫是將多個異種數據源,如關系數據庫、一般文件和聯機事務處理記錄,集成在一起。使用數據清理和數據集成技術,確保命名約定、編碼結構、屬性度量的一致性。
3???? 時變的:數據存儲從歷史的角度(例如,過去 5-10 年)提供信息。數據倉庫中的關鍵結構,隱式或顯式地包含時間元素。
4???? 非易失的:數據倉庫總是物理地分離存放數據;這些數據源于操作環境下的應用數據。由于這種分離,數據倉庫不需要事務處理、恢復和并行控制機制。通常,它只需要兩種數據訪問:數據的初始化裝入和數據訪問。
概言之,數據倉庫是一種語義上一致的數據存儲,它充當決策支持數據模型的物理實現,并存放企業決策所需信息。數據倉庫也常常被看作一種體系結構,通過將異種數據源中的數據集成在一起而構造,支持結構化和啟發式查詢、分析報告和決策制定。
?
數據倉庫的構造需要數據集成、數據清理、和數據統一。利用數據倉庫常常需要一些決策支持技術。這使得“知識工人” (例如,經理、分析人員和主管)能夠使用數據倉庫,快捷、方便地得到數據的總體視圖,根據數據倉庫中的信息作出準確的決策。
對于異種數據庫的集成,傳統的數據庫做法是:在多個異種數據庫上,建立一個包裝程序和一個集成程序(或仲裁程序)。這方面的例子包括 IBM 的數據連接程序 (Data Joiner) 和 Informix的數據刀(DataBlade)。當一個查詢提交客戶站點,首先使用元數據字典對查詢進行轉換,將它轉換成相應異種站點上的查詢。然后,將這些查詢映射和發送到局部查詢處理器。由不同站點返回的結果被集成為全局回答。這種查詢驅動的方法需要復雜的信息過濾和集成處理,并且與局部數據源上的處理競爭資源。這種方法是低效的,并且對于頻繁的查詢,特別是需要聚集操作的查詢,開銷很大。
對于異種數據庫集成的傳統方法,數據倉庫提供了一個有趣的替代方案。數據倉庫使用更新驅動的方法,而不是查詢驅動的方法。這種方法將來自多個異種源的信息預先集成,并存儲在數據倉庫中,供直接查詢和分析。與聯機事務處理數據庫不同,數據倉庫不包含最近的信息。然而,數據倉庫為集成的異種數據庫系統帶來了高性能,因為數據被拷貝、預處理、集成、注釋、匯總,并重新組織到一個語義一致的數據存儲中。在數據倉庫中進行的查詢處理并不影響在局部源上進行的處理。此外,數據倉庫存儲并集成歷史信息,支持復雜的多維查詢。這樣,建立數據倉庫在工業界已非常流行。
?
操作數據庫系統與數據倉庫的區別
聯機操作數據庫系統的主要任務是執行聯機事務和查詢處理。這種系統稱為聯機事務處理(OLTP)系統。它們涵蓋了一個組織的大部分日常操作,如購買、庫存、制造、銀行、工資、注冊、記帳等。另一方面,數據倉庫系統在數據分析和決策方面為用戶或“知識工人”提供服務。這種系統可以用不同的格式組織和提供數據,以便滿足不同用戶的形形色色需求。這種系統稱為聯機分析處理(OLAP)系統。
OLTP和 OLAP的主要區別概述如下。
1???? 用戶和系統的面向性:OLTP 是面向顧客的,用于辦事員、客戶、和信息技術專業人員的事務和查詢處理。OLAP 是面向市場的,用于知識工人(包括經理、主管、和分析人員)的數據分析。
2???? 數據內容:OLTP 系統管理當前數據。通常,這種數據太瑣碎,難以方便地用于決策。OLAP 系統管理大量歷史數據,提供匯總和聚集機制,并在不同的粒度級別上存儲和管理信息。這些特點使得數據容易用于見多識廣的決策。
3???? 數據庫設計:通常,OLTP 系統采用實體-聯系(ER)模型和面向應用的數據庫設計。而 OLAP 系統通常采用星形或雪花模型(2.2.2小節討論)和面向主題的數據庫設計。
4???? 視圖:OLTP系統主要關注一個企業或部門內部的當前數據,而不涉及歷史數據或不同組織的數據。相比之下,由于組織的變化,OLAP 系統常常跨越數據庫模式的多個版本。OLAP 系統也處理來自不同組織的信息,由多個數據存儲集成的信息。由于數據量巨大,OLAP 數據也存放在多個存儲介質上。
5? 訪問模式:OLTP 系統的訪問主要由短的、原子事務組成。這種系統需要并行控制和恢復機制。然而,對 OLAP 系統的訪問大部分是只讀操作(由于大部分數據倉庫存放歷史數據,而不是當前數據),盡管許多可能是復雜的查詢。
OLTP 和 OLAP 的其它區別包括數據庫大小、操作的頻繁程度、性能度量等。
?
為什么需要一個分離的數據倉庫
“既然操作數據庫存放了大量數據”,你注意到,“為什么不直接在這種數據庫上進行聯機分析處理,而是另外花費時間和資源去構造一個分離的數據倉庫?”分離的主要原因是提高兩個系統的性能。操作數據庫是為已知的任務和負載設計的,如使用主關鍵字索引和散列,檢索特定的記錄,和優化“罐裝的”查詢。另一方面,數據倉庫的查詢通常是復雜的,涉及大量數據在匯總級的計算,可能需要特殊的數據組織、存取方法和基于多維視圖的實現方法。在操作數據庫上處理 OLAP查詢,可能會大大降低操作任務的性能。
此外,操作數據庫支持多事務的并行處理,需要加鎖和日志等并行控制和恢復機制,以確保一致性和事務的強健性。通常,OLAP查詢只需要對數據記錄進行只讀訪問,以進行匯總和聚集。如果將并行控制和恢復機制用于這種 OLAP 操作,就會危害并行事務的運行,從而大大降低 OLTP 系統的吞吐量。
最后,數據倉庫與操作數據庫分離是由于這兩種系統中數據的結構、內容和用法都不相同。決策支持需要歷史數據,而操作數據庫一般不維護歷史數據。在這種情況下,操作數據庫中的數據盡管很豐富,但對于決策,常常還是遠遠不夠的。決策支持需要將來自異種源的數據統一(如,聚集和匯總),產生高質量的、純凈的和集成的數據。相比之下,操作數據庫只維護詳細的原始數據(如事務),這些數據在進行分析之前需要統一。由于兩個系統提供很不相同的功能,需要不同類型的數據,因此需要維護分離的數據庫。然而,許多關系數據庫管理系統賣主正開始優化這種系統,使之支持 OLAP查詢。隨著這一趨勢的繼續,OLTP和 OLAP 系統之間的分離可望消失。
?
數據倉庫的系統結構
本節,我們討論數據倉庫的結構問題。2.3.1 小節介紹如何設計和構造數據倉庫。2.3.2 小節介紹三層數據倉庫結構。2.3.3 小節提供用于 OLAP 處理的各種不同類型的倉庫服務器。
?
數據倉庫的設計步驟和結構
本小節提供數據倉庫設計的一個商務分析框架,同時介紹設計過程所涉及的基本步驟。
數據倉庫設計:一個商務分析框架
“數據倉庫為商務分析提供了什么?”首先,擁有數據倉庫可以提供競爭優勢。通過提供相關信息,據此測量性能并作出重要調整,以幫助戰勝其它競爭對手。其次,數據倉庫可以加強生產能力,因為它能夠快速有效地搜集準確描述組織機構的信息。再次,數據倉庫促進了與顧客的聯系,因為它跨越所有商務、所有部門、所有市場,提供了顧客和商品的一致視圖。最后,通過以一致、可靠的方式長期跟蹤趨勢、式樣、例外,數據倉庫可以降低費用。
為建立有效的數據倉庫,需要理解和分析商務需求,并構造一個商務分析框架。構造一個大的、復雜的信息系統就象建一個大型、復雜的建筑,業主、設計師、建筑者都有不同的視圖。這些觀點結合在一起,形成一個復雜的框架,代表自頂向下、商務驅動,或業主的視圖,也代表自底向上、建筑者驅動,或信息系統實現者的視圖。
關于數據倉庫的設計,四種不同的視圖必須考慮:自頂向下、數據源、數據倉庫、商務查詢。
1???? 自頂向下視圖使得我們可以選擇數據倉庫所需的相關信息。這些信息能夠滿足當前和未來商務的需求。
2? ? ?數據源視圖揭示被操作數據庫系統捕獲、存儲、和管理的信息。這些信息可能以不同的詳細程度和精度建檔,存放在由個別數據源表到集成的數據源表中。通常,數據源用傳統的數據建模技術,如實體-聯系模型或 CASE(計算機輔助軟件工程)工具建模。
3???? 數據倉庫視圖包括事實表和維表。它們提供存放在數據倉庫內部的信息,包括預先計算的和與計數,以及關于源、日期、原時間等。
4???? 最后,商務查詢視圖是從最終用戶的角度透視數據倉庫中的數據。
建立和使用數據倉庫是一個復雜的任務,因為它需要商務技巧、技術技巧和程序管理技巧。關于商務技巧,建立數據倉庫涉及理解這樣一個系統如何存儲和管理它的數據;如何構造一個提取程序,將數據由操作數據庫轉換到數據倉庫;如何構造一個倉庫刷新軟件,合理地保持數據倉庫中的數據相對于操作數據庫中數據的當前性。使用數據倉庫涉及理解數據的含義,以及理解商務需求并將它轉換成數據倉庫查詢。關于技術技巧,數據分析需要理解如何由定量信息作出估價,以及如何根據數據倉庫中的歷史信息得到的結論推導事實。這些技巧包括發現模式和趨勢,根據歷史推斷趨勢和發現不規則的能力,并根據這種分析提出相應的管理建議。最后,程序管理技巧涉及需要與許多技術人員、經銷商、最終用戶交往,以便以及時、合算的方式提交結果。
?
數據倉庫的設計過程
“如何設計數據倉庫?”數據倉庫可以使用自頂向下方法、自底向上方法,或二者結合的混合方法設計。自頂向下方法由總體設計和規劃開始。當技術成熟并已掌握,對必須解決的商務問題清楚并已很好理解時,這種方法是有用的。自底向上方法以實驗和原型開始。在商務建模和技術開發的早期階段,這種方法是有用的。這樣可以以相當低的代價前進,在作出重要承諾之前評估技術的利益。在混合方法下,一個組織既能利用自頂向下方法的規劃的、戰略的自然特點,又能保持象自底向上方法一樣快速實現和立即應用。
從軟件工程的觀點,數據倉庫的設計和構造包含以下步驟:規劃、需求研究、問題分析、倉庫設計、數據集成和測試,最后,配置數據倉庫。大的軟件系統可以用兩種方法開發:瀑布式方法和螺旋式方法。瀑布式方法在進行下一步之前,每一步都進行結構化和系統的分析,就象瀑布一樣,從一級落到下一級。螺旋式方法涉及功能漸增的系統的快速產生,相繼版本之間的間隔很短。對于數據倉庫,特別是對于數據集市的開發,這是一個好的選擇,因為其周轉時間短,能夠快速修改,并且新的設計和技術可以快速接受。
一般地,數據倉庫的設計過程包含如下步驟:
1 選取待建模的商務處理,例如,訂單、發票、出貨、庫存、記帳管理、銷售、和一般分類帳。
如果一個商務過程是有組織的,并涉及多個復雜的對象,應當選用數據倉庫模型。然而,如果處理是部門的,并關注某一類商務處理,則應選擇數據集市。
2 選取商務處理的粒度。對于處理,該粒度是基本的、在事實表中是數據的原子級。例如,單個事務、一天的快照等。
3 選取用于每個事實表記錄的維。典型的維是時間、商品、顧客、供應商、倉庫、事務類型和狀態。
4 選取將安放在事實表中的度量。典型的度量是可加的數值量,如dollars_sold 和units_sold。
由于數據倉庫的構造是一個困難、長期的任務,它的實現范圍應當清楚地定義。一個初始的數據倉庫的實現目標應當是特定的、可實現、可測量的。這涉及時間和預算的分配,一個組織的哪些子集要建模,選擇的數據源數量,提供服務的部門數量和類型。
一旦設計和構造好數據倉庫,數據倉庫的最初使用包括初始化裝入、首次展示規劃、培訓和定
位。平臺的升級和管理也要考慮。數據倉庫管理包括數據刷新、數據源同步、規劃故障恢復、管理存取控制和安全、管理數據增長、管理數據庫性能、以及數據倉庫的增強和擴充。范圍管理包括控制查詢、維、報告的數量和范圍,限制數據倉庫的大小,或限制進度、預算和資源。
各種數據倉庫設計工具都可以使用。數據倉庫開發工具提供一些操作,定義和編輯元數據庫(如模式、腳本或規則),回答查詢,輸出報告,向或由關系數據庫目錄傳送元數據。規劃與分析工具研究模式改變的影響,當刷新率或時間窗口改變時對刷新性能的影響。
?
三層數據倉庫結構
“數據倉庫的結構是什么樣的?”通常,數據倉庫采用三層結構。
1.?? 底層是數據倉庫服務器,它幾乎總是一個關系數據庫系統。“如何由該層提取數據,創建數據倉庫?”使用稱作網間連接程序的應用程序,由操作數據庫和外部數據源(如,由外部咨詢者提供的顧客側面信息)提取數據。網間連接程序由下面的 DBMS 支持,允許客戶程序產生 SQL 代碼,在服務器上執行。網間連接程序的例子包括 ODBC(開放數據庫連接)和微軟的 OLE-DB(數據庫開放鏈接和嵌入),JDBC(Java 數據庫連接)。
2.?? 中間層是OLAP服務器,其典型的實現或者是(1)關系OLAP(ROLAP)模型,即擴充的關系 DBMS,它將多維數據上的操作映射為標準的關系操作;或者是(2)多維OLAP(MOLAP)模型,即特殊的服務器,它直接實現多維數據和操作。OLAP服務器在 2.3.3 小節討論。
3.?? 頂層是客戶,它包括查詢和報告工具、分析工具、和/或數據挖掘工具(例如,趨勢分析、預測等)。
從結構的角度看,有三種數據倉庫模型:企業倉庫、數據集市、和虛擬倉庫。
企業倉庫:企業倉庫搜集了關于主題的所有信息,跨越整個組織。它提供企業范圍內的數據集成,通常來自一個或多個操作的系統,或外部信息提供者,并且是跨功能的。通常,它包含詳細數據和匯總數據,其大小由數千兆字節,到數百千兆字節,數兆兆字節,或更多。企業數據倉庫可以在傳統的大型機上實現,如 UNIX 超級服務器或并行結構平臺。它需要廣泛建模,可能需要多年設計和建造。
數據集市:數據集市包含企業范圍數據的一個子集,對于特定的用戶是有用的。其范圍限于選定的主題。例如,一個商場的數據集市可能限定其主題為顧客、商品和銷售。包括在數據集市中的數據通常是匯總的。
通常,數據集市可以在低價格的部門服務器上實現,基于 UNIX 或 Windows/NT。實現數據集市的周期一般是數以周計,而不是數以月計或數以年計。然而,如果它們的規劃不是企業范圍的,從長遠講,可能涉及很復雜的集成。根據數據的來源不同,數據集市分為獨立的和依賴的兩類。在獨立的數據集市中,數據來自一個或多個操作的系統或外部信息提供者,或者來自在一個特定的部門或地域局部產生的數據。依賴的數據集市中的數據直接來自企業數據倉庫。
虛擬倉庫:虛擬倉庫是操作數據庫上視圖的集合。為了有效地處理查詢,只有一些可能的匯總視圖被物化。虛擬倉庫易于建立,但需要操作數據庫服務器具有剩余能力。
自頂向下開發企業倉庫是一種系統的解決方法,并能最大限度地減少集成問題。然而,它費用高,需要長時間開發,并且缺乏靈活性,因為整個組織的共同數據模型達到一致是困難的。自底向上設計、開發、配置獨立的數據集市方法提供了靈活性、低花費,并能快速回報投資。然而,將分散的數據集市集成,形成一個一致的企業數據倉庫時,可能導致問題。
對于開發數據倉庫系統,一個推薦的方法是以遞增、進化的方式實現數據倉庫,如圖 2.13 所示。第一,在一個合理短的時間(如,一、兩個月)內,定義一個高層次的企業數據模型,在不同的主題和可能的應用之間,提供企業范圍的、一致的、集成的數據視圖。這個高層模型將大大減少今后的集成問題,盡管在企業數據倉庫和部門數據集市的開發中,它還需要進一步提煉。第二,基于上述相同的企業數據模型,可以并行地實現獨立的數據集市和企業數據倉庫。第三,可以構造分布數據集市,通過網絡中心服務器集成不同的數據集市。最后,構造一個多層數據倉庫,這里,企業倉庫是所有倉庫數據的唯一管理者,倉庫數據分布在一些依賴的數據集市中。
?
OLAP 服務器類型:ROLAP、MOLAP、HOLAP 的比較
OLAP 服務器的種類有哪些?”邏輯上講,OLAP 服務器為商務用戶提供來自數據倉庫或數據集市的多維數據,而不必關心數據如何存放和存放在何處。然而,OLAP 服務器的物理結構和實現必須考慮數據存放問題。OLAP 服務器實現包括:
關系OLAP(ROLAP)服務器:這是一種中間服務器,介于關系后端服務器和用戶前端工具之間。它們使用關系或擴充關系 DBMS 存放并管理數據倉庫,而 OLAP 中間件支持其余部分。ROLAP服務器包括每個 DBMS 后端優化,聚集導航的邏輯實現,附加的工具和服務。看來,ROLAP 技術比 MOLAP 技術具有更大的可規模性。例如,Microstrategy 的 DSS 和 Informix 的 Metacube 都采用ROLAP 方法5。
多維 OLAP(MOLAP)服務器:這些服務器通過基于數組的多維存儲引擎,支持數據的多維視圖。它們將多維視圖直接映射到數據方數組結構。例如,Arbor 的 Essbase 是一個 MOLAP 服務器。使用數據方的優點是能夠對預計算的匯總數據快速索引。注意,使用多維數據存儲,如果數據集是
稀疏的,存儲利用率可能很低。在這種情況下,應當使用稀疏矩陣壓縮技術(見 2.4 節)。
許多 OLAP 服務器采用兩級存儲,以便處理稀疏和稠密數據集:稠密子方不變,并作為數組結構存儲;而稀疏子方使用壓縮技術,從而提高存儲利用率。
混合OLAP(HOLAP)服務器:混合OLAP 方法結合ROLAP和 MOLAP 技術,得益于 ROLAP 較大的可規模性和 MOLAP 的快速計算。例如,HOLAP 服務器允許將大量詳細數據存放在關系數據庫中,而聚集保持在分離的 MOLAP存儲中。微軟的 SQL Server 7.0 OLAP 服務支持混合 OLAP 服務器。
特殊的 SQL 服務器:為了滿足在關系數據庫中日益增長的 OLAP 處理的需要,一些關系數據庫和數據倉庫公司(例如 Redbrick)實現了特殊的 SQL 服務器,提供高級查詢語言和查詢處理,在只讀環境下,在星形和雪花模式上支持 SQL 查詢。
?“那么,數據怎樣實際地存放在 ROLAP和 MOLAP結構中?”如名稱所示,ROLAP 使用關系表存放聯機分析處理數據。注意,與基本方體相關聯的事實表稱為基本事實表。基本事實表存放的數據所處的抽象級由給定的數據方的模式的連接鍵指出。聚集數據也能存放在事實表中,這種表稱為匯總事實表。有些匯總事實表既存放基本事實表數據,又存放聚集數據,如例 2.10 所示。也可以對每一抽象級分別使用匯總事實表,只存放聚集數據。
大部分數據倉庫系統采用客戶-服務器結構。關系數據存儲總是駐留在數據倉庫/數據集市服務器站點上。多維數據存儲可以駐留在數據庫服務器站點,或客戶站點。
?
?
總結
以上是生活随笔為你收集整理的数据挖掘之数据仓库详述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用DialogBox生成的对话框一开始就
- 下一篇: NOI 2021 游记