深度解析:數倉分層的重要性和實施策略

0 評論 1042 瀏覽 6 收藏 19 分鐘

為了提高數據質量、數據可用性及應用價值,我們需要進行數倉分層,那么,怎么理解數倉分層?這篇文章里,作者對數倉分層的重要性、分層原則、實施策略等方面進行了總結,一起來看一下。

一、為什么需要數倉分層

假設將數倉中的表拍平,沒有分層概念,只進行簡單的數據清洗后直接應用于數據分析,會出現什么問題:

  • 數據復雜性增加:數倉中的數據通常來自不同的源系統,具有不同的結構和語義。如果沒有分層,直接將所有表拍平存儲,會導致數據復雜性增加,難以理解和維護。分層可以提供邏輯組織和結構化,使數據的使用更加可控和可理解。
  • 數據一致性下降:在沒有分層的情況下,數據的清洗和整合過程可能不夠嚴格和完善,容易導致數據的不一致和錯誤。分層可以在集成層進行統一的數據清洗和轉換,確保數據的一致性和準確性。
  • 數據查詢效率低下:當所有表都被拍平存儲時,數據的訪問變得復雜且低效。數據分析需要從大量扁平化的表中提取所需的數據,會增加查詢開銷和時間。而通過分層結構,可以按需訪問和提取數據,提高查詢效率。
  • 業務需求定制性差:沒有分層的數倉往往無法根據特定業務需求進行定制化的數據提取和分析。不同業務部門或角色的需求各異,如果沒有分層,很難滿足不同用戶對數據的定制化需求。
  • 數據安全隱患:沒有分層可能導致缺乏對敏感數據的有效管理和保護。數據倉庫中可能包含敏感信息,如個人身份信息等,沒有分層會增加數據泄露和濫用的風險。

因此,進行數據倉庫分層是為了解決這些問題,提高數據質量、可用性和應用價值。但是也可能存在以下一些不利影響:

  • 增加實現復雜度:數據倉庫分層需要額外的設計和實現工作。這可能會增加開發和維護成本,對項目進度產生影響。
  • 增加存儲和運行成本:分層會增加數據存儲的需求和計算開銷,因為每個層級都需要獨立的存儲和處理。如果底層數據量較大,會占用更多的存儲空間和計算資源。
  • 可能會引入額外的復雜性:在設計分層結構時,需要考慮何時使用不同的層級,以及如何確保各層之間的數據一致性。如果沒有很好地規劃和管理,分層可能會引入更多的復雜性,導致系統難以理解和管理。
  • 數據更新可能產生延遲:在數據更新過程中,由于需要進行轉換和加載,數據的傳遞和同步可能存在延遲。這可能會影響到數據的實時性和準確性。
  • 需要更多的人員和資源參與:分層結構需要更多的人員和資源參與,包括數據架構師、ETL開發人員、數據質量專家、分析師等等。如果企業需要用到多個數據集,這種需求可能會成為一個持續性開銷。

二、怎么理解數倉分層

當我們處理大量的數據時,數倉分層可以幫助我們更好地組織和管理這些數據。就像一個圖書館一樣,我們把書籍按照不同的類型和主題分到不同的書架上,這樣方便我們找到需要的書。

在數倉中,我們也需要對數據進行分類和整理。分層就像是給數據分類,并將其放在不同的存儲位置。比如,底層是原始數據,這就相當于圖書館的藏書庫房;然后上層是經過清洗和整理后的數據,就像圖書館的閱覽室;再往上是加工過的數據,比如計算出的統計數據或者分析結果,就像圖書館的參考書區。

分層的好處是讓我們更有效地使用數據。想象一下,如果所有的書都亂七八糟地堆在一起,我們要找一本特定的書會非常困難。但如果我們按照分類放置在不同的書架上,我們只需去對應的書架找就可以了。

同樣地,當我們需要特定的數據時,分層讓我們能夠迅速定位到所需數據的位置。如果我們只需要原始數據,我們就去底層找;如果我們需要經過整理的數據,我們就去上層找;如果我們對數據做更深入的分析,我們就去更高層找。

總之,數倉分層幫助我們更好地組織和管理數據,使我們能夠更輕松地找到需要的數據,而不必浪費時間去查找與我們目標無關的數據。這樣我們可以更高效地進行數據分析和利用。

三、數倉一般分為哪些層

1. 貼源數據層:ODS(Operational Data Store)

ODS 層是位于原始數據源和數據倉庫中間的一個層級。它主要用于接收和存儲來自多個源系統的原始操作性數據。ODS 層的數據通常以粒度較細的形式存儲,以支持實時或準實時的數據處理需求。數據從 ODS 層可以被抽取到 DWD 層進行進一步的加工和轉換。

為了考慮后續可能需要追溯數據問題,因此對于這一層就不建議做過多的數據清洗工作,原封不動地接入原始數據即可,至于數據的去噪、去重、異常值處理等過程可以放在后面的DWD層來做。

落地方法:大多直接用數據同步工具直接抽取過去即可。例如:kettle、DataX、NIFI、阿里DTS、DataPipeline等等。這些工具通常支持增量抽取和全量抽取的方式,并提供數據質量控制和監控的功能。

2. 數據明細層:DWD(Data Warehouse Detail)

DWD 層位于數據倉庫架構的核心位置。它主要用于存儲經過清洗、標準化和整合的事實數據和維度數據,以支持多維分析和報表查詢等業務需求。DWD 層通常包含企業數據模型(Enterprise Data Model,EDM)或主數據模型(Master Data Model,MDM)的實現。DWD 層中的數據可以按照不同的業務主題進行建模,通過事實表和維度表的關聯,構建多維查詢和分析模型。

DWD 層的主要特點包括:

  • 面向主題:DWD 層是面向業務主題的,即根據不同的業務領域或主題進行建模。每個主題通常對應一個或多個事實表和一組維度表。
  • 維度建模:DWD 層采用維度建模方法,即將維度屬性和事實度量分開建模,以實現靈活的查詢和分析。
  • 數據清洗和標準化:DWD 層對數據進行清洗、標準化和去重等處理,以確保數據的質量和一致性。
  • 歷史數據保留:DWD 層通常會保留歷史數據,以支持時間序列分析和趨勢預測等業務需求。
  • 數據集成和處理:DWD 層可以集成來自不同數據源的數據,并進行加工和轉換,以滿足業務需求。這包括數據抽取、轉換和加載(ETL)等過程。

3. 數據中間層:DWM(Data Warehouse Master)

DWM 層是在 DWD 層之上的一個邏輯層級,它主要用于實現業務主題的匯總和聚合。DWM 層的數據通常以更高的粒度或經過預計算的形式存儲,以提供更高效的數據查詢和分析性能。DWM 層可以根據業務需求進行靈活的數據聚合和匯總,以滿足不同層次和角度的數據分析需求。

在實際計算中,如果直接從DWD或者ODS計算出寬表的統計指標,會存在計算量太大并且維度太少的問題,因此一般的做法是,在DWM層先計算出多個小的中間表,然后再拼接成一張DWS的寬表。由于寬和窄的界限不易界定,也可以去掉DWM這一層,只留DWS層,將所有的數據再放在DWS亦可。

4. 維度層:DIM(Dimension)

DIM 層是獨立于事實表的維度信息存儲層。它用于存儲描述性數據或分類信息,如客戶、產品、時間、地點等。DIM 層中的維度表可以與事實表進行關聯,以支持多維查詢和分析。DIM 層的數據通常比較穩定且經常被查詢,可以作為 DWD 和 DWM 層的共享維度表。

5. 數據服務層:DWS(Data Warehouse Service)

DWS 層是位于數據倉庫頂層的服務層,它主要用于向上層應用提供數據訪問接口和服務。DWS層會基于DWD層上的基礎數據整合,匯總,分析成某一主題域的服務數據,一般是寬表。

DWS 層可以提供數據抽取、報表查詢、數據可視化、數據挖掘、數據科學模型服務等。DWS 層通常通過提供標準化的數據接口和服務,將數據倉庫的功能和價值最大程度地展示給用戶和應用系統。

6. 數據應用層:ADS(Application Data Store)

存放數據產品個性化的統計指標,根據明細層、匯總層及維表數據加工生成。

四、數據分層原則

為了提高數據倉庫的可維護性、可擴展性和數據一致性,同時也能為分析人員提供更簡單、完整、集成的數據,優化數據分析的效率和準確性。數據分層應遵循以下原則:

  • 最小化底層業務變動與上層需求變動的沖擊:通過使用自上而下的建設方法,將獨立于具體業務系統的通用模型和邏輯引入到基礎數據層中。這樣,在底層業務系統發生變動時,對上層數據模型和分析過程的影響將被最小化,因為這些變動只需在基礎數據層進行相應的調整和維護。
  • 高內聚松耦合:在數據倉庫中,主題內部的數據應該高度內聚,即具有明確的業務含義和相關性。同時,各個主題之間的數據應該松耦合,即它們之間的關聯應該基于清晰的維度關系而不是直接的表結構依賴。這樣可以提高數據模型的靈活性和可擴展性,方便根據需要進行數據調整和變動。
  • 構建倉庫基礎數據層:基礎數據層是數據倉庫的核心,負責整合和存儲底層業務數據,并為上層應用程序提供統一的數據接口。通過將基礎數據層與上層應用開發分離,可以實現并行的大規模倉庫開發,并保持倉庫層次的清晰性和數據一致性。

五、數倉分層的價值

1. 減少重復建設,提升數據應用效率

數據倉庫的不同層次可以根據需要提供不同粒度的數據,這樣在開發應用時就不必重復構建相同的數據表??梢怨澥r間和資源,提高數據應用的效率。

eg:公司有多個部門需要使用相同的銷售數據進行報告和分析。

如果沒有數據倉庫的分層架構,每個部門可能會獨立地從原始數據中構建自己的報表和分析表。而有了分層架構,可以在底層的數據層構建一次報表,然后其他部門只需在上層的應用層基礎上構建自己的應用表,避免了重復建設。

2. 方便數據血緣追蹤

通過分層架構,數據在不同層次間有清晰的關系,當應用層數據出現問題時,我們可以追蹤到它所關聯的底層數據表,這樣可以快速定位問題,避免像查找蜘蛛網一樣費時費力。

eg:一個數據科學團隊正在分析一家電商公司的用戶購買行為數據。他們發現在數據倉庫的應用層表中有一些異常數據,需要找到這些異常數據的來源。

通過數據倉庫的分層架構,他們可以追溯到底層的原始數據表,查看數據的采集、轉換和加載過程,最終可以快速確定異常數據的來源,并快準確決問題。

3. 確保數據一致性和準確性

通過分層架構,數據倉庫會對數據進行清洗、整合和匯總,確保數據的一致性和準確性。這樣我們就可以放心地使用這些數據進行分析和決策。

eg:企業有多個分銷渠道,每個渠道都會收集銷售數據并報送給總部。

如果沒有數據倉庫的分層架構,總部可能會面臨來自不同渠道的沖突或重復的數據。有了分層架構,可以在底層的數據層進行數據清洗和整合,確保每個渠道報送的數據經過驗證和校準后才進入上層的匯總表或應用表,從而保證了數據的一致性和準確性。

4. 提供更好的性能和響應時間

不同層次的數據倉庫可根據需求進行性能調優。底層原始數據層可以容納大量數據并提供更低的延遲,而上層的匯總層和應用層可以提供更高的性能和更快的查詢響應時間。

eg:金融機構需要對大量的交易數據進行實時風險監控和決策支持。

如果使用單一的大型數據表存儲所有交易數據,查詢可能變得非常耗時。而通過數據倉庫的分層架構,可以將原始交易數據存儲在底層的數據層,然后在上層的應用層構建針對風險監控和決策支持的匯總表。這樣可以提高查詢的性能和響應時間,使得風險監控和決策支持能夠更加及時有效地進行。

5. 支持多維分析和決策支持

通過分層架構,我們可以進行多維分析、數據挖掘和決策支持。應用層的表提供更高級別和精細化的數據指標和度量標準,幫助我們深入分析數據并做出明智的決策。

eg:零售企業需要分析銷售數據以了解不同產品在不同地區和不同時間段的銷售情況。

通過數據倉庫的分層架構,可以在底層的原始數據層存儲每個銷售事務的細節,然后在上層的應用層構建多維聚合表,以便進行跨產品、地區和時間的分析。這樣企業可以更好地了解銷售趨勢,優化供應鏈和銷售策略。

6. 提高數據共享和協作

數據倉庫的分層結構使得不同團隊和部門可以共享數據和結果。不同團隊可以基于相同數據建立自己的應用表,方便數據共享和協作,避免了重復工作和獨立運營的情況。

eg:醫療機構需要在臨床、科研和管理等多個部門之間共享病例數據。

通過數據倉庫的分層架構,可以在底層的數據層存儲原始病例數據,然后在每個部門的應用層構建特定的分析表。這樣不同部門可以共享數據,并且可以根據自己的需求定制應用表,促進部門間的數據共享和協作。

本文由 @數據產品探索家 原創發布于人人都是產品經理,未經授權,禁止轉載

題圖來自Unsplash,基于CC0協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!