數據倉庫分層中的ODS、DWD、DWS

1.數據倉庫DW

1.1簡介

Data warehouse(可簡寫爲DW或者DWH)數據倉庫,是在數據庫已經大量存在的狀況下,爲了進一步挖掘數據資源、爲了決策須要而產生的,它是一整套包括了etl、調度、建模在內的完整的理論體系。數據倉庫的方案建設的目的,是爲前端查詢和分析做爲基礎,主要應用於OLAP(on-line Analytical Processing),支持複雜的分析操做,側重決策支持,聽且提供直觀易懂的查詢結果。比較流行的有:AWS Redshift,Greenplum,Hive等。前端

1.2主要特色

  • 面向主題
    • 操做型數據庫組織面向事務處理任務,而數據倉庫中的數據是按照必定的主題域進行組織。
    • 主題是指用戶使用數據倉庫進行決策時所關心的重點方面,一個主題經過與多個操做型信息系統相關
  • 集成
    • 須要對源數據進行加工與融合,統一與綜合
    • 在加工的過程當中必須消除源數據的不一致性,以保證數據倉庫內的信息時關於整個企業的一致的全局信息。(關聯關係)
  • 不可修改
    • DW中的數據並非最新的,而是來源於其餘數據源
    • 數據倉庫主要是爲決策分析提供數據,涉及的操做主要是數據的查詢
  • 與時間相關
    • 處於決策的須要數據倉庫中的數據都須要標明時間屬性

1.3與數據庫的對比

  • DW:專門爲數據分析設計的,涉及讀取大量數據以瞭解數據之間的關係和趨勢
  • 數據庫:用於捕獲和存儲數據
特性 數據倉庫 事務數據庫
適合的工做負載 分析、報告、大數據 事務處理
數據源 從多個來源收集和標準化的數據 從單個來源(例如事務系統)捕獲的數據
數據捕獲 批量寫入操做經過按照預約的批處理計劃執行 針對連續寫入操做進行了優化,由於新數據可以最大程度地提升事務吞吐量
數據標準化 非標準化schema,例如星型Schema或雪花型schema 高度標準化的靜態schema
數據存儲 使用列式存儲進行了優化,可實現輕鬆訪問和高速查詢性能 針對在單行型物理塊中執行高吞吐量寫入操做進行了優化
數據訪問 爲最小化I/O並最大化數據吞吐量進行了優化 大量小型讀取操做

2.數據分層

數據分層,每一個企業根據本身的業務需求能夠分紅不一樣的層次,可是最基礎的分層思想,理論上數據分爲三個層:數據運營層、數據倉庫層、數據服務層。基於這個基礎分層之上,再提交信息的層次,來知足不一樣的業務需求。mysql

2.1數據運營層(ODS)

  • ODS:Operation Data Store 數據準備區,也稱爲貼源層。數據倉庫源頭系統的數據表一般會原封不動的存儲一份,這稱爲ODS層,是後續數據倉庫加工數據的來源。
  • ODS層數據的來源方式:
    • 業務庫
      • 常常會使用sqoop來抽取,例如天天定時抽取一次。
      • 實時方面,能夠考慮用canal監聽mysql的binlog,實時接入便可。
    • 埋點日誌
      • 日誌通常以文件的形式保存,能夠選擇用flume定時同步
      • 能夠用spark streaming或者Flink來實時接入
      • kafka也OK
    • 消息隊列:即來自ActiveMQ、Kafka的數據等。

2.2數據倉庫層(DW)

DW數據分層,由下到上爲DWD,DWB,DWS。sql

  • DWD:data warehouse details 細節數據層,是業務層與數據倉庫的隔離層。主要對ODS數據層作一些數據清洗和規範化的操做。
    • 數據清洗:去除空值、髒數據、超過極限範圍的
  • DWB:data warehouse base 數據基礎層,存儲的是客觀數據,通常用做中間層,能夠認爲是大量指標的數據層。
  • DWS:data warehouse service 數據服務層,基於DWB上的基礎數據,整合彙總成分析某一個主題域的服務數據層,通常是寬表。用於提供後續的業務查詢,OLAP分析,數據分發等。
    • 用戶行爲,輕度聚合
    • 主要對ODS/DWD層數據作一些輕度的彙總。

2.3數據服務層/應用層(ADS)

  • ADS:applicationData Service應用數據服務,該層主要是提供數據產品和數據分析使用的數據,通常會存儲在ES、mysql等系統中供線上系統使用。
    • 咱們經過說的報表數據,或者說那種大寬表,通常就放在這裏

3.附錄

ETL

  • ETL :Extract-Transform-Load,用於描述將數據歷來源端通過抽取、轉換、加載到目的端的過程。

寬表

  • 含義:指字段比較多的數據庫表。一般是指業務主體相關的指標、緯度、屬性關聯在一塊兒的一張數據庫表。
  • 特色:
    • 寬表因爲把不一樣的內容都放在同一張表,寬表已經不符合三範式的模型設計規範:
      • 壞處:數據有大量冗餘
      • 好處:查詢性能的提升和便捷
    • 寬表的設計普遍應用於數據挖掘模型訓練前的數據準備,經過把相關字段放在同一張表中,能夠大大提供數據挖掘模型訓練過程當中迭代計算的消息問題。

數據庫設計三範式

爲了創建冗餘較小、結構合理的數據庫,設計數據庫時必須遵循必定的規則。在關係型數據庫中這種規則就稱爲範式。範式時符合某一種設計要求的總結。數據庫

  1. 第一範式:確保每列保持原子性,即要求數據庫表中的全部字段值都是不可分解的原子值
  2. 第二範式:確保表中的每列都和主鍵相關。也就是說在一個數據庫表中,一個表中只能保存一種數據,不能夠把多種數據保存在同一張數據庫表中
    1. 做用:減小了數據庫的冗餘
  3. 第三範式:確保每列都和主鍵列直接相關,而不是間接相關。
相關文章
相關標籤/搜索