在談數(shù)倉之前,先來看下面幾個問題: 數(shù)倉為什么要分層?
數(shù)據(jù)倉庫之父 Bill Inmon對數(shù)據(jù)倉庫做了定義——面向主題的、集成的、相對穩(wěn)定的、反映歷史變化的數(shù)據(jù)集合,用于支持管理決策。從定義上來看,數(shù)據(jù)倉庫的關鍵詞為面向主題、集成、穩(wěn)定、反映歷史變化、支持管理決策,而這些關鍵詞的實現(xiàn)就體現(xiàn)在分層架構內。 一個好的分層架構,有以下好處:
數(shù)倉分幾層最好?目前市場上主流的分層方式眼花繚亂,不過看事情不能只看表面,還要看到內在的規(guī)律,不能為了分層而分層,沒有最好的,只有適合的。 分層是以解決當前業(yè)務快速的數(shù)據(jù)支撐為目的,為未來抽象出共性的框架并能夠賦能給其他業(yè)務線,同時為業(yè)務發(fā)展提供穩(wěn)定、準確的數(shù)據(jù)支撐,并能夠按照已有的模型為新業(yè)務發(fā)展提供方向,也就是數(shù)據(jù)驅動和賦能。 如何搭建一個好的數(shù)倉?
數(shù)倉設計數(shù)倉設計的3個維度:
數(shù)倉架構按照數(shù)據(jù)流入流出的過程,數(shù)據(jù)倉庫架構可分為:源數(shù)據(jù)、數(shù)據(jù)倉庫、數(shù)據(jù)應用。 數(shù)據(jù)倉庫的數(shù)據(jù)來源于不同的源數(shù)據(jù),并提供多樣的數(shù)據(jù)應用,數(shù)據(jù)自下而上流入數(shù)據(jù)倉庫后向上層開放應用,而數(shù)據(jù)倉庫只是中間集成化數(shù)據(jù)管理的一個平臺。 源數(shù)據(jù):此層數(shù)據(jù)無任何更改,直接沿用外圍系統(tǒng)數(shù)據(jù)結構和數(shù)據(jù),不對外開放;為臨時存儲層,是接口數(shù)據(jù)的臨時存儲區(qū)域,為后一步的數(shù)據(jù)處理做準備。 數(shù)據(jù)倉庫:也稱為細節(jié)層,DW層的數(shù)據(jù)應該是一致的、準確的、干凈的數(shù)據(jù),即對源系統(tǒng)數(shù)據(jù)進行了清洗(去除了雜質)后的數(shù)據(jù)。 數(shù)據(jù)應用:前端應用直接讀取的數(shù)據(jù)源;根據(jù)報表、專題分析需求而計算生成的數(shù)據(jù)。 數(shù)據(jù)倉庫從各數(shù)據(jù)源獲取數(shù)據(jù)及在數(shù)據(jù)倉庫內的數(shù)據(jù)轉換和流動都可以認為是ETL(抽取Extra, 轉化Transfer, 裝載Load)的過程,ETL是數(shù)據(jù)倉庫的流水線,也可以認為是數(shù)據(jù)倉庫的血液,它維系著數(shù)據(jù)倉庫中數(shù)據(jù)的新陳代謝,而數(shù)據(jù)倉庫日常的管理和維護工作的大部分精力就是保持ETL的正常和穩(wěn)定。 建設數(shù)據(jù)倉庫猶如創(chuàng)造一條新的生命,分層架構只是這條生命的邏輯骨架而已。想要在骨架上長出血肉,就必須進行合適的數(shù)據(jù)建模,數(shù)據(jù)倉庫的強壯還是孱弱,健美還是丑陋,就取決于建模的結果。 數(shù)倉建模方法數(shù)據(jù)倉庫的建模方法有很多種,每一種建模方法代表了哲學上的一個觀點,代表了一種歸納、概括世界的一種方法。常見的有 范式建模法、維度建模法、實體建模法等,每種方法從本質上將是從不同的角度看待業(yè)務中的問題。 1. 范式建模法范式建模法其實是我們在構建數(shù)據(jù)模型常用的一個方法,該方法的主要由 Inmon 所提倡,主要解決關系型數(shù)據(jù)庫的數(shù)據(jù)存儲,利用的一種技術層面上的方法。目前,我們在關系型數(shù)據(jù)庫中的建模方法,大部分采用的是三范式建模法。 范式 是符合某一種級別的關系模式的集合。構造數(shù)據(jù)庫必須遵循一定的規(guī)則,而在關系型數(shù)據(jù)庫中這種規(guī)則就是范式,這一過程也被稱為規(guī)范化。目前關系數(shù)據(jù)庫有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四范式(4NF)和第五范式(5NF)。 在數(shù)據(jù)倉庫的模型設計中,一般采用第三范式。一個符合第三范式的關系必須具有以下三個條件 :
根據(jù) Inmon 的觀點,數(shù)據(jù)倉庫模型的建設方法和業(yè)務系統(tǒng)的企業(yè)數(shù)據(jù)模型類似。在業(yè)務系統(tǒng)中,企業(yè)數(shù)據(jù)模型決定了數(shù)據(jù)的來源,而企業(yè)數(shù)據(jù)模型也分為兩個層次,即主題域模型和邏輯模型。同樣,主題域模型可以看成是業(yè)務模型的概念模型,而邏輯模型則是域模型在關系型數(shù)據(jù)庫上的實例化。 2. 實體建模法實體建模法并不是數(shù)據(jù)倉庫建模中常見的一個方法,它來源于哲學的一個流派。從哲學的意義上說,客觀世界應該是可以細分的,客觀世界應該可以分成由一個個實體,以及實體與實體之間的關系組成。那么我們在數(shù)據(jù)倉庫的建模過程中完全可以引入這個抽象的方法,將整個業(yè)務也可以劃分成一個個的實體,而每個實體之間的關系,以及針對這些關系的說明就是我們數(shù)據(jù)建模需要做的工作。 雖然實體法粗看起來好像有一些抽象,其實理解起來很容易。即我們可以將任何一個業(yè)務過程劃分成 3 個部分,實體,事件,說明,如下圖所示: 上圖表述的是一個抽象的含義,如果我們描述一個簡單的事實:“小明開車去學校上學”。以這個業(yè)務事實為例,我們可以把“小明”,“學?!笨闯墒且粋€實體,“上學”描述的是一個業(yè)務過程,我們在這里可以抽象為一個具體“事件”,而“開車去”則可以看成是事件“上學”的一個說明。 3. 維度建模法維度模型是數(shù)據(jù)倉庫領域另一位大師Ralph Kimall所倡導,他的《數(shù)據(jù)倉庫工具箱》是數(shù)據(jù)倉庫工程領域最流行的數(shù)倉建模經(jīng)典。維度建模以分析決策的需求出發(fā)構建模型,構建的數(shù)據(jù)模型為分析需求服務,因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規(guī)模復雜查詢的響應性能。 典型的代表是我們比較熟知的星形模型(Star-schema),以及在一些特殊場景下適用的雪花模型(Snow-schema)。 維度建模中比較重要的概念就是 事實表(Fact table)和維度表(Dimension table)。其最簡單的描述就是,按照事實表、維度表來構建數(shù)據(jù)倉庫、數(shù)據(jù)集市。 目前在互聯(lián)網(wǎng)公司最常用的建模方法就是維度建模。 維度建模怎么建: 在實際業(yè)務中,給了我們一堆數(shù)據(jù),我們怎么拿這些數(shù)據(jù)進行數(shù)倉建設呢,數(shù)倉工具箱作者根據(jù)自身60多年的實際業(yè)務經(jīng)驗,給我們總結了如下四步。 數(shù)倉工具箱中的維度建模四步走: 這四步是環(huán)環(huán)相扣,步步相連。下面詳細拆解下每個步驟怎么做 1、選擇業(yè)務過程
2、聲明粒度
3、確認維度
4、確認事實
其中粒度是非常重要的,粒度用于確定事實表的行表示什么,建議從關注原子級別的粒度數(shù)據(jù)開始設計,因為原子粒度能夠承受無法預估的用戶查詢,而且原子數(shù)據(jù)可以以各種可能的方式進行上卷,而一旦選擇了高粒度,則無法滿足用戶下鉆細節(jié)的需求。 事實是整個維度建模的核心,其中雪花模型或者星型模型都是基于一張事實表通過外健關聯(lián)維表進行擴展,生成一份能夠支撐可預知查詢需求的模型寬表,而且最后的查詢也是落在事實表中進行。 實際業(yè)務中數(shù)倉分層數(shù)倉分層要結合公司業(yè)務進行,并且需要清晰明確各層職責,要保證數(shù)據(jù)層的穩(wěn)定又要屏蔽對下游影響,一般采用如下分層結構: 數(shù)據(jù)層具體實現(xiàn)
數(shù)據(jù)源層主要將各個業(yè)務數(shù)據(jù)導入到大數(shù)據(jù)平臺,作為業(yè)務數(shù)據(jù)的快照存儲。
事實表中的每行對應一個度量,每行中的數(shù)據(jù)是一個特定級別的細節(jié)數(shù)據(jù),稱為粒度。維度建模的核心原則之一是同一事實表中的所有度量必須具有相同的粒度。這樣能確保不會出現(xiàn)重復計算度量的問題。 維度表一般都是單一主鍵,少數(shù)是聯(lián)合主鍵,注意維度表不要出現(xiàn)重復數(shù)據(jù),否則和事實表關聯(lián)會出現(xiàn)數(shù)據(jù)發(fā)散問題。 有時候往往不能確定該列數(shù)據(jù)是事實屬性還是維度屬性。記住最實用的事實就是數(shù)值類型和可加類事實。所以可以通過分析該列是否是一種包含多個值并作為計算的參與者的度量,這種情況下該列往往是事實;如果該列是對具體值的描述,是一個文本或常量,某一約束和行標識的參與者,此時該屬性往往是維度屬性。但是還是要結合業(yè)務進行最終判斷是維度還是事實。
此層命名為輕匯總層,就代表這一層已經(jīng)開始對數(shù)據(jù)進行匯總,但是不是完全匯總,只是對相同粒度的數(shù)據(jù)進行關聯(lián)匯總,不同粒度但是有關系的數(shù)據(jù)也可進行匯總,此時需要將粒度通過聚合等操作進行統(tǒng)一。
數(shù)據(jù)應用層的表就是提供給用戶使用的,數(shù)倉建設到此就接近尾聲了,接下來就根據(jù)不同的需求進行不同的取數(shù),如直接進行報表展示,或提供給數(shù)據(jù)分析的同事所需的數(shù)據(jù),或其他的業(yè)務支撐。 一張圖總結下數(shù)據(jù)倉庫的構建整體流程: ![]() 數(shù)據(jù)治理數(shù)倉建設真正的難點不在于數(shù)倉設計,而在于后續(xù)業(yè)務發(fā)展起來,業(yè)務線變的龐大之后的數(shù)據(jù)治理,包括資產(chǎn)治理、數(shù)據(jù)質量監(jiān)控、數(shù)據(jù)指標體系的建設等。 其實數(shù)據(jù)治理的范圍很?,包含數(shù)據(jù)本?的管理、數(shù)據(jù)安全、數(shù)據(jù)質量、數(shù)據(jù)成本等。在DAMA 數(shù)據(jù)管理知識體系指南中,數(shù)據(jù)治理位于數(shù)據(jù)管理“車輪圖”的正中央,是數(shù)據(jù)架構、數(shù)據(jù)建模、數(shù)據(jù)存儲、數(shù)據(jù)安全、數(shù)據(jù)質量、元數(shù)據(jù)管理、主數(shù)據(jù)管理等10大數(shù)據(jù)管理領域的總綱,為各項數(shù)據(jù)管理活動提供總體指導策略。 ![]() 數(shù)據(jù)治理之道是什么1. 數(shù)據(jù)治理需要體系建設為發(fā)揮數(shù)據(jù)價值需要滿足三個要素:合理的平臺架構、完善的治理服務、體系化的運營手段。 根據(jù)企業(yè)的規(guī)模、所屬行業(yè)、數(shù)據(jù)量等情況選擇合適的平臺架構;治理服務需要貫穿數(shù)據(jù)全生命周期,保證數(shù)據(jù)在采集、加工、共享、存儲、應用整個過程中的完整性、準確性、一致性和實效性;運營手段則應當包括規(guī)范的優(yōu)化、組織的優(yōu)化、平臺的優(yōu)化以及流程的優(yōu)化等等方面。 2. 數(shù)據(jù)治理需要夯實基礎數(shù)據(jù)治理需要循序漸進,但在建設初期至少需要關注三個方面:數(shù)據(jù)規(guī)范、數(shù)據(jù)質量、數(shù)據(jù)安全。規(guī)范化的模型管理是保障數(shù)據(jù)可以被治理的前提條件,高質量的數(shù)據(jù)是數(shù)據(jù)可用的前提條件,數(shù)據(jù)的安全管控是數(shù)據(jù)可以共享交換的前提條件。 3. 數(shù)據(jù)治理需要IT賦能數(shù)據(jù)治理不是一堆規(guī)范文檔的堆砌,而是需要將治理過程中所產(chǎn)生的的規(guī)范、流程、標準落地到IT平臺上,在數(shù)據(jù)生產(chǎn)過程中通過“以終為始”前向的方式進行數(shù)據(jù)治理,避免事后稽核帶來各種被動和運維成本的增加。 4. 數(shù)據(jù)治理需要聚焦數(shù)據(jù)數(shù)據(jù)治理的本質是管理數(shù)據(jù),因此需要加強元數(shù)據(jù)管理和主數(shù)據(jù)管理,從源頭治理數(shù)據(jù),補齊數(shù)據(jù)的相關屬性和信息,比如:元數(shù)據(jù)、質量、安全、業(yè)務邏輯、血緣等,通過元數(shù)據(jù)驅動的方式管理數(shù)據(jù)生產(chǎn)、加工和使用。 5. 數(shù)據(jù)治理需要建管一體化數(shù)據(jù)模型血緣與任務調度的一致性是建管一體化的關鍵,有助于解決數(shù)據(jù)管理與數(shù)據(jù)生產(chǎn)口徑不一致的問題,避免出現(xiàn)兩張皮的低效管理模式。 淺談數(shù)據(jù)治理方式如上面所說,數(shù)據(jù)治理的范圍非常廣,其中最重要的是數(shù)據(jù)質量治理,而數(shù)據(jù)質量涉及的范圍也很廣,貫穿數(shù)倉的整個生命周期,從數(shù)據(jù)產(chǎn)生->數(shù)據(jù)接入->數(shù)據(jù)存儲->數(shù)據(jù)處理->數(shù)據(jù)輸出->數(shù)據(jù)展示,每個階段都需要質量治理,評價維度包括完整性、規(guī)范性、一致性、準確性、唯一性、關聯(lián)性等。 在系統(tǒng)建設的各個階段都應該根據(jù)標準進行數(shù)據(jù)質量檢測和規(guī)范,及時進行治理,避免事后的清洗工作。 質量檢測可參考以下維度:
下面是根據(jù)美團的技術文章總結的幾點具體治理方式: 1. 規(guī)范治理規(guī)范是數(shù)倉建設的保障。為了避免出現(xiàn)指標重復建設和數(shù)據(jù)質量差的情況,統(tǒng)一按照最詳細、可落地的方法進行規(guī)范建設。 (1) 詞根 詞根是維度和指標管理的基礎,劃分為普通詞根與專有詞根,提高詞根的易用性和關聯(lián)性。
(2) 表命名規(guī)范 通用規(guī)范
表命名規(guī)則
![]() (3) 指標命名規(guī)范 結合指標的特性以及詞根管理規(guī)范,將指標進行結構化處理。
![]()
3.日期修飾詞,用于修飾業(yè)務發(fā)生的時間區(qū)間。 ![]() 4.聚合修飾詞,對結果進行聚集操作。 ![]() 5.基礎指標,單一的業(yè)務修飾詞+基礎指標詞根構建基礎指標 ,例如:交易金額-trade_amt。 6.派生指標,多修飾詞+基礎指標詞根構建派生指標。派生指標繼承基礎指標的特性,例如:安裝門店數(shù)量-install_poi_cnt。 7.普通指標命名規(guī)范,與字段命名規(guī)范一致,由詞匯轉換即可以。 2. 架構治理(1) 數(shù)據(jù)分層 優(yōu)秀可靠的數(shù)倉體系,往往需要清晰的數(shù)據(jù)分層結構,即要保證數(shù)據(jù)層的穩(wěn)定又要屏蔽對下游的影響,并且要避免鏈路過長,一般的分層架構如下: (2) 數(shù)據(jù)流向 穩(wěn)定業(yè)務按照標準的數(shù)據(jù)流向進行開發(fā),即ODS-->DWD-->DWA-->APP。非穩(wěn)定業(yè)務或探索性需求,可以遵循ODS->DWD->APP或者ODS->DWD->DWT->APP兩個模型數(shù)據(jù)流。在保障了數(shù)據(jù)鏈路的合理性之后,又在此基礎上確認了模型分層引用原則:
3. 元數(shù)據(jù)治理元數(shù)據(jù)可分為技術元數(shù)據(jù)和業(yè)務元數(shù)據(jù): 技術元數(shù)據(jù)為開發(fā)和管理數(shù)據(jù)倉庫的IT 人員使用,它描述了與數(shù)據(jù)倉庫開發(fā)、管理和維護相關的數(shù)據(jù),包括數(shù)據(jù)源信息、數(shù)據(jù)轉換描述、數(shù)據(jù)倉庫模型、數(shù)據(jù)清洗與更新規(guī)則、數(shù)據(jù)映射和訪問權限等。 常見的技術元數(shù)據(jù)有:
業(yè)務元數(shù)據(jù)為管理層和業(yè)務分析人員服務,從業(yè)務角度描述數(shù)據(jù),包括商務術語、數(shù)據(jù)倉庫中有什么數(shù)據(jù)、數(shù)據(jù)的位置和數(shù)據(jù)的可用性等,幫助業(yè)務人員更好地理解數(shù)據(jù)倉庫中哪些數(shù)據(jù)是可用的以及如何使用。
元數(shù)據(jù)不僅定義了數(shù)據(jù)倉庫中數(shù)據(jù)的模式、來源、抽取和轉換規(guī)則等,而且是整個數(shù)據(jù)倉庫系統(tǒng)運行的基礎,元數(shù)據(jù)把數(shù)據(jù)倉庫系統(tǒng)中各個松散的組件聯(lián)系起來,組成了一個有機的整體。 元數(shù)據(jù)治理主要解決三個問題:
4. 安全治理圍繞數(shù)據(jù)安全標準,首先要有數(shù)據(jù)的分級、分類標準,確保數(shù)據(jù)在上線前有著準確的密級。第二,針對數(shù)據(jù)使用方,要有明確的角色授權標準,通過分級分類和角色授權,來保障重要數(shù)據(jù)拿不走。第三,針對敏感數(shù)據(jù),要有隱私管理標準,保障敏感數(shù)據(jù)的安全存儲,即使未授權用戶繞過權限管理拿到敏感數(shù)據(jù),也要確保其看不懂。第四,通過制定審計標準,為后續(xù)的審計提供審計依據(jù),確保數(shù)據(jù)走不脫。 5. 數(shù)據(jù)生命周期治理任何事物都具有一定的生命周期,數(shù)據(jù)也不例外。從數(shù)據(jù)的產(chǎn)生、加工、使用乃至消亡都應該有一個科學的管理辦法,將極少或者不再使用的數(shù)據(jù)從系統(tǒng)中剝離出來,并通過核實的存儲設備進行保留,不僅能夠提高系統(tǒng)的運行效率,更好的服務客戶,還能大幅度減少因為數(shù)據(jù)長期保存帶來的儲存成本。數(shù)據(jù)生命周期一般包含在線階段、歸檔階段(有時還會進一步劃分為在線歸檔階段和離線歸檔階段)、銷毀階段三大階段,管理內容包括建立合理的數(shù)據(jù)類別,針對不同類別的數(shù)據(jù)制定各個階段的保留時間、存儲介質、清理規(guī)則和方式、注意事項等。 從上圖數(shù)據(jù)生命周期中各參數(shù)間的關系中我們可以了解到,數(shù)據(jù)生命周期管理可以使得高價值數(shù)據(jù)的查詢效率大幅提升,而且高價格的存儲介質的采購量也可以減少很多;但是隨著數(shù)據(jù)的使用程度的下降,數(shù)據(jù)被逐漸歸檔,查詢時間也慢慢的變長;最后隨著數(shù)據(jù)的使用頻率和價值基本沒有了之后,就可以逐漸銷毀了。 |
|