最詳細!深入淺出理解「3層6類」資料分層

編輯導語:本篇作者是給我們講述了資料組成及其表現形式,重點講解了“資料分層”這個概念的意義、背景、邏輯和其應用等,一起來看一下。

最詳細!深入淺出理解「3層6類」資料分層

上一節講述了資料的基本定義,按正常流程應該來為大家介紹資料的採集和處理,但是這一節主要來說明資料組成以及表現形式。因為這對一個數據產品而言是至關重要的一部分,好比必須要學好數學,你掌握了阿拉伯數字之後必須要掌握四則運算一樣。現在咱們來講一下資料的“四則運算”。

講到這裡,咱們就要引入一個概念“資料分層”。講資料分層之前,咱們先來說一個貼近現實生活的例子,幫助大家更好地理解資料分層:

如果把資料看作圖書館裡的書,我們希望看到它們在書架上分門別類地放置;如果把資料看作城市的建築,我們希望城市規劃佈局合理;如果把資料看作電腦檔案和資料夾,我們希望按照自己的習慣有很好的資料夾組織方式,而不是糟糕混亂的桌面,經常為找一個檔案而不知所措。

簡單來說,資料分層是把現實世界中收集到的有效資訊用更加合理的方式表現出來,從而可以更快速的去解決問題。

一、資料分層的意義

還記得上篇文章中,我們如何定義資料的嗎?

資料:是透過觀測得到的數字性的特徵或資訊。

所以,資料只是我們對客觀世界的記錄,而資料建模是我們對資料的抽象,為什麼要對資料進行抽象呢?

設想一下這樣的場景,資料爆炸的時代,資料的體量每天、每小時、甚至每秒都在激增。當這樣的資料不斷的出現,沒有一套科學的方法去對這些資料進行整理和歸檔,我們永遠無法從海量資料中獲取到有價值的資料。

所以資料分層的意義在於:

降低儲存成本

:減少不必要的資料冗餘,從而極大地降低儲存和計算成本,更好且有效的利用資料。

提高使用效率

:當業務發生變化時,可以更加方便的進行擴充套件,提高資料穩定性和連續性。

保障資料質量

:良好的資料模型能改善資料統計口徑的不一致性,減少資料計算錯誤的可能性。

資料模型能夠促進業務與技術進行有效溝通,形成對主要業務定義和術語的統一認識,具有跨部門、中性的特徵,可以表達和涵蓋所有的業務。

二、資料分層的背景

當企業發展到一定階段,傳統的資料庫無法承載大量的資料承載,尤其在資料多而繁雜的情況下,對於使用者,需要數可以更加清晰且有邏輯的適用;對於維護者可以高效有序的進行維護,分層資料設計,即資料倉庫dw應運而生。

說起資料倉庫,不得不提到創造他的人,比爾。恩門(Bill Inmon)。他在自己的著作《建立資料倉庫》一書中所提出的資料倉庫的定義:“資料倉庫是一個面向主題的(Subject Oriented)、整合的(Integrated)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的資料集合,用於支援管理決策(Decision Making Support)。”

簡單來解釋,就是把大量資料更有邏輯的組合在一起,並且同時方便使用者和建立者進行操作與應用。

三、資料分層的邏輯

上面兩個圖可以很清晰的看出分層後的好處,把一團亂麻的資料表進行分層和整理。數倉分層的價值在於:

方便使用:將多而繁雜的資料表透過一定的結構進行規範,便於使用方進行使用。

追溯源頭:分層後的資料血緣非常明確,可以快速獲取上游資料的來源。

易於維護:規範後資料可以減少資料開發,節約各類計算儲存資源,方便維護人員進行維護。

簡化工作:當發生變化時,可以針對單點進行針對處理,大大簡化工作量。

最詳細!深入淺出理解「3層6類」資料分層

那我們如何進行資料分層呢?大概需要分幾層呢?

其實這個問題需要根據實際的業務狀況以及需要處理的資料體量來進行劃分,介紹分層之前,咱們先來了解下會有哪些分層,每層的作用和目的是啥。

1.第一層:操作資料儲存層 ODS

ODS層中的資料是從各類業務系統中(銷售系統、客戶關係管理系統等等)直接匯入本層。本層資料本身的特點是基本上最大程度還原業務系統中的資料。接入之前需要進行清洗等操作,保證接入本層的資料儘可能是潔淨可用的。

ODS層的表通常包括兩類,一個用於儲存當前需要載入的資料,一個用於儲存處理完後的歷史資料。

特點:分層中最細粒度的資料,整體數倉中最底層的資料,進行簡單加工後直接從業務系統接入。

資料來源:

1)業務庫

經常會使用sqoop來抽取,例如每天定時抽取一次。

實時方面,可以考慮用canal監聽mysql的binlog,實時接入即可。

2)埋點日誌

日誌一般以檔案的形式儲存,可以選擇用flume定時同步。

可以用spark streaming或者Flink來實時接入。

kafka。

訊息佇列:即來自ActiveMQ、Kafka的資料等。

2. 第二層:資料倉庫層 DW

1)第一類:公共維度彙總層 DIM(Dimension)

主要由維度表(維表)構成。維度是邏輯概念,是衡量和觀察業務的角度。維表是根據維度及其屬性將資料平臺上構建的物理化的表,採用寬表設計的原則。

2)第二類:資料倉庫層DW(Data Warehouse)

這一層是基於ODS和DIM層的資料做輕度彙總。所謂輕度彙總就是按照一定的主題去組合這些資料,例如:作者資訊表、使用者資訊表、稿件資訊表。

資料倉庫層從上到下,又可以分為3個層:資料細節層DWD、資料中間層DWM、資料服務層DWS。

資料細節層:data warehouse details,DWD:這層目的在於將ODS層進行和DW層進行隔離。進入DW層之前同樣需要把資料進行處理和清洗,例如:除去空資料和髒資料等等。

資料中間層:Data Warehouse Middle,DWM;該層是在DWD層的資料基礎上,對資料做一些輕微的聚合操作,生成一些列的中間結果表,提升公共指標的複用性,減少重複加工的工作。

資料服務層:Data Warehouse Service,DWS;該層是基於DWM上的基礎資料,整合彙總成分析某一個主題域的資料服務層,一般是寬表,用於提供後續的業務查詢,OLAP分析,資料分發等。一般來說,該層的資料表會相對較少;一張表會涵蓋比較多的業務內容,由於其欄位較多,因此一般也會稱該層的表為寬表。

3. 第三類:應用資料服務層 ADS

Application Data Service。該層主要是提供資料產品和資料分析使用的資料,一般會存放在ES、MySQL等系統中供線上系統使用,也可能會存在Hive或者Druid中供資料分析和資料探勘使用。

ADS層資料是資料倉庫的最後一層資料,以DWS層資料為基礎進行資料處理。

那常見的分層結構有哪些呢?如何去應用這些分層呢?

四、常見的資料分層應用

這3大類5層的資料層,是層層遞進,並非每一層都是必不可少的,想要建設一套較為標準的數倉,現在市面上都是如何進行構建呢?

1. 三級數倉分層

我們先來看下簡單的三級分層,三級分層氛圍ODS、DWD、DWM層這三層。每一層的目的和作用如下:

1)第一層:ODS層

用於存放從業務系統直接抽取出來的資料,這些資料從資料結構、資料之間的邏輯關係上都與業務系統基本保持一致,因此在抽取過程中極大降低了資料轉化的複雜性,而主要關注資料抽取的介面、資料量大小、抽取方式等方面的問題。

下面是兩個例子,分別適用於傳統行業和網際網路行業:

傳統行業ODS層:各業務系統對接來的資料。拿交易源資料來說(每次訂單的記錄,一個訂單有多個記錄)。例如:交易源資料、使用者源資料、貨物源資料

網際網路行業ODS層:除業務系統外,還會對接日誌採集系統。拿app日誌埋點來說,本層會記錄使用者每次登陸、app內的行為資料,一個使用者會有多條記錄)。例如:APP日誌資料、小程式日誌資料、使用者登入資料等等

2)第二層:DWD層

主要存檔從ODS層彙總上來的資料,以業務過程作為建模驅動,基於每個具體的業務過程特點,構建最細粒度的明細事實表。可將某些重要屬性欄位做適當冗餘,也即寬表化處理。從ODS層彙總上來的資料。最大限度保證與ODS層資料一致。

下面是兩個例子,分別適用於傳統行業和網際網路行業:

傳統行業DWD層:拿訂單資料來說,本層會記錄訂單粒度的支付情況,一個訂單僅有一條記錄。例如:訂單交易表、使用者表、活動表、貨物表。

網際網路行業DWD層:拿使用者登入表來說,本層記錄使用者在。

3)第三層:DWM層

是對DWD層的生產資料進行輕度綜合和彙總統計(可以把複雜的清洗,處理包含,如根據PV日誌生成的會話資料)。輕度綜合層與DWD的主要區別在於二者的應用領域不同,DWD的資料來源於生產型系統,並未滿意一些不可預見的需求而進行沉澱;輕度綜合層則面向分析型應用進行細粒度的統計和沉澱。例如:按照天粒度去彙總某一主題的資料情況。

傳統行業DWM層:從DWD層交易表(天粒度)、使用者表(天粒度)、貨物表(天粒度)。

網際網路行業DWM層:使用者登入行為表(天粒度)、訂單表(天粒度)。

最詳細!深入淺出理解「3層6類」資料分層

2. 四級資料分層

在上述三層的基礎之上,增加第四層DWS層。

1)第四層:DWS層

DWS=DWD+DWM

透過由輕度彙總層和明細層資料計算生成。又稱資料集市或大寬表。按照業務劃分,如流量、訂單、使用者等,生成欄位比較多的寬表, 用於提供後續的業務查詢,OLAP分析,資料分發等。

傳統行業DWS層:使用者主題寬表、貨物主題寬表、店鋪主題寬表。

網際網路行業DWS層:使用者主題寬表、店長主題寬表。

最詳細!深入淺出理解「3層6類」資料分層

3. 五級資料分層

在上述四層的基礎上,增加第五層ADS層。

1)第五層:ADS層

ADS層可以理解為對業務的“專屬定製表”。ADS ≈ DWD+DWS,而且和DWD、DWS的表名側重於object或使用者行為不同的是,ADS的表名可以看出有特定的業務特徵。

傳統行業ADS層:爆款商品排行表、高價值使用者表、使用者近30天留存表。

網際網路行業ADS層:業務大盤表、使用者生命週期表、使用者近7天留存表。

最詳細!深入淺出理解「3層6類」資料分層

本文由 @資料產品高遠 原創釋出於人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基於CC0協議

頂部