資料倉庫分層架構

語言: CN / TW / HK

資料倉庫採用分層架構,分為緩衝層、操作資料層、明細資料層、彙總資料層和資料集市層。如圖為資料倉庫分層架構示意圖。

1、緩衝層

概念:用於儲存每天的增量資料和變更資料。

  • 資料生成方式:直接從 Kafka 接收源資料或從業務庫抽取,需要業務表每天生成 update、delete、insert 資料,只生成 insert 資料的業務表,資料直接接入操作資料層。

  • 討論方案:只把 Kafka 訊息直接接入緩衝層,對於其他有拉鍊資料的業務,也接入緩衝層。

  • 日誌刪除方式:只儲存最近幾天的資料。

  • 表 Schema:一般按天建立分割槽。

2、操作資料層

概念:資料倉庫的細節資料層,對緩衝層資料進行沉澱,減小了抽取的複雜性。同時 ODS 的資訊模型組織主要遵循企業業務事務處理的形式,將各種專業資料進行集中,操作資料層的粒度跟緩衝層一致。

  • 資料生成方式:部分資料直接來自 Kafka,部分資料為緩衝層資料與歷史資料的合成。

  • 討論方案:每天把操作資料層的前天全量資料和緩衝層的昨天新資料合成一個新的資料表,覆蓋舊錶。

  • 日誌刪除方式:長久儲存。

  • 表 Schema:一般按天建立分割槽,沒有時間概念的按具體業務選擇分割槽欄位。

3、明細資料層

概念:資料倉庫的明細資料層,同時 DWD 的資訊模型組織主要遵循企業業務事務處理的形式,將各種專業資料進行集中,明細資料層的粒度跟操作資料層一致,屬於分析的公共資源。 ○

  • 資料生成方式:在操作資料層清洗或 JOIN 維度表之後生成。

  • 日誌刪除方式:長久儲存。

  • 表 Schema:一般按天建立分割槽,沒有時間概念的按具體業務選擇分割槽欄位。

  • 庫與表命名:庫名為 dwd;表名,初步考慮格式為 dwd_業務表名。

  • 舊資料更新方式:直接覆蓋。

4、彙總資料層

概念:在資料倉庫中明細資料層和資料集市層之間的一個過渡層次,對明細資料層的生產資料進行輕度綜合和彙總統計。彙總資料層與明細資料層的主要區別在於二者的應用領域不同,明細資料層的資料來源於生產型系統,併為滿意一些不可預見的需求而進行沉澱;彙總資料層則面向分析型應用進行細粒度的統計和沉澱。

  • 資料生成方式:由明細資料層按照一定的業務需求生成輕度彙總表。明細資料層需要複雜清洗的資料和需要 MR 處理的資料也經過處理後接入彙總資料層。

  • 日誌刪除方式:長久儲存。

  • 表 Schema:一般按天建立分割槽,沒有時間概念的按具體業務選擇分割槽欄位。

  • 庫與表命名:庫名為 dws;表名,初步考慮格式為 dws_日期_業務表名。

  • 舊資料更新方式:直接覆蓋。

5、資料集市層

概念:資料集市層又稱為資料集市或寬表。按照業務劃分,如流量、訂單、使用者等,生成欄位比較多的寬表,用於提供後續的業務查詢、OLAP 分析、資料分發等。

  • 資料生成方式:由彙總資料層和明細資料層的資料計算生成。

  • 日誌刪除方式:長久儲存。

  • 表 Schema:一般按天建立分割槽,沒有時間概念的按具體業務選擇分割槽欄位。

  • 庫與表命名:庫名為 dm;表名,初步考慮格式為 dm_業務表名。

  • 舊資料更新方式:直接覆蓋。

總結起來,資料倉庫分層有如下好處。

第一,資料結構更明確。分層之後,每一層都有其作用域,這樣我們在使用表的時候,能更方便地理解,提高工作效率。

第二,資料血緣追蹤,便於管理。資料團隊產出的是一個個能直接使用的業務表,這些表的來源有很多,假如某一個來源表出問題了,但有了分層,資料血緣關係更清晰,它能夠幫助我們快速準確地定位到問題,並清楚問題的影響範圍。

第三,複雜問題簡單化。分層之後,一個複雜的任務被分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。而且便於維護資料的準確性,當資料出現問題之後,可以不用修復所有的資料,只需要從有問題的步驟開始修復即可。

第四,表共用,減少了重複計算。由於資料倉庫的分層設計,通過開發一些共用的中間層資料表,進而減少了重複計算,節省了計算資源。

第五,遮蔽原始資料的異常和業務變更的影響。比如,當業務發生變更(如對日誌增加了一個新的欄位)時只會影響最底層的資料倉庫表結構,不會影響上層的資料業務層(如資料集市層),應用方對底層的資料異常無感知,從而降低了應用方因資料異常和業務變更帶來的風險。