數據倉庫
- 數據倉庫的定義
- 數據倉庫的特點
- 數據倉庫和數據庫的對比
- OLAP和OLTP的區別
- 什麼是ETL
- 主流數據倉庫
- 數據倉庫與Hadoop生態
數據倉庫的定義
數據倉庫,英文名稱Data Warehouse,簡寫爲DW。數據倉庫顧名思義,是一個很大的數據存儲集合,出於企業的分析性報告和決策支持目的而創建,對多樣的業務數據進行篩選與整合。它爲企業提供一定的BI(商業智能)能力,指導業務流程改進、監視時間、成本、質量以及控制。
數據倉庫的輸入方是各種各樣的數據源,最終的輸出用於企業的數據分析、數據挖掘、數據報表等方向。
數據倉庫的特點
主題性
不同於傳統數據庫對應於某一個或多個項目,數據倉庫根據使用者實際需求,將不同數據源的數據在一個較高的抽象層次上做整合,所有數據都圍繞某一主題來組織。
這裏的主題怎麼來理解呢?比如對於滴滴出行,“司機行爲分析”就是一個主題,對於鏈家網,“成交分析”就是一個主題。
集成性
數據倉庫中存儲的數據是來源於多個數據源的集成,原始數據來自不同的數據源,存儲方式各不相同。要整合成爲最終的數據集合,需要從數據源經過一系列抽取、清洗、轉換(ETL)的過程。
穩定性
數據倉庫中保存的數據是一系列歷史快照,不允許被修改。用戶只能通過分析工具進行查詢和分析。
時變性
數據倉庫會定期接收新的集成數據,反應出最新的數據變化。這和穩定性特點並不矛盾。
數據倉庫和數據庫的對比
|
數據庫 |
數據倉庫 |
---|---|---|
面向 |
面向事務 |
面向主題設計 |
存儲數據 |
存儲在線交易數據 |
存儲歷史數據 |
規則設計 |
儘量避免冗餘,一般採用符合範式的規則來設計 |
有意引入冗餘,採用反範式的方式來設計 |
數據設計 |
捕獲數據 |
分析數據 |
OLAP和OLTP的區別
面向業務的數據庫常稱作OLTP,面向分析的數據倉庫亦稱爲OLAP
數據處理大致可以分成兩大類:
- 聯機事務處理OLTP(on-line transaction processing)、
- 聯機分析處理OLAP(On-Line Analytical Processing)。
OLTP是傳統的關係型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。OLAP是數據倉庫系統的主要應用,支持複雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果。
OLTP 系統強調數據庫內存效率,強調內存各種指標的命令率,強調綁定變量,強調併發操作;
OLAP 系統則強調數據分析,強調SQL執行市場,強調磁盤I/O,強調分區等。
OLTP,也叫聯機事務處理(Online Transaction Processing)
表示事務性非常高的系統,一般都是高可用的在線系統,以小的事務以及小的查詢爲主,評估其系統的時候,一般看其每秒執行的Transaction以及Execute SQL的數量。在這樣的系統中,單個數據庫每秒處理的Transaction往往超過幾百個,或者是幾千個,Select 語句的執行量每秒幾千甚至幾萬個。典型的OLTP系統有電子商務系統、銀行、證券等,如美國eBay的業務數據庫,就是很典型的OLTP數據庫。
OLAP,也叫聯機分析處理(Online Analytical Processing)系統,
有的時候也叫DSS決策支持系統,就是我們說的數據倉庫。在這樣的系統中,語句的執行量不是考覈標準,因爲一條語句的執行時間可能會非常長,讀取的數據也非常多。所以,在這樣的系統中,考覈的標準往往是磁盤子系統的吞吐量(帶寬),如能達到多少MB/s的流量。
DML,數據操縱語言(Data Manipulation Language, DML)
數據操縱語言(Data Manipulation Language, DML)是SQL語言中,負責對數據庫對象運行數據訪問工作的指令集,以INSERT、UPDATE、DELETE三種指令爲核心,分別代表插入、更新與刪除,是開發以數據爲中心的應用程序必定會使用到的指令,因此有很多開發人員都把加上SQL的SELECT語句的四大指令以“CRUD”來稱呼。
DML 的主要功能即是訪問數據,因此其語法都是以讀取與寫入數據庫爲主,除了INSERT以外,其他指令都可能需搭配WHERE指令來過濾數據範圍,或是不加WHERE指令來訪問全部的數據。
數據分析體系與其他業務類系統有着顯著的不同。
業務類系統主要供基層人員使用,進行一線業務操作,通常被稱爲OLTP(On-Line Transaction Processing,聯機事務處理);
數據分析的目標則是探索並挖掘數據價值,作爲企業高層進行決策的參考,通常被稱爲OLAP(On-Line Analytical Processing,聯機分析處理);
從功能角度來理解,OLTP負責基本業務的正常運轉,而業務數據積累時所產生的價值信息則被OLAP不斷呈現,企業高層通過參考這些信息會不斷調整經營方針,也會促進基礎業務的不斷優化,這是OLTP與OLAP最根本的區別。
什麼是ETL?
- Extract,數據抽取,將數據從各種原始的業務系統中讀取出來,這是所有工作的前提。
- Transform,數據轉換,按照預先設計好的規則將抽取得數據進行轉換,使本來異構的數據格式能統一起來。如果用在數據倉庫的場景下,Transform也包含數據清洗,清洗掉噪音數據。
- Load 數據加載,將轉換完的數據按計劃增量或全部導入到數據倉庫中。
ETL是BI/DW(商務智能/數據倉庫)的核心和靈魂,按照統一的規則集成並提高數據的價值,是負責完成數據從數據源向目標數據倉庫轉化的過程,是實施數據倉庫的重要步驟。
Hadoop生態體系中的Sqoop就是一款ETL工具。
Sqoop 是 Apache 旗下一款“Hadoop 和關係數據庫服務器之間傳送數據”的工具。核心的功能有兩個:
- 導入數據:MySQL,Oracle 導入數據到 Hadoop 的 HDFS、HIVE、HBASE 等數據存儲系統;
- 導出數據:從 Hadoop 的文件系統中導出數據到關係數據庫 ,例如mysql 等;
Sqoop 的工作機制:將導入或導出命令翻譯成 MapReduce 程序來實現 ,在翻譯出的 MapReduce 中主要是對 InputFormat 和 OutputFormat 進行定製;
主流數據倉庫
Hive
Hive是基於Hadoop的數據倉庫工具,可以對存儲在HDFS上的文件數據集進行查詢和分析處理。Hive對外提供了類似於SQL語言的查詢語言 HiveQL,在做查詢時將HQL語句轉換成MapReduce任務,在Hadoop層進行執行。
- HDFS:Hadoop的分佈式文件系統,在這裏作爲數據倉庫的存儲層。圖中的Data Node就是HDFS的衆多工作節點。
- MapReduce:一種針對海量數據的並行計算模型,可以簡單理解爲對多個數據分片的數據轉換和合並。
Teradata
Teradata 的確是一款很強大的商業數據倉庫。Teradata數據倉庫配備性能最高、最可靠的大規模並行處理 (MPP) 平臺,能夠高速處理海量數據,其性能遠遠高於Hive。
數據倉庫與和Hadoop生態
元數據的定義
元數據(Metadata)是關於數據的數據。
在數據倉庫系統中,元數據是描述數據倉庫內數據的結構和建立方法的數據,可將其按用途的不同分爲兩類:
- 技術元數據(Technical Metadata)
- 業務元數據(Business Metadata)。
上圖是數據倉庫系統的一般體系結構
技術元數據
技術元數據是存儲關於數據倉庫系統技術細節的數據,是用於開發和管理數據倉庫使用的數據,它主要包括以下信息:
- 數據倉庫結構的描述,包括倉庫模式、視圖、維、層次結構和導出數據的定義,以及數據集市的位置和內容;
- 業務系統、數據倉庫和數據集市的體系結構和模式
- 彙總用的算法,包括度量和維定義算法,數據粒度、主題領域、聚集、彙總、預定義的查詢與報告;
- 由操作環境到數據倉庫環境的映射,包括源數據和它們的內容、數據分割、數據提取、清理、轉換規則和數據刷新規則、安全(用戶授權和存取控制)。
業務元數據
業務元數據從業務角度描述了數據倉庫中的數據,它提供了介於使用者和實際系統之間的語義層,使得不懂計算機技術的業務人員也能夠“讀懂”數據倉庫中的數據。業務元數據主要包括以下信息:使用者的業務術語所表達的數據模型、對象名和屬性名;訪問數據的原則和數據的來源;系統所提供的分析方法以及公式和報表的信息;具體包括以下信息:
- 企業概念模型:這是業務元數據所應提供的重要的信息,它表示企業數據模型的高層信息、整個企業的業務概念和相互關係。以這個企業模型爲基礎,不懂數據庫技術和SQL語句的業務人員對數據倉庫中的數據也能做到心中有數。
- 多維數據模型:這是企業概念模型的重要組成部分,它告訴業務分析人員在數據集市當中有哪些維、維的類別、數據立方體以及數據集市中的聚合規則。這裏的數據立方體表示某主題領域業務事實表和維表的多維組織形式。
- 業務概念模型和物理數據之間的依賴:以上提到的業務元數據只是表示出了數據的業務視圖,這些業務視圖與實際的數據倉庫或數據庫、多維數據庫中的表、字段、維、層次等之間的對應關係也應該在元數據知識庫中有所體現。
參考文獻
- 基於大數據體系構建數據倉庫——第一節——認識數據倉庫
- 聊一聊數據倉庫中的元數據管理系統
- 數據倉庫與元數據管理
- OLAP、OLTP的介紹和比較
- OLAP和OLTP的區別(基礎知識)
- DML百度百科
- 大數據分析之OLTP與OLAP的區別
- Sqoop學習之路 (一)