資料倉儲建設-OLAP和資料立方體

產品魚發表於2018-02-07
一、OALP概述

    資料立方體,他是一種用於OLAP以及OLAP操作(如上卷、下鑽、切片和切塊)的多維資料模型。資料立方體儲存多為聚集資訊。每個單元存放一個聚集值,對應於多維空間的一個資料點。每個屬性都可能存在概念分層,允許在多個抽象層進行資料分析。

    在最低抽象層建立的立方體稱為基本方體。基本方體應當對應於感興趣的個體實體,如sales或customer。換言之,最低層應當是對於分析可用的或有用的。最高抽象的立方體稱為頂點方體。對不同層建立的資料立方體稱為方體,因此資料立方體可以看做方體的格。每個較高抽象將進一步減小結果資料的規模。當回答OLAP查詢或資料探勘查詢時,應當使用給定任務相關的最小可用方體。

    OLTP:聯機事務物理系統,主要任務是執行聯機事務和查詢處理。

    OLAP:聯機分析處理,在資料分析和決策方面為使用者或“知識工人”提供服務。這種系統可以用不同的格式組織和提供資料,以便滿足不同使用者的形形色色的需求。

    OLTP和OLAP的主要區別概述如下:

  • 使用者和系統的面向性:OLTP是面向顧客的,用於辦事員、客戶和資訊科技專業人員的事務和查詢處理。OLAP是面向市場的,用於知識工人(包括經理、主管和分析人員)的資料分析。
  • 資料內容:OLTP系統管理當前資料。通常這種資料太瑣碎,很難用於決策。OLAP系統管理大量歷史資料,提供彙總和聚集機制,並在不同的粒度層上儲存和管理資訊。這些特點使得資料更容易用於有根據的決策。
  • 資料庫設計:通常OLTP系統採用實體--聯絡(ER)資料模型和麵嚮應用的資料庫設計。而OLAP系統通常面向主題的資料庫設計。
  • 檢視:OLTP系統主要關注一個企業或部門內部的當前資料,而不涉及歷史資料或不同單位的資料。相比之下,由於單位的演變,OLAP系統通常跨越資料庫模式的多個版本。OLAP系統還處理來自不同單位的資訊,以及由多個資料庫整合的資訊。由於資料量巨大,OLAP資料也存在多個儲存介質上。
  • 訪問模式:OLTP系統的訪問主要由短的原子事務組成。這種系統需要併發控制和恢復機制。然而,對OLAP系統的訪問大部分是隻讀操作,儘管許多可能是複雜的查詢。
     

二、OLAP系統建設 

  1. 外部資料來源:外部資料來源主要包含分散在各個業務部門的業務資料來源系統、應用埋點上報資料,以及從網路上爬取的一些資料。業務資料庫通常是關係型資料庫系統,記錄了業務方的業務資訊;應用埋點上報資料,是企業方法的一些應用系統,通過這些應用系統採集到的一些使用者行為資訊;網路上爬取的資料,包含競對資料、權威方釋出資料、以及一些有用輔助資訊等。
  2. 底層資料倉儲伺服器:通過一些後端工具和實用程式,由運算元據庫和其他外部資料來源提取資料,放入底層。這些工具和實用程式進行資料提取、清理和變換,以及裝入和重新整理,以便更新資料倉儲。
  3. 中間層是OLAP伺服器:其典型的實現使用關係OLAP模型,或者使用多維OLAP模型。
  4. 頂層是前端客戶層:它包括查詢和報告工具、分析工具或資料探勘工具(例如趨勢分析、預測等)。

三、瞭解資料倉儲 

1、資料倉儲介紹

    從結構的角度看,有三種資料倉儲模型:企業倉庫、資料集市和虛擬倉庫。

    企業倉庫:企業倉庫蒐集了關於主題的所有資訊,跨越整個企業。他提供企業範圍內的資料整合,通常來自於一個或多個運算元據庫系統或外部資訊提供者,並且是多功能的。通常,它包含細節資料和彙總資料,其規模由數兆兆位元組,到數百兆兆位元組,數千兆兆位元組,甚至更多。企業資料倉儲可以在傳統的大型機、超級計算機伺服器或並行結構平臺上實現。它需要廣泛的商務建模,可能需要多年建設和設計。

    資料集市:資料集市包含企業範圍資料的一個子集,對於待定的使用者群是有用的。其範圍現定於選定的主題。例如:銷售資料集市可能限定其主題為顧客、商品和銷售。包括在資料集市中的資料通常是彙總的。

    虛擬倉庫:虛擬倉庫是運算元據庫上檢視的集合。為了有效的處理查詢,只有一些可能的彙總檢視被物化。虛擬倉庫容易建立,但需要運算元據庫伺服器還有餘力。

2、資料倉儲建設

    資料倉儲開發是自頂向下,還是自頂向上?

    自頂向下開發企業倉庫是一種系統的解決方案,並能最大限度的減少整合問題。然而,它費用高,開發週期長,並且缺乏靈活性,因為整個組織就共同資料模型達成一致是比較困難的。

    自底向上通過設計、開發、配置獨立的資料集市的方法,提供了靈活性、低花費,並能快速回報投資。然而,將分散的資料集市整合,形成一個一致的企業資料倉儲時,可能導致問題。

     對於開發資料倉儲系統,一種推薦的方法是以遞增、進化的方式實現資料倉儲。首先,在一個合理短期的時間內,定義一個更高層次的企業資料模型,在不同的主題和可能的應用之間,提供企業範圍的、一致的、整合的資料檢視。這個高層模型將大大減少今後的整合問題,儘管在企業資料倉儲和部門資料集市的開發中,它還需要進一步提煉。其次,基於上述相同的企業資料模型,可以並行的實現獨立的資料集市和企業資料倉儲。再次,可以通過中心伺服器整合不同的資料集市,構造分佈資料集市。最後,構造一個多層資料倉儲。這裡,企業倉庫是所有倉庫資料的唯一管理者,倉庫資料分佈在一些依賴的資料集市中。


3、資料提取、變換和裝入

    資料倉儲系統使用後端工具和實用程式來載入和重新整理他的資料。這些工具和實用程式包含以下功能:

  • 資料提取:通常,由多個異構的外部資料來源收集資料;
  • 資料清理:檢測資料中的錯誤,可能時訂正它們;
  • 資料變換:將資料由遺產或宿主格式轉換成資料倉儲格式。
  • 裝入:排序、彙總、合併、計算檢視、檢查完整性,並建立檢索和劃分。
  • 重新整理:傳播由資料來源到資料倉儲的更新。

    資料倉儲通常還提供一組資料倉儲管理工具。資料清理和資料變換是提高資料質量,從而提高其後的資料探勘結果質量的重要步驟。

4、後設資料庫

    後設資料是關於資料的資料。在資料倉儲中,後設資料是定義倉庫物件的資料。後設資料在資料倉儲體系結構的底層。對於給定的資料倉儲的資料名和定義,建立後設資料。其他後設資料包括對提取資料新增的時間標籤、提取資料的源、被資料清理或整合處理新增的缺失欄位等。

    後設資料庫應當包括以下內容:

  •  資料倉儲結構的描述,包括倉庫模式、檢視、維、分層結構、匯出資料的定義,以及資料集市的位置和內容;
  • 操作後設資料,包括資料血統、資料流通和管理資訊。
  • 用於彙總的演算法,包括度量和維定義演算法,資料所處的粒度、劃分、主題領域、聚集、彙總、預定義的查詢和報告;
  • 由操作環境到資料倉儲的對映,包括源資料庫和他們的內容,新關描述,資料劃分,資料提取、清理、轉換規則和預設值,資料重新整理和淨化規則,以及安全性;
  • 關於系統效能的資料,除重新整理、更新和複製週期的定時和排程的規則外,還包括改善資料存取和檢索效能的索引和概要。
  • 商務後設資料,包括商務術語和定義,資料擁有者資訊和收費策略;

    資料倉儲包含不同的彙總層,後設資料是其中一種型別。其他型別包括當前的細節資料、老的細節資料、稍加彙總的資料和高度彙總的資料。

四、資料倉儲模型:資料立方體與OLAP

    資料倉儲和OLAP工具基於多維資料模型。這種模型將資料看做資料立方體形式。主要包括:資料立方體對n維資料建模,各種多維模型--星型模型、雪花模型和事實星座。還有分層和度量,以及上卷和下鑽。

1、什麼是資料立方體

    資料立方體允許以多維對資料建模和觀察。它由維和事實定義。一般而言,維是一個單位想要記錄的透視或實體。通常,多維資料模型圍繞諸如銷售這樣的中心主題組織。主題用事實表表示。事實是數值度量的。事實表包括事實的名稱或度量,以及每個相關維表的碼。存放最低層次彙總的方體稱作基本方體。

2、多維資料模型

    最流行的資料倉儲的資料模型是多維資料模型。這種模型可以是星形模型、雪花模式或事實星座模型。

  • 星型模型:最常見的模型是星型模式,其中資料倉儲包括①一個大的中心表(事實表),它包括大批量資料並且不含冗餘;②一組小的附屬表(維表),每維一個。這種模式圖很像星光四射,維表表示在圍繞中心表的射線上。
  • 雪花模式:是星型模式的變種,其中某些維表被規範化,因而把資料進一步分解到附加的表中。結果模式圖形成類似於雪花的形狀。雪花模式和星形模式主要區別在於,雪花模式的維表可能是規範化形式,以便減少冗餘。這種表易於維護,並節省儲存空間。此外由於執行查詢需要更多的連線操作,雪花結構可能降低瀏覽的效率。因此,系統的效能可能會受到影響。所以雪花模式不如星形模式流行。
  • 事實星座:複雜的應用可能需要多個事實表共享維表。這種模式可以看做星形模式的彙集,因此稱作星系模式或事實星座。

3、維:概念分層的作用

    概念分層定義一個對映序列,將底層概念集對映到較高層、更一般的概念。例如time:hour-->week-->month-->year。 通過概念分層允許使用者根據他們的特殊需要裁減預定義的分層。也可以通過給定維或屬性離散化或分組來定義概念分層,產生集合分組分層。可以在值的組合之間定義全序或偏序。

    概念分層可以由系統使用者、領域專家、知識工程師人工的提供,或根據資料分佈的統計分析自動的產生。

4、度量的分類和計算

    資料立方體空間的多維點可以用維--值對的集合來定義。資料立方體度量是一個數值函式,該函式可以對資料立方體空間的每個點求值。通過給定點的各維--值對聚集資料,計算該點的度量值。

    度量根據其所用的聚集函式可以分成三類:分佈的、代數的和整體的。

  • 分佈的:一個聚集函式如果能用如下分散式進行計算,則它是分佈的。假設資料被劃分為n個集合,將函式用於每一部分,得到n個聚集值。如果將函式用於n個聚集值得到的結果與將函式用於整個函式集得到的結果一樣,則該函式可以用分散式計算。
  • 代數的:一個聚集函式如果能夠用一個具有M個引數的代數函式計算,而每個引數都可以用一個分佈聚集函式求得,則它是代數的。例如:avg()==sum()/count()計算。其中sum()和count()都是分佈聚集函式。
  • 整體的:一個聚集函式如果描述它的子聚集所需的儲存沒有一個常數界,則它是整體的。也就是說,不存在一個具有M個引數的代數函式進行這一計算。整體函式常見的例子包括median、mode和rank。一個度量如果是由整體聚集函式得到的,則他是整體的。
    大部分資料立方體應用需要有效的計算分佈的和代數的度量,對此存在許多有效的技術。相比之下,有效地計算整體度量是比較困難的。然而,對於某些整體函式的近似計算,有效的技術是存在的。

5、典型的OLAP操作

     在多維資料模型中,資料組織在多維空間,每維包含由概念分層定義的多個抽象層。這種組織為使用者從不同角度觀察資料提供了靈活性。有一些OLAP資料立方體操作用來物化這些不同檢視,允許互動查詢和分析手頭資料。因此OLAP為互動資料分析提供了友好的環境。

  • 上卷:通過沿一個維的概念分層向上攀升或者通過維規約在資料立方體上進行聚集。例如:按照地域上卷--street-->city-->province-->contry。當用維規約進行上卷時,一個或多個維從給定的立方體中刪除。
  • 下鑽:他是由不太詳細的資料到更詳細的資料。下鑽可以通過沿維的概念分層向下或引入附加的維來實現。例如:在日期維度上--day<month<quarter<year,定義的time維的概念分層向下,在中心立方體執行下鑽操作的結果。由於下鑽操作對給定資料新增更多細節,他也可以通過新增新的維到立方體來實現。
  • 切片和切塊:切片操作在給定的立方體的一個維上進行選擇,導致一個子立方體。切塊操作通過在兩個或多個維上進行選擇,定義子立方體。
  • 轉軸:是一種目視操作,它轉動資料的檢視,提供資料的替代表示。
  • 其他OLAP操作:有些OLAP系統還提供其他鑽取操作。例如,鑽過執行涉及到多個事實表的查詢。鑽透操作到資料立方體的底層,到後端關係表。
  • 其他OLAP操作可能包括列出表中最高或最低的N項,以及計算移動平均值、增長率、利潤、內部返回率、貶值、流通轉換和統計功能。

6、查詢多維資料庫的星網查詢模型

    多維資料庫查詢可以基於星網模型。星網模型由從中心點發出的射線組成,其中每一條射線代表一個維的概念分層。概念分層上的每個“抽象級”稱為一個足跡,代表諸如上卷、下鑽等OLAP操作可用的粒度。

    例如:一個星網由四條射線組成,分別代表維location、customer、item和time的概念分層。每條線由一些足跡組成,代表該維的抽象級。例如,time線有4個足跡:day、month、quarter、year。一個概念分層可以涉及單個屬性,或若干屬性。為了考察商品銷售,使用者可以沿著time維上卷,由month到quarter,或沿著location維下鑽,由country到city。

    通過用較高層抽象值替換低層抽象值,概念分層可以用於泛化資料。通過用低層抽象值替換高層抽象值,概念分層也可以特殊化資料。

 7、多維資料探勘

    多維資料探勘把資料探勘與OLAP整合在一起,在多維資料庫中發現知識。在資料探勘的許多不同範例和結構中,由於以下原因,多維資料探勘特別重要:

  • 資料倉儲中資料的高質量:大部分資料探勘工具需要在整合的、一致的和清理過的資料上執行,這需要昂貴的資料清理、資料變換和資料整合作為預處理步驟。經由這些預處理而構造的資料倉儲不僅充當OLAP,而且也充當資料探勘的高質量的、有價值的資料來源。
  • 環繞資料倉儲的資訊處理基礎挖掘:全面的資料處理和資料分析基礎裝置已經或將要圍繞資料倉儲而系統的建立,這包括多個異構資料庫的訪問、整合、合併和變換,web訪問和服務機制,報表和OLAP分析工具。明智的做法是儘量利用可用的基礎設施,而不是一切從頭做起。
  • 基於OLAP的多維資料探索:有效的資料探勘需要探索式資料分析。使用者常常想遍歷資料庫,選擇相關資料,在不同的粒度上分析他們,並以不同的形式提供知識、結果。多維資料探勘提供在不同的資料子集和不同的抽象層上進行資料探勘的機制,在資料立方體和資料探勘的中間結果上進行鑽取、旋轉、過濾切塊和切片。這些與資料/知識視覺化工具一起,將大大增強探索資料探勘的能力和靈活性。
  • 資料探勘功能的聯機選擇:使用者常常可能不知道他想挖掘什麼型別的知識。通過將OLAP與多種挖掘功能整合在一起,多維資料探勘為使用者選擇所期望的資料探勘功能,動態的切換資料探勘提供靈活性。

 8、資料立方體的有效計算

    多維資料分析的核心是有效的計算許多維集合上的聚集。用SQL的術語,這些聚集稱為分組(group-by)。每個分組可以用一個方體表示,而分組的集合形成定義資料立方體的方體的格。

①compute cube操作與維災難

    立方體計算的一種方法是擴充SQL,使之包含compute cube操作。compute cube操作在操作指定的維的所有子集上計算聚集。這可能需要很大的儲存空間,特別是對於很大量的維。例如:有一個資料立方體,包含city、item、year,那資料立方體計算的方體或分組總數為2的3次方=8個。基本方體是最低泛化的方體。頂點方體是最高泛化的方體。從頂點方體開始,沿方體的格向下探查,這等價於在資料立方體中下鑽。從基本方體向上探查,則類似於上卷。

    不包含分組的sql查詢是0維操作。包含一個分組的sql查詢是一維操作。在n維上的一個立方體操作等價於一組分組語句,每個對應於n個維的一個子集。對於不同的查詢,OLAP可能需要訪問不同的方體。因此,提前計算所有的或者至少一部分方體。預計算帶來快速響應時間,並避免一些冗餘計算。然而,預計算的挑戰是:如果資料立方體中所有方體都預先計算,所需儲存空間可能爆炸,特別是當立方體包含許多維時。當許多維都有相關聯的概念分層、具有多層時,儲存需要更多。這就是維災難。

②部分物化:方體的選擇計算

  • 不物化:不預先計算任何“非基本”方體。這導致回答查詢時實時計算昂貴的多維聚集,這可能很慢;
  • 完全物化:預先計算所有方體。計算的方體的格是完整方體。通常,這種選擇需要海量儲存空間來存放所有預計算的方體。
  • 部分物化:有選擇的計算整個可能的方體集中一個適當的子集。我們也可以計算資料立方體的一個子集,它只包含滿足使用者指定的某種條件的那些單元。其中各種方體只有某些單元被預計算,部分物化是儲存空間和響應時間二者之間的很好折中。

    方體或者子立方體的部分物化應考慮三個因素:確定要物化的方體子集或子立方體;在查詢處理時利用物化的方體或子立方體;在裝入和重新整理時,有效的更新物化的方體或子立方體。 物化方體或子立方體的選擇需要考慮工作負荷下的查詢,以及他們的頻率和他們的訪問開銷。此外,也要考慮工作負荷的特點、增量更新的開銷和整個儲存需求量,選擇還必須考慮物理資料庫設計的情況。

    還有一種常用的策略是物化一個外殼方體。這涉及預計算資料立方體的只有少量維的方體。在維的其他組合上的查詢可以臨時計算。

③OLAP常用索引:點陣圖索引和連線索引

    點陣圖索引:在OLAP產品中很流行,因為它允許在資料立方體中快速搜尋。點陣圖索引是record_ID(RID)列表的一種替代表示。在給定屬性的點陣圖索引中,屬性域中的每個值v,有一個不同的位向量Bv。如果給定的屬性域包含n個值,則點陣圖索引中每項需要n個位。如果資料表給定行上該屬性值為v,則在點陣圖索引的對應行,表示該值的位為1,該行的其他位均為0.

     連線索引:方法的流行源於他在關聯式資料庫查詢處理方面的應用。傳統的索引將給定列上的值對映到具有該值的行的列表上。與之相反,連線索引登記來自關聯式資料庫的兩個關係的可連線行。例如:如果兩個關係R(RID,A)和S(B,SID)在屬性A和B上連線,則連線索引記錄包含(RID,SID)對,其中RID和SID分別為來自關係R和S的記錄標示符。因此,連線索引記錄能夠識別可連線的元組,而不必執行開銷很大的連線操作。對於維護來自可連線的關係的外碼和與之匹配的主碼的聯絡,連線索引特別有用。

④OLAP查詢的有效處理

    物化立方體和構造OLAP索引結構的目的是加快資料立方體查詢處理的速度。給定物化的檢視,查詢處理應該安如下步驟進行:

  • 確定哪些操作應當在可利用的方體上執行:這涉及將查詢中的選擇、投影、上卷和下鑽操作轉化成對應的SQL或OLAP操作。例如:資料立方體上的切片和切塊可能對應於物化立方體上的選擇和投影操作。
  • 確定相關操作應當使用那些物化的方體:這涉及到找出可能用於回答查詢的所有物化方體,使用方體之間的“支配”聯絡知識,進行修剪,評估使用剩餘物化方體的開銷,並選擇開銷最小的方體。
    例如:定義了一個資料立方體,形式為sales_cube[time,item,location]:sum(sales_in_dollars)"。所用的維層次對於time是day<month<quarter<year,對於item是item_name<brand<type,對於location是street<city<province_or_state<country。假設待處理的查詢在{brand,province_or_city}上,選擇常量為“year=2010”還假定有四個物化的立方體可用,他們是:{year,item_name,city}{year,brand,country}{year,brand,province_or_state}{item_name,province_or_state}。以上四個方體應該選擇哪一個處理?

9、資料特徵的面向屬性的歸納

    資料立方體方法基本上是基於資料的物化檢視,通常在資料倉儲中預先計算。一般而言,在OLAP或資料探勘查詢提交處理之前,他離線的計算聚集。另一方面,面向屬性的歸納基本上是面向查詢的、基於泛化的、聯機的資料分析處理技術。注意,並不存在按照聯機聚集和離線預計算區分兩種方法的固有界限。資料立方體中有哪些聚集也可以聯機計算,而多維空間的離線預計算要也可以加快面向屬性的歸納速度。

    面向屬性歸納的基本思想是:首先使用資料庫查詢收集相關的資料,然後,通過考察任務相關資料中每個屬性的不同值的個數進行泛化。泛化或者通過屬性刪除、或者通過屬性泛化進行。聚集通過合併相同的廣義元組,並收集他們對應的計算值進行。這降低了泛化後的資料集合的規模。結果廣義關係可以對映到不同形式提供給使用者。

  • 刪除屬性:如果初始工作關係的某個屬性有大量不同的值,但是在該屬性上沒有泛化操作符,或者他的較高概念用其他屬性表示,則應當將該屬性從工作關係中刪除。
  • 泛化屬性:如果初始工作關係的某個屬性有大量不同的值,並且該屬性上存在泛化操作符的集合,則應當選擇一個泛化操作符,並將它用於該屬性。 該規則基於如下理由:使用泛化操作符泛化工作關係中元組或者規則的屬性值,將使得規則涵蓋更多的後設資料的元組,從而泛化了它所表示的概念。這對應於泛化規則,在例項學習中稱之為沿泛化樹攀升或概念攀升。

    例如: 

  • name:由於name存在大量不同值,並且其上沒有定義泛化操作,因此該屬性被刪除。
  • gender:由於gender只有兩個不同值,因此該屬性保留, 並且不對其進行泛化。
  • birth_place:該屬性有大量不同值,因此應當對他泛化。假設存在birth_place的概念分層,定義為city->province_or_state->country。如果初始工作關係中country的不同值個數大於屬性泛化閥值,則birth_place應當刪除,因為儘管存在泛化操作,泛化閥值也不會滿足。如果country的不同值個數小於泛化閥值,則birth_place應當泛化到birth_country。

    類比較的面向屬性歸納:在許多應用中,使用者可能對單個類的描述或特徵不感興趣,而是希望挖掘一種描述,它將一個類或概念與其他可以比較的類相區分。類區分或比較挖掘區分目標類和它的對比類的描述。注意,目標類和對比類必須是可比較的,意指他們具有相似的維或屬性。例如:person、address、item這三個類不是可比較的。然而,過去三年的銷售是可比較的,電腦科學的學生和物理學的學生也是可比較的。如何進行類比較,一般如下:

  • 資料採集:通過查詢處理收集資料庫中相關資料,並把它劃分成一個目標類和一個或多個對比類。
  • 維相關分析:如果有多個維,則應當在這些類上進行維相關分析,僅選擇與進一步分析高度相關的維。這一步可以使用相關性度量或基於熵的度量。
  • 同步泛化:泛化在目標類上進行,泛化到使用者或領域專家制定的維閥值控制的層,產生主目標類關係。對比類的概念泛化到與主目標類關係相同的層次,形成主對比類關係。
  • 匯出比較的表示:結果類比較描述可以用表、圖或規則的形式視覺化。

    概括的說,與資料立方體方法對比,資料特徵和泛化的面向屬性歸納方法提供了另一種資料泛化方法。它並不侷限於關係資料,因為這種歸納可以在空間、多媒體、序列以及其他型別的資料集上進行。此外,不需要預先計算資料立方體,因為泛化可以基於收集到使用者查詢線上進行。

    此外,可以把自動分析加入這種歸納過程,自動過濾不相關或不重要的屬性。然而,由於面向資料的歸納自動把資料泛化到較高層,因此它不能有效地支援下鑽到比被泛化的關係提供的抽象層還深的層。整合資料立方體技術與面向屬性的歸納可能平衡預計算和聯機計算。當需要下鑽到比被泛化的關係提供的抽象層還深的層時,也能支援快速的聯機計算。

相關文章