10 分鐘瞭解啥是數倉

隨着互聯網及物聯網等技術發展,越來越多的數據被生成,如何有效利用這些數據就成爲了企業決勝的法寶了。大型公司會基於數據做出 BI、推薦系統、決策支持、統計分析、報表等業務。

其中數據存儲涉及衆多知識點,本文目的就是對這些名詞術語及內涵進行解析,便於讀者對數據平臺相關的概念有全面的認識。

1 OLTP VS OLAP

1970 年隨着關係數據庫理論的提出,誕生了一系列經典的 RDBMS,如 MySQL、Oracle、SQL Server、DB2 等。這些 RDBMS 爲社會信息化的發展做出的重大貢獻。然而隨着數據庫使用範圍的不斷擴大,它被逐步劃分爲操作型數據庫OLTP分析型數據庫OLAP

1.1 OLTP

操作型數據庫 OLTP(On-Line Transaction Processing 聯機事務處理)也可以稱面向交易的處理系統,它是針對具體業務在數據庫聯機的日常操作,通常對記錄進行 CRUD。

OLTP 模式下用戶較爲關心操作的響應時間、數據的安全性完整性併發支持的用戶數等問題。傳統的數據庫系統作爲數據管理的主要手段,主要用於操作型處理。

1.2 OLAP

分析型數據庫 OLAP(On-Line Analytical Processing)叫聯機分析處理,主要用於歷史數據分析。這類數據庫作爲公司的單獨數據存儲,負責利用歷史數據對公司各主題域進行統計分析。爲啥要分成操作型跟分析型呢?原因是他們有太多不同了!

對比

1.3 操作型 OLTP VS 分析型 OLAP

之所以區分爲操作型跟分析型,那是因爲這倆的核心功能不同!前者主要是面向操作,後者主要是面向分析,在細節上存在衆多差異。

1.3.1 數據組成差別
  1. 數據時間範圍不同:一般操作型數據庫只存放 90 天內數據,分析型數據存放數年內數據,所以這倆要進行物理分離。

  2. 數據細節差異不同:操作型數據庫主要存放細節數據,彙總數據是動態技術而成的。分析型數據庫中既存放細節數據又存放用戶關係的彙總數據。

  3. 數據時間表示不同:操作型數據庫反應的是當前狀態,分析師數據庫中既又當前狀態又有過去各時刻的快照數據。

1.3.2 技術差別
  1. 查詢數量跟頻率不同:操作型數據庫查詢頻率但量小,分析型數據庫查詢量大但頻率小。

  2. 數據更新不同:操作型數據庫設計到用戶 CRUD。分析型數據庫屬於歸檔性質存儲,只提供查詢。

  3. 數據冗餘性不同:操作型數據庫在設計表的時候就會減少數據冗餘避免更新複雜。分析型數據庫中則只有查詢功能,因此數據冗餘性一般都存在。

1.3.3 功能差別
  1. 數據讀者不同:操作型數據的使用者是業務環節下的各個角色,比如用戶、商家等。分析型數據庫一般只有研發跟數據分析人員專門使用。

  2. 定位不同:操作型數據庫主要是面向應用層的數據庫,是爲了支持具體業務而存在的。分析型數據庫是針對特定業務主體域的分析人物而創建的,是面向主體型數據庫

2 數倉

2.1 數倉簡介

數倉發展
隨着人類 IT 發展,數據越來越多被產生,並且這些數據還可能跨部門,跨業務。如何把數據集成起來進行 OLAP 是個巨大挑戰。

數據倉庫 (Data Warehouse) 應運而生,數據倉庫是一個面向主題的、集成的、相對穩定的、反映歷史變化的數據集合,用於支持管理中的決策制定

數據倉庫是伴隨着企業信息化發展起來的,在企業信息化的過程中,隨着信息化工具的升級和新工具的應用,數據量變的越來越大,數據格式越來越多,決策要求越來越苛刻,數據倉庫技術也在不停的發展。數據倉庫的趨勢:

  1. 實時數據倉庫以滿足實時化 & 自動化決策需求。

  2. 大數據 & 數據湖以支持大量 & 複雜數據類型 (文本、圖像、視頻、音頻)。

數倉發展
對於數倉可以理解爲原來各個數據孤島中的數據可能存儲位置、存儲格式、編程語言等各個方面不同。數倉要做的就是把數據按照所需格式提取出來,進行轉換、過濾、清洗。最終裝載到數據倉庫,整個過程也叫ETL

  1. 提取 Extraction:表示從操作型數據庫蒐集指定數據。

  2. 轉換 Transformation:表示將數據轉化爲指定格式,並進行數據清洗保證數據質量。

  3. 加載 Load:加載過程表示將轉換過後滿足指定格式的數據加載進數據倉庫。

隨着數倉的不斷普及跟使用,信息產業就開始從以關係型數據庫爲基礎的運營式系統慢慢向決策支持系統發展。這個決策支持系統,其實就是我們現在說的商務智能(Business Intelligence)即 BI。

可以這麼說,數據倉庫爲 OLAP 解決了數據來源問題,數據倉庫和 OLAP 互相促進發展,進一步驅動了商務智能的成熟,但真正將商務智能賦予智能的,其實是數據挖掘。

2.2 數倉特徵

2.2.1 面向主題

面向主題特性是數據倉庫和操作型數據庫的根本區別。

  1. 操作型數據庫是爲了支撐各種業務而建立,是按照業務功能進行組織的。

  2. 分析型數據庫則是爲了對從各種繁雜業務中抽象出來的分析主題進行分析而建立。

  3. 所謂主題是指用戶使用數據倉庫進行決策時所關心的重點方面,如:收入、客戶、銷售渠道等。所謂面向主題,是指數據倉庫內的信息是按主題進行組織的。

2.2.2 集成性

集成性指數據倉庫中的信息不是從各個業務系統中簡單抽取出來的,而是經過一系列加工、整理和彙總的過程,因此數據倉庫中的信息是關於整個企業的一致的全局信息。

2.2.3 企業範圍

數據倉庫內的數據是面向公司全局的。比如某個主題域爲成本,則全公司和成本有關的信息都會被彙集進來。

2.2.4 歷史性

較之操作型數據庫,數據倉庫的時間跨度通常比較長。前者通常保存幾個月,後者可能幾年甚至幾十年。

2.2.5 時變性

時變性是指數據倉庫包含來自其時間範圍不同時間段的數據快照。有了這些數據快照以後,用戶便可將其彙總,通過這些信息,可以對企業的發展歷程和未來趨勢做出定量分析和預測。

2.3  數倉架構

2.3.1 架構

數據倉庫標準上可以分爲四層:ODS(臨時存儲層)、PDW(數據倉庫層)、DM(數據集市層)、APP(應用層)。

DWBI
各個系統的數據通過ETL同步到操作性數據倉庫ODS中,對ODS數據進行面向主題域建模形成 DW(數據倉庫),DM 是針對某一個業務領域建立模型,具體用戶(決策層)查看 DM 生成的報表。

  1. 臨時存儲數據運營層:ODS(Operational Data Store)
    ODS 層將來自不同數據源的數據通過ETL(Extract-Transform-Load)過程匯聚整合成面向主題的、集成的、企業全局的、一致的數據集合。現在可選擇的大數據同步技術也比較多,如 datax,canal,kafka 等。這一層的主要目的是把源系統的數據基本原樣(有些數據敏感等級高不同步)的同步到大數據平臺,因此比較容易進行方案的統一。

  2. 倉庫層:DW(Data Warehouse)
    DW 爲數據倉庫層,DW 層的數據應該是一致的、準確的、乾淨的數據。主要有清洗,拆分,整合,標準化,備份,隔離幾個任務。即對源系統數據進行了清洗後的數據。這一層的數據一般是遵循數據庫第三範式的,在 DW 層會保存 BI 系統中所有的歷史數據,例如保存 10 年的數據。

  1. DW : Data Warehouse 翻譯成數據倉庫,DW 由下到上分爲 DWDDWBDWS

  2. DWD:Warehouse Detail 細節數據層,有的也稱爲 ODS層,是業務層與數據倉庫的隔離層

  3. DWB:Data Warehouse Base 基礎數據層,存儲的是客觀數據,一般用作中間層,可以認爲是大量指標的數據層。

  4. DWS:Data Warehouse Service 服務數據層,基於 DWB 上的基礎數據,整合彙總成分析某一個主題域的服務數據,一般是寬表。

  1. 集市層:DM(Data Mart)
    這一層有一個更直觀的叫法是寬表層,前面提到這一層主要是爲了解決某一類的分析問題,也就是面向分析,既然是面向分析,那麼一般來講是多個業務過程,而將多個業務過程融合成一個分析主題,勢必會關聯很多數據。寬表就是這樣來的。在 OLAP 分析工具還不是很成熟的時候,仍然建議構建多維寬表,這樣可以避免過多的模型間的關聯操作。一般用於機器學習的特徵寬表存在於這一層。集市層構建的好壞有一個比較好的衡量標準就是是否可以滿足超過 80% 的應用層數據需要,剩下的 20% 來源於數倉層。

  2. 應用層:Application 層
    該層數據完全是爲了滿足具體的分析需求而構建的數據,從數據的廣度來說,則並不一定會覆蓋所有業務數據,而是 DM 層數據的一個真子集,從某種意義上來說是 DM 層數據的一個重複。面向應用的特點一般有以下幾個特徵,靈活多變,簡單。靈活多變是說業務需要各種形式或者各種自定義口徑的數據,如 KV 結構的,各種條件來計算的。簡單指的是數據一般是高度彙總的,如報表或者核心 KPI 指標。

2.3.2 數倉分層原因
  1. 用空間換時間:通過大量的預處理來提升應用系統的效率,因此數據倉庫會存在大量冗餘的數據。

  2. 解耦:不分層的話如果源業務系統的業務規則發生變化將會影響整個數據清洗過程,工作量巨大。

  3. 簡化:通過數據分層管理可以簡化數據清洗的過程,因爲把原來一步的工作分到了多個步驟去完成,當數據發生錯誤的時,往往只需要局部調整某個步驟即可。

2.4 元數據介紹

2.4.1 元數據定義

數倉的元數據 Metadata 是關於數據倉庫中數據的數據。它的作用類似於數據庫管理系統的數據字典,可以簡答理解爲一本書的目錄,保存了邏輯數據結構、文件、地址和索引等信息。廣義上講,元數據描述了數據倉庫內數據的結構和建立方法的數據,一般我們會用關係型數據庫來存儲這些數據,比如 MySQL。

元數據是數據倉庫管理系統的重要組成部分,元數據管理器是企業級數據倉庫中的關鍵組件,貫穿數據倉庫構建的整個過程,直接影響着數據倉庫的構建、使用和維護。

  1. 構建數據倉庫的主要步驟之一是ETL。這時元數據將發揮重要的作用,它定義了源數據系統到數據倉庫的映射、數據轉換的規則、數據倉庫的邏輯結構、數據更新的規則、數據導入歷史記錄以及裝載週期等相關內容。數據抽取和轉換的專家以及數據倉庫管理員正是通過元數據高效地構建數據倉庫。

  2. 用戶在使用數據倉庫時,通過元數據訪問數據,明確數據項的含義以及定製報表。

  3. 數據倉庫的規模及其複雜性離不開正確的元數據管理,包括增加或移除外部數據源,改變數據清洗方法,控制出錯的查詢以及安排備份等。

元數據可分爲技術元數據業務元數據

  1. 技術元數據爲開發和管理數據倉庫的 IT 人員使用,它描述了與數據倉庫開發、管理和維護相關的數據,包括數據源信息、數據轉換描述、數據倉庫模型、數據清洗與更新規則、數據映射和訪問權限等。

  2. 業務元數據爲管理層和業務分析人員服務,從業務角度描述數據,包括商務術語、數據倉庫中有什麼數據、數據的位置和數據的可用性等,幫助業務人員更好地理解數據倉庫中哪些數據是可用的以及如何使用。

由上可見,元數據不僅定義了數據倉庫中數據的模式、來源、抽取和轉換規則等,而且是整個數據倉庫系統運行的基礎,元數據把數據倉庫系統中各個鬆散的組件聯繫起來,組成了一個有機的整體,如圖所示

在這裏插入圖片描述

2.4.2 元數據作用

在數倉中元數據的主要作用如下:

  1. 描述哪些數據在數據倉庫中,幫助決策分析者對數據倉庫的內容定位。

  2. 定義數據進入數據倉庫的方式,作爲數據彙總、映射和清洗的指南。

  3. 記錄業務事件發生而隨之進行的數據抽取工作時間安排。

  4. 記錄並檢測系統數據一致性的要求和執行情況。

  5. 評估數據質量。

  6. 相當於寫了一部數據用戶指南手冊

2.5 數據治理

如果你做過推薦系統跟 BI 報表等基於數據的系統,你就會知道數據治理的重要性!如果做過機器學習就會知道數據遠遠比算法更重要。通常我們對數據質量的判斷來自準確性、完整性和一致性三方面,然而這三點原始數據通常並不具備,原始數據一般有如下留個特點。

  1. 數據重複

  2. 字段名跟結構前後不一致

  3. 某些記錄存在字段缺失

  4. 原始數據來源跟格式各不相同

  5. 重點數據存在異常值

在做數據清洗時,一般有如下幾點規則可尋:

  1. 確保原始數據的準確輸入

  2. 小心處理 NA 值跟字符串爲空的字段

  3. 檢查字符型變量僅包含有效值

  4. 檢查數值型變量在預定範圍內

  5. 檢查是否存在缺失數據

  6. 檢查並刪除重複數據

  7. 檢查特殊值是否唯一

  8. 檢查是否存在無效數據

參考

  1. 數倉簡介:https://www.cnblogs.com/coco2015/p/11299620.html

  2. 數倉四萬字:https://t.1yb.co/lQt2

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/-BwEoPbYR0QUvYKAQ-Yy9g