數倉實踐:匯流排矩陣架構設計

qing_yun發表於2022-06-21

如何設計一套切實可行的資料倉儲呢?

我們要明白,對於資料倉儲的設計是不能完全依賴於業務的需求,但往往又必須要服務於業務的價值。

因此,在構建資料倉儲前,我們往往會通過匯流排矩陣設計,來快速理解業務並規劃資料倉儲體系。以求從巨集觀的角度來描述企業的業務和資料現狀,並指導後續的資料倉儲建模。

不妨先來看看,祖師爺 Kimball 在書中對匯流排矩陣的定義:

匯流排矩陣:提供一種分解企業DW/BI規劃任務的合理方式,行是業務過程,列是公共維度(一致性維度),圖表中的 X 表示的是哪些列與哪些行有關係,也表示這一個業務過程需要有哪些公共維度。

所以,匯流排矩陣和一致性維度、一致性事實共同組成了 Kimball 的多維體系結構基礎。

在這種多維體系結構(MD) 的資料倉儲架構中,主導的思想便是分步建立資料倉儲,並由資料集市組合成企業的資料倉儲。

但是,在建立第一個資料集市前,架構師首先要做的就是設計出在整個企業內具有統一解釋的標準化的維度和事實,即一致性維度和一致性事實,而開發團隊必須嚴格的按照這個體系結構來進行資料集市的迭代開發。

如果我們在建立資料倉儲之初,只考慮單獨的某個業務系統的資料建設,不僅無法滿足一致性目標的。還會使相互有聯絡的系統資料由於維度不同導致關聯複雜或者關聯不上,資料之間互相成為了孤島,這對於後期的擴充套件或者整個數倉的建設都是巨大的阻礙。

一致性維度就好比企業範圍內的一組匯流排,不同資料集市的事實的就好比插在這組匯流排上的元件。

這也是稱之為匯流排架構的原因。因此實際設計過程中,我們通常把匯流排架構列表成矩陣的形式,其中列為一致性維度,行為不同的業務處理過程,即事實,在交叉點上打上標記表示該業務處理過程與該維度相關,這個矩陣也稱為匯流排矩陣(Bus Matrix)。

瞭解匯流排矩陣設計的必要性,它的作用就很容易理解了。簡單來講無非是以下三點:

  1. 幫助資料架構師清晰地梳理整個資料體系

  2. 幫助決策者(Boss)從巨集觀的角度瞭解資料倉儲的整體情況

  3. 讓所有的資料倉儲參與者瞭解資料倉儲的設計

如何編寫匯流排矩陣?

首先,匯流排矩陣不是程式碼,也不是純文件性質。在構建匯流排矩陣對過程中,也需要完成許多程式碼開發前期的準備工作。

首先完成橫向,即 資料域劃分,業務過程的確立。資料域是一種對資料的抽象,通過將聯絡較為緊密的資料劃分在同一資料主題中,方便尋找和使用資料。

比如,製造業中,我們可以將數倉劃分為:生產、財務、人力、供應鏈、交付等資料域,每個域下包含不同的業務過程。如生產域下包括生產計劃、實際生產、裝置停機等業務。

通常是先確定業務過程有哪些,再按照某個規則將相關的業務劃分為同一資料域中,常用的規則有:按業務相關性、按需求方、按應用劃分等。也可以將資料域劃分為多級主題,比如先按照部門劃分一級主題,再按業務劃分二級主題。

資料域的劃分沒有對錯,根據實際情況進行劃分,讓資料歸納更清晰,更好找易用就是好的資料域劃分。劃分資料域時,可參考這些規則:數量不能太多,建議不超過10個;不同主題間無重疊業務過程;具有一定前瞻性,既能涵蓋當前所有的業務需求,又能在新業務進入時無影響地被包含進已有的資料域中或擴充套件新的資料域。

其次完成縱向列,即公共一致性維度的劃分以及度量值的確定。維度是我們看世界的角度,度量則是形容指標的水平,他們都是指標的重要組成。比如有個指標:“四月交付2000輛車”,“四月”和“車”是維度,“2000”是度量值,“輛”則是度量單位,維度和度量組合在一起形成月度指標。如果沒有維度,“交付2000輛”則啥也代表不了。

維度的劃分具有行業共同性,比如電商行業通常涉及這些維度:買家、賣家、訂單、廣告、貨運、支付等,製造業中:裝置、產線、專案、物料、車型等,還有一些跨行業通用的維度,如城市、日期等。維度的一致性是資料一致性的重中之重,匯流排矩陣是一致性維度建設的重要檔案。從討論匯流排矩陣的那刻開始,數倉資料一致性問題就解決了一半。

匯流排矩陣中的度量通常是原子指標,指業務過程中最基本的原子指標。比如生成計劃業務過程中,度量是“件數”,裝置停機事件中,度量為“停機時長”。匯流排矩陣中描述的度量,能夠給分析人員直觀的瞭解目前資料具備的分析能力。

最後是確定業務過程同維度間的關聯關係。應該分析每個業務過程,儘可能多的關聯維度與業務過程,而不僅僅是當前分析需要哪些維度,否則就陷入了面向需求開發的陷阱。

業務矩陣編寫完成後,應組織多方參與評審,包括業務方、分析人員、架構師、產品經理等,以確定業務矩陣的最終版本。

優點

匯流排矩陣是數倉建設的綱領性檔案,不論是從零開始一個專案,還是中途接手一個專案,匯流排矩陣總是最好的切入點。

匯流排矩陣有利於主資料管理。核心維度由資料管理責任人定義,在多個業務過程中使用,而不是被單一業務過程或部門定義,提供一致性維度,實現跨業務過程鑽取的需求。匯流排矩陣列表示整個企業的公共維度,有助於建立核心維度列表,解決主資料管理和資料整合的需求。

匯流排矩陣有利於專案規劃和排期。匯流排矩陣將業務過程按主題劃分,每個主題下包含多個業務過程,各個主題中業務過程互不重疊。不同開發小組遵循該架構進行非同步獨立開發,每個小組承擔不同資料域或同一資料域下不同業務過程,也可以進行一致性維度開發,從而實現增量式的開發。不同小組間分工更加清晰,每個人對自己在組織中承擔的任務也更明確。

匯流排矩陣是資料一致性的重要保障。匯流排矩陣提倡從初期規劃一致性維度,各業務過程共享一致性維度。通過一致性維度,確保維度的有序建設,減少冗餘的出現。匯流排矩陣提供一目瞭然的維度能力觀察,讓後面開發的同學瞭解現有數倉資料,減少煙囪式建設的可能性。

匯流排矩陣可以避免面向需求開發。匯流排矩陣要求我們基於業務過程建設數倉,要求我們從全面的角度考慮維度建設。避免了拿到需求後盲目建設的情況,也避免後期不停維護擴充套件。

匯流排矩陣是數倉建設過程中各種角色間的溝通橋樑。架構師通過匯流排矩陣描述專案概況,進行任務分工;建模人員通過匯流排矩陣瞭解專案中一致性維度與業務過程關係,開展建模工作;專案經理通過匯流排矩陣,瞭解專案規模,進行排期安排,進度跟進;BI同學通過匯流排矩陣,瞭解數倉包含的業務過程與支援鑽取的維度。通過匯流排矩陣,簡化不同角色人員間溝通,更好的實現不同組織的工作配合。

基於上述優點,我認為匯流排矩陣是數倉建設中最重要的文件,應當由架構師在專案初期負責建設,並且長期維護和全域性共享。

來自 “ 雲祁的資料江湖 ”, 原文作者:雲祁;原文連結:https://mp.weixin.qq.com/s/HGyKNSF6IxRj8Up_1Usijw,如有侵權,請聯絡管理員刪除。

相關文章