数据仓库与联机分析处理笔记
生活随笔
收集整理的這篇文章主要介紹了
数据仓库与联机分析处理笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文為《數據挖掘:概念與技術》中“數據倉庫與聯機分析處理”的閱讀筆記。
4. 數據倉庫與聯機分析處理
- ETL:用來描述將數據從來源端經過抽取(extract)、轉換(transform)、加載(load)至目的端的過程。
- 數據倉庫提供聯機分析處理(OLAP)工具,用于各種粒度的多維數據的交互分析,有利于有效的數據泛化和數據挖掘。
- 數據立方體,是一種用于數據和OLAP以及OLAP操作(如上卷、下鉆、切片和切塊)的多維數據模型。
4.1 數據倉庫:基本概念
4.1.1 什么是數據倉庫
- 數據倉庫是一個面向主題的、集成的、時變的、非易失的數據集合,支持管理者的決策過程。
- 面向主題的:數據倉庫關注決策者的數據建模和分析,而不是單位的日志操作和事務處理。數據倉庫通常排除對于決策無用的數據,提供特定主題的簡明視圖。
- 集成的:通常構造數據倉庫是將多個異構數據源,如關系數據庫、一般文件和聯機事務處理記錄集成在一起。
- 時變的:數據倉庫的關鍵結構都隱式或顯式地包含時間元素。
- 非易失的:數據倉庫總是物理地分離存放數據,不需要事務處理、恢復和并發控制機制,通常只需要數據訪問操作:數據的初始化裝入和數據訪問。
4.1.2 操作數據庫系統與數據倉庫的區別
- 聯機操作數據庫系統的主要是執行聯機事務和查詢處理,稱為聯機事務處理(Online Transaction Processing,OLTP)系統。
- 數據倉庫系統在數據分析和決策方面為用戶或“知識工人”提供服務,這種系統可以用不同的格式組織和提供數據,以便滿足不同用戶的形形色色的需求,稱作聯機分析處理(Online Analytical Processing,OLAP)系統。
4.1.3 為什么需要分離的數據倉庫
- 操作數據庫是為已知的任務和負載設計的,檢索特定的記錄,優化“定制的”查詢。數據倉庫的查詢通常是復雜的,涉及大量數據在匯總級的計算,可能需要特殊的基于多維視圖的數據組織、存取方法和實現方法。
- 操作數據庫支持多事務的并發處理,需要并發控制和恢復機制,以確保一致性和事務的魯棒性。OLAP查詢只需要對匯總和聚集數據記錄進行只讀訪問。
- 數據倉庫與操作數據庫分離是由于這兩種系統中的數據的結構、內容和用法都不相同。
4.1.4 數據倉庫:一種多層體系結構
- 底層是倉庫數據庫服務器。
- 中間層是OLAP服務器
- 頂層是前段客戶層
4.1.5 數據倉庫模型:企業倉庫、數據集市和虛擬倉庫
從結構的角度來看,有三種數據倉庫模型
- 企業倉庫
- 數據集市
- 虛擬倉庫
4.1.6 數據提取、變換和裝入
- 數據提取:由多個異構的外部數據源收集數據。
- 數據清理:檢測數據中的錯誤,可能時訂正它們。
- 數據變換:將數據由遺產或宿主格式轉換層數據倉庫格式。
- 裝入:排序、匯總、合并、計算視圖、檢查完整性,并建立索引和劃分。
- 刷新:傳播由數據源到數據倉庫的更新。
4.1.7 元數據庫
元數據是關于數據的數據。在數據倉庫中,元數據是定義倉庫對象的數據。元數據庫應當包括以下內容:
- 數據倉庫結構的描述
- 操作元數據,包括數據血統、數據流通、管理信息
- 用于匯總的算法
- 由操作環境到數據倉庫的映射
- 關于系統性能的數據
- 商務元數據
4.2 數據倉庫建模:數據立方體與OLAP
數據倉庫和OLAP工具基于多維數據模型,這種模型將數據看做數據立方體形式。
4.2.1 數據立方體:一種多維數據模型
- 數據立方體允許以多維對數據建模和觀察,它由維和事實定義。
- 維是一個單位想要記錄的透視或實體。
- 每個維都可以有一個與之相關聯的表,該表稱為維表,它進一步描述維。
- 通常,多維數據模型圍繞注入銷售這樣的中心主題組織,主題用事實表表示,事實是數值度量的。
- 存放最低層匯總的方體稱作基本方體(base cuboid),0-D方體存放最高層的匯總,稱為頂點方體(apex cuboid),頂點方體通常用all標記。
4.2.2 星型、雪花型和事實星座:多維數據模型的模式
最流行的數據倉庫的數據模型是多維數據模型,這種模型可以是星型模型、雪花模型和事實星座模式。
星型模式
- 最常見的模式范型,其中數據倉庫包括:
- 一個大的中心表(事實表),它包含大批數據并且不含冗余
- 一組小的附屬表(維表),每維一個。
- 每維只用一個表表示,而每個表包含一組屬性。
- 一個維表中的屬性可能形成一個層次(全序)或格(偏序)。
雪花模式
- 雪花模式是星型模式的變種,其中某些維表被規范化,因而把數據進一步分解到附加的表中。
事實星座
- 復雜的應用可能需要多個事實表共享維表,這種模式可以看做星型模式的匯集,因此稱作星系模式或事實星座。
- 對于數據倉庫,通常使用事實星座模式,因為它能對多個相關的主題建模。數據集市是數據倉庫的一個子集,它針對選定的主題,流行采用星型或雪花模式,因為他們都適合對單個主題建模。
4.2.3 維:概念分層的作用
- 概念分層定義一個映射序列,將低層概念集映射到較高層、跟一般的概念。
- 形成數據庫模式中屬性的全序或偏序的概念分層稱做模式分層。
- 數據挖掘系統應當為用戶提供靈活性,允許用戶根據他們的特殊需要裁剪預定義的分層,也可以通過將給定維或屬性的值離散化或分組來定義概念分層,產生集合分組分層。
4.2.4 度量的分類和計算
- 數據立方體空間的多維點可以用維-值對的集合來定義。
- 數據立方體度量(measure)是一個數值函數,該函數可以對數據立方體空間的每個點求值。
- 度量根據所用的聚集函數可以分為三類:分布的、代數的和整體的。
- 分布式的:如果將數據劃分為n個集合,將函數用于每一部分,得到n個聚集值。如果將函數用于n個聚集值得到的結果與將函數用于整個數據集得到的結果一樣,這該函數可以用分布方式計算。
- 代數的:一個聚集函數如果能用一個具有M個參數的代數函數計算,而每個參數都可以用一個分布聚集函數求得,則它是代數的。
- 整體的:一個聚集函數如果描述它的子聚集所需的存儲沒有一個常數界,則它是整體的。也就是不存在一個具有M個參數的代數函數進行這一計算。
4.2.5 典型的OLAP操作
- 在多維數據模型中,數據組織在多維空間,每維包含由概念分層定義的多個抽象層。
- 上卷(roll-up):上卷操作(也稱為上鉆(drill-up)操作)通過沿一個維的概念分層向上攀升或者通過維歸約在數據立方體上進行聚集。
- 下鉆(drill-down):下鉆是上卷的逆操作,它由不太詳細的數據到更詳細的數據。下鉆可以通過沿維的概念分層向下或引入附加的維來實現。
- 切片和切塊:
- 切片(slice)操作在給定的立方體的一個維上進行選擇,導致一個子立方體。
- 切塊(dice)操作通過在兩個或多個維上進行選擇,定義子立方體。
- 轉軸(pivot):轉軸(又稱旋轉(rotate))是一種目視操作,它轉動數據的視角,提供數據的替代表示。
- 其他OLAP操作:
- 鉆過(drill-across)執行涉及多個事實表的查詢。
- 鉆透(drill-through)操作使用關系SQL機制,鉆透到數據立方體的底層,到后端關系表。
4.2.6 查詢多維數據庫的星網查詢模型
- 多維數據庫查詢可以基于星網模型(starnet model)。
- 星網模型由從中心點發出的射線組成,其中每一條射線代表一個維的概念分層。
- 概念分層上的每個“抽象級”稱為一個足跡(footprint),代表諸如上卷、下鉆等OLAP操作可用的粒度。
- 通過用較高層抽象值替換低層抽象值,概念分層可以用于泛化數據。
- 通過用低層抽象值替換高層抽象值,概念分層也可以特殊化數據。
4.3 數據倉庫的設計與使用
4.3.1 數據倉庫的設計的商務分析框架
關于數據倉庫的設計,必須考慮四種不同的視圖:
- 自頂向下視圖:使得我們可以選擇數據倉庫所需的相關信息。
- 數據源視圖:揭示被操作數據庫系統收集、存儲和管理的信息。
- 數據倉庫視圖:包括事實表和維表。
- 商務查詢視圖:是從最終用戶的角度透視數據倉庫中的數據。
4.3.2 數據倉庫的設計過程
- 數據倉庫可以使用自頂向下方法、自底向上方法、或二者結合的混合方法設計。
- 自頂向下:由總體設計和規劃開始。
- 自底向上:以實現和原型開始。
- 混合方法:一個組織既能利用自頂向下方法的規劃性和戰略性特點,又能保持像自底向上方法一樣快速實現和立即應用。
- 一般而言,數據倉庫的設計過程包含以下步驟:
- 選取待建模的商務處理
- 選擇商務處理的粒度
- 選取用于每個事實表記錄的維
- 選取將安放在每個事實表記錄中的度量
4.3.3 數據倉庫用于信息處理
- 有三類數據倉庫應用:
- 信息處理:支持查詢和基本的統計分析,并使用交叉表、表、圖表或圖進行報告。
- 分析處理:支持基本的OLAP操作,包括切片與切塊、下鉆、上卷和轉軸。
- 數據挖掘:支持知識發現,包括找出隱藏的模式和關聯,構造分析模型,進行分類和預測,并使用可視化工具提供挖掘結果。
- 數據挖掘的涵蓋面要比簡單的OLAP操作寬的多,因為它不僅執行數據匯總和比較,而且執行關聯、分類、預測、聚類、時間序列分析和其他數據分析任務。
4.3.4 從聯機分析處理到多維數據挖掘
- 數據挖掘對關系數據、數據倉庫的數據、事務數據、時間序列數據、空間數據、文本數據和一般數據進行挖掘。
- 多維數據挖掘(又稱探索式多維數據挖掘、聯機分析挖掘或OLAM)把數據挖掘與OLAP集成在一起,在多維數據庫中發現知識。
- 多維數據挖掘特別重要的原因:
- 數據倉庫中數據的高質量
- 環繞數據倉庫的信息處理基礎設施
- 基于OLAP的多維數據探索
- 數據挖掘功能的聯機選擇
4.4 數據倉庫的實現
4.4.1 數據立方體的有效計算:概述
compute cube操作與維災難
- 多維數據分析的核心是有效計算許多維集合上的聚集。用SQL的術語,這些聚集稱為分組(group-by)。
- 每個分組可以用一個方體表示,而分組的集合構成數據立方體。
- 頂點方體或0-D方體表示分組為空的情況,基本方體是最低泛化的方體。
- 對于n維立方體,包括基本方體總共有2^n個方體。
- 大多數OLAP產品都借助于多維聚集的預計算。
- 如果數據立方體的所有方體都預先計算,所需的存儲空間可能爆炸,特別是當立方體包含許多維時。當許多維都具有相關聯的概念分層,具有多層時,存儲需求甚至更多,這個問題稱作維災難。
- 預計算并物化由數據立方體可能產生的所有方體是不現實的,更合理的選擇是部分物化。
部分物化:方體的選擇計算
- 部分物化:有選擇的計算整個可能的方體集中一個適當的子集。我們也可以計算立方體的一個子集,它只包含滿足用戶指定的某種條件(如每個單元的元組計數大于某個閾值)的那些單元,這種情況我們稱為子立方體。
- 冰山立方體(iceberg cube):一個數據立方體,它只存放其聚集值大于某個最小支持度閾值的立方體單元。
- 外殼立方體(shell cube):預計算數據立方體的只有少量維(例如3到5維)的方體。
4.4.2 索引OLAP數據:位圖索引和連接索引
- 為了提供有效的數據訪問,大部分數據倉庫系統支持索引結構和物化視圖。
- 位圖索引(bitmap indexing):record_ID列表的一種代替表示。如果給定的屬性域包含n個值,則位圖索引中每項需要n個位(即n維向量)。如果數據表給定行上該屬性值為v,則在位圖索引的對應行,表示該值的位為1,該行的其他位均為0。
- 對于基數較小的值域特別有用,因為比較、連接和聚集操作都簡化為位算術運算,大大減少了處理時間。
- 由于字符串可以用單個二進位表示,位圖索引顯著降低了空間和IO開銷。
- 對于基數較高的值域,可以使用壓縮技術。
- 連接索引(join indexing):連接索引登記來自關系數據庫的兩個關系的可連接行。
- 與傳統的索引將給定列上的值映射到具有該值的行的列表上不同。
- 連接索引記錄能夠識別可連接的元組,而不必執行開銷很大的連接操作。
- 連接索引可以跨越多維,形成復合連接索引。
- 為進一步加快查詢處理,我們可以將連接索引與位圖索引集成,形成位圖連接索引。
4.4.3 OLAP查詢的有效處理
給定物化的視圖,查詢處理應按如下步驟進行:
- 確定哪些操作應當在可利用的方體上執行。
- 確定相關操作應當使用哪些物化的方體。
4.4.4 OLAP服務器結構:ROLAP、MOLAP、HOLAP的比較
用于OLAP處理的數據倉庫服務器的實現包括:
- 關系OLAP(ROLAP)服務器:使用關系的或擴充關系的DBMS存儲并管理數據倉庫數據,而OLAP中間件支持其余部分。具有比MOLAP更好的可伸縮性。
- 多維OLAP(MOLAP)服務器:通過基于數組的多維存儲引擎,將多維視圖直接映射到數據立方體數組結構。如果數據集是稀疏的,存儲利用率會很低,應當使用稀疏矩陣壓縮技術。
- 混合OLAP(HOLAP)服務器:結合ROLAP和MOLAP技術,得益于ROLAP較大的可伸縮性和MOLAP的快速計算。
- 特殊的SQL服務器:一些數據庫供應商實現了特殊的SQL服務器,提供高級查詢語言和查詢處理,在只讀環境下,在星型和雪花型模式上支持SQL查詢。
數據如何存放在ROLAP結構中:
- 與基本方體相關聯的事實表稱為基本事實表。
- 基本事實表存放的數據所處的抽象級由給定的數據立方體的模式的連接鍵指出。
- 聚集數據也能存放在事實表中,這種表稱為匯總事實表。
4.5 數據泛化:面向屬性的歸納
- 數據泛化通過把相對低層的值用較高層概念替換來匯總數據,或通過減少維數,在涉及較少維數的概念空間匯總數據。
- 概念通常指數據的匯集。概念描述產生數據的特征和比較描述。
- 當被描述的概念涉及對象類時,有時也稱概念描述為類描述。
- 特征提供給定數據匯集的簡潔匯總,而概念或類的比較也稱作區分,提供兩個或多個數據集合的比較描述。
- 與數據立方體方法相比,數據特征和泛化的面向屬性的歸納方法提供了另一種數據泛化方法,用于復雜的數據類型并依賴數據驅動的泛化過程。
- 不局限與關系數據
- 不需要預先計算數據立方體
- 可以把自動分析加入這種歸納過程,自動過濾不相關或不重要的屬性。
- 不能有效支持下鉆到比被泛化的關系提供的抽象層還深的層。
4.5.1 數據特征的面向屬性的歸納
- 基本思想:
- 首先使用數據庫查詢收集任務相關的數據(數據聚焦)
- 通過考察任務相關數據中每個屬性的不同值的個數進行泛化(通過屬性刪除或通過屬性泛化進行)。
- 聚集通過合并相同的廣義元組,并收集它們對應的計數值進行。
- 屬性刪除:如果初始工作關系的某個屬性有大量不同的值,但是在該屬性上沒有泛化操作符,或者它的較高層概念用其他屬性表示,則應當將該屬性從工作關系中刪除。
- 屬性泛化:如果初始工作關系的某個屬性有大量不同的值,并且該屬性上存在泛化操作符的集合,則應當選擇一個泛化操作符,并將它用于該屬性。
- 多大才算“屬性具有大量不同值”,控制泛化過程的方法:
- 屬性泛化閾值控制:對所有的屬性設置一個泛化閾值,或對每個屬性設置一個閾值。
- 廣義關系閾值控制:為廣義關系設置一個閾值。
- 這兩種技術可以順序使用,先用屬性泛化閾值控制技術泛化每個屬性,然后使用關系閾值控制進一步壓縮廣義關系。
- 泛化過程將導致相同元組的分組,這些相同的元組合并成一個,同時累計它們的計數值。
4.5.2 面向屬性歸納的有效實現
算法的有效性分析如下:
- 算法的第1步基本上是關系查詢,把任務相關的數據收集到工作關系W中。其有效性依賴與所用的查詢處理方法。
- 第2步收集初始關系上的統計量。最多需要掃描一次該關系。計算開銷依賴與每個屬性的不同值的數量,小于初始關系的元組個數|W|。可使用工作關系的一個樣本得到統計量。
- 第3步導出主關系P。所有廣義元組的時間復雜度為O(N)。
4.5.3 類比較的面向屬性歸納
- 類區分或比較挖掘區分目標類和它的對比類的描述。
- 目標類和對比類必須是可比較的,意指它們具有相似的維或屬性。
- 如何進行類比較?
- 數據收集:通過查詢處理收集數據庫中相關數據,并把它劃分成一個目標類和一個或多個對比類。
- 維相關分析:如果有多個維,則應當在這些類上進行維相關分析,僅選擇與進一步分析高度相關的維。
- 同步泛化:泛化在目標類進行,產生主目標類關系。對比類的概念泛化到與主目標類關系相同的層次,形成主對比類關系。
- 導出比較的表示:結果類比較描述可以用表、圖或規則的形式可視化。
總結
以上是生活随笔為你收集整理的数据仓库与联机分析处理笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记录一次大对象导致的Java堆内存溢出问
- 下一篇: Presto内存管理源码分析