天天看點

實時資料倉庫

本文我們來探讨下實時資料倉庫,從以下幾個方面出發:

  1.    什麼是實時資料倉庫
  2.   實時資料倉庫的産生背景
  3.   實時資料倉庫的發展現狀
  4.   實時資料倉庫的資料特點是什麼
  5.   實時資料倉庫的架構
  6.   實時資料倉庫的分層架構設計
  7.   實時資料倉庫的資料模組化方法
  8.   實時資料倉庫的技術選型以及對比
  9.   實時資料倉庫的前景

 1. 什麼是實時資料倉庫

                 網際網路的迅猛發展使得資料不再昂貴,而如何從資料中更快速擷取價值變得日益重要,是以,資料實時化成為了一個大趨勢。越來越多的業務場景需要實時分析,以極低的延遲來分析實時資料并給出分析結果,進而提高業務效率,帶來更高價值。流式處理作為實時處理的一種重要手段     實時資料倉庫由離線數倉融合發展而來,對比離線數倉,實時數倉既有與其相同之處,也有其獨特之處,一般來說,離線數倉隻能支援T+1天時效延遲的資料處理,資料處理過程以ETL為主,最終産出以報表為主。而實時數倉 建立在離線數倉基礎之上,同時增加了更多樣化資料源的導入存儲,更多樣化資料處理方式和時效(支援T+0天時效),更多樣化資料使用方式和更多樣化資料終端服務。

 2. 實時資料倉庫的産品背景

                 1.越來越多的實時資料需求(資料報表、儀表闆、分析、挖掘、資料應用等)。

                 2. 随着業務的增長,客戶對資料實時性的需求不斷增加,實時報表,實時資料大盤,實時名額計算等業務都需要實時             資料。資料從生産到應用(資料報表、儀表闆、分析、挖掘、資料應用 等)需要做到秒級延遲。

 3.實時資料倉庫的發展現狀

               目前實時資料倉庫的建設還沒有形成一套完善的方法論,基本上都是借鑒離線資料倉庫的建設方式,并在此基礎先加以改進,并根據公司自己的資料,業務特點,提出自己的實時資料倉庫的建設方法。是以出現了各種各樣的實時資料倉庫的架構,但是基本的建設方式還是大同小異;尤其随着flink的廣泛應用,這種批流統一的特性,更加崔進了實時資料倉庫的發展。

 4. 實時資料倉庫的資料特點是什麼

                1.資料實時化,是指資料從産生(更新至業務資料庫或日志)到最終消費(資料報表、儀表闆、分析、挖掘、資料應用   等),支援毫秒級/秒級/分鐘級延遲(嚴格來說,秒級/分鐘級屬于準實時,這裡統一稱為實時)。這裡涉及到如何将資料實時的從資料源中抽取出來;如何實時流轉;為了提高時效性,降低端到端延遲,還需要有能力支援在流轉過程中進行計算處理;如何實時落庫;如何實時提供後續消費使用。實時同步是指多源到多目标的端到端同步,流式處理指在流上進行邏輯轉換處理。

                2.面向主題的資料組織方式,實時資料倉庫同離線資料倉裡一樣,面向主題組織資料

 5.實時資料倉庫的架構

實時資料倉庫

 6.實時資料倉庫的分層架構設計(Kappa架構)

實時資料倉庫

      實時資料倉庫分層設計參考離線資料倉庫的設計方式,不同點在于,實時資料倉庫的資料,除去APP層的資料需要落到查詢,分析類的存儲中,比如:mysql,tidb,hbase,ElasticSearch,solr 等,其他的資料需要落地到消息隊列中(Kafka,阿裡雲的datahub等)。

  •     源資料層

              主要是企業内部的業務資料,通過爬蟲爬出來的行業資料,以及一些埋點資料。是整個公司的業務的資料的集合。

  •     ODS層

              接入Kafka的原始資料(json),經過實時程式處理,一般情況下,在這層的資料和源資料的資料保持一緻,不對資料進行任何的改變,貼源設計

  •     DIM層

            維表層,主要存儲一些次元資料,這層的資料需要落地到具體的存儲中,一般會存在redis,或者關系型資料庫中,實時資料倉庫的次元資料包括兩部分:業務次元資料和離線次元資料

            業務次元資料:主要通過業務資料庫直接同步過來,可以考慮實時同步(根據具體的業務選擇)

            離線資料次元:離線資料倉庫的次元資料同步至實時資料倉庫,對于一些從事實表中抽取出來的次元,實時資料倉庫需要從離線資料倉庫同步這些次元表至實時資料倉庫,一種比較優秀的做法是,所有的維表資料都從離線資料倉庫同步至實時資料倉庫,這樣能保證離線和實時的資料次元一緻,當然肯定會損失部分資料的實時性

  •     DWD層

              實時明細層,這層的資料是經過清洗後的明細資料層,一般情況這層的資料,是一個大寬表,直接可以進行查詢,或者         提供業務,當然,這層的資料是需要落地到存儲系統中的作為備份,防止資料丢失。

  •     DWS層

             輕度彙總層資料,通過一定的時間視窗,對資料進行彙總,這層的資料主要是一些通用名額的彙總,一般情況下這層的          資料通過同步鍊路直接寫入APP層提供服務

  •     DM層

            資料集市層,這層的資料主要是為部門或者某個業務線提供個性化的資料,這部分資料一般會根據業務需要,落地到部門自己的存儲中

  •     APP層

          應用層,這層的資料一般都會落地到資料存儲中(tidb,hbase),提供資料服務

 7.實時資料倉庫的資料模組化方法

  次元模組化:一般次元模組化的步驟如下:

 1. 選擇業務過程

        業務過程是一系列操作活動,轉換為事實表中的事實,例如每個月的每個賬單快照

 2. 聲明粒度

        粒度是指事實表中的一行代表什麼,同一個事實表不能混用粒度,最好從最小的粒度開始設計次元,因其可能承受使用者無法預計的查詢需求

 3.确認次元

       次元是根據粒度将表分開成多個次元表,即從不同的次元(角度)去看

      次元是資料倉庫的靈魂,是BI的入口和驅動

4.确認事實

      事實是指一種在某個粒度下的度量,例如在銷售次元中,銷量和總額是良好的事實,而商店經理的工資則不允許出現在該次元中。

優點:

     友善使用

    适合大資料下的資料處理場景(與大資料的處理方式有關,适合處理大檔案,不适合處理小檔案,避免多表關聯)

    适合進行OLAP操作

  主要是采用次元模組化中的星型模型

 8.  實時資料倉庫的技術選型以及對比

     實時資料處理技術目前支援的技術有spark Streaming,storm ,flink 等,對比如下圖:

實時資料倉庫
實時資料倉庫
實時資料倉庫
實時資料倉庫

                 目前來看,storm基本已經很少被使用,spark streaming 是目前用的比較多的實時資料處理架構,flink具有天然的

實時屬性(以流模拟批),發展勢頭很猛,未來會有很大可能替代spark streaming

9.  實時資料倉庫的前景

          平台化是實時資料倉庫發展的一個必經階段,平台化可以降低實時資料的開發門檻,提高開發效率。降低業務維護成本高,以及資源的合理利用,使得實時資料任務不但具有實時性,更具有普遍性,如下圖:

實時資料倉庫

繼續閱讀