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

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

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

一、為什么需要數(shù)倉分層

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

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

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

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

二、怎么理解數(shù)倉分層

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

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

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

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

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

三、數(shù)倉一般分為哪些層

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

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

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

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

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

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

DWD 層的主要特點包括:

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

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

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

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

4. 維度層:DIM(Dimension)

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

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

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

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

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

存放數(shù)據(jù)產(chǎn)品個性化的統(tǒng)計指標,根據(jù)明細層、匯總層及維表數(shù)據(jù)加工生成。

四、數(shù)據(jù)分層原則

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

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

五、數(shù)倉分層的價值

1. 減少重復建設,提升數(shù)據(jù)應用效率

數(shù)據(jù)倉庫的不同層次可以根據(jù)需要提供不同粒度的數(shù)據(jù),這樣在開發(fā)應用時就不必重復構建相同的數(shù)據(jù)表。可以節(jié)省時間和資源,提高數(shù)據(jù)應用的效率。

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

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

2. 方便數(shù)據(jù)血緣追蹤

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

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

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

3. 確保數(shù)據(jù)一致性和準確性

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

eg:企業(yè)有多個分銷渠道,每個渠道都會收集銷售數(shù)據(jù)并報送給總部。

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

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

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

eg:金融機構需要對大量的交易數(shù)據(jù)進行實時風險監(jiān)控和決策支持。

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

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

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

eg:零售企業(yè)需要分析銷售數(shù)據(jù)以了解不同產(chǎn)品在不同地區(qū)和不同時間段的銷售情況。

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

6. 提高數(shù)據(jù)共享和協(xié)作

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

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

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

本文由 @數(shù)據(jù)產(chǎn)品探索家 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)授權,禁止轉載

題圖來自Unsplash,基于CC0協(xié)議

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務。

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!