數倉建設生命週期 數倉治理一場仗

2021-10-14 06:26:06 字數 3773 閱讀 3198

「分享資料大咖實踐經驗 網羅職場大佬成長秘籍

「年年資料要治理,資料年年治不好」。

數倉治理的老大難,通常是跟著業務需求快跑,要不是資料零散在各個團隊,或者是大家的研發規範有不同,作為一項通過維度模型來約束規範的工種來講,「模型」的治理難度,大於「架構」。

目前整個行業通常的模型治理方法,是規定一種建模規範,大家在編碼的過程中各自遵守。當業務開始變得模糊不清的時候,再專門抽調時間,來做人工治理。就像黃河一樣,流沙清理了一次又一次,但上游還是會衝下新的流沙。數倉的假設既然都是採用的維度建模,那麼其設計思想必然是自下而上的進行建設,與架構進行模擬,也就是先做好子模組,最後做頂層設計。但如果設計者不熟悉對應的領域模型,一旦業務上發生了變動,一張核心表動輒幾百張的引用,會讓重構的工作變得困難無比。

強如阿里,會做一些更進一步的工作,比如模型的健康分,看看你的儲存成本有多少、計算成本有多少、生命週期是不是合理、**規範有沒有避免全表掃瞄,等等。但這些工作只能發現一些常規的問題,也依然需要進行人工治理,不僅效率上沒有得到提高,每天推送的郵件也會讓你產生心煩。

投入多少人,投入多少時間,終歸是解決了一時的問題,而非長遠。

因此,換個思路考慮問題,當業務高速發展時,數倉勢必要跟著跑,不然業務都跪了,數倉又有何用。但業務通常不會一直處於高速發展的階段,就像長跑一樣,總有跑跑停停的時候,因此如果我們遵循一定的做事方法,流程上多一點步驟,那麼就會極大的延緩數倉治理的問題。即不追求長久的問題解決,而以一段時間內的穩定為目標,比如一年。當業務已經發展到比較穩定的階段,再回過頭來做治理,既能夠避免因為業務變動而影響模型重構,也可以節省大家的精力和壓力,就不失為一種解決思路了。

完美的解決方案通常不存在,退而求其次是大多數人的選擇。當技術無法解決問題時,不妨用另類思路去解決。

那麼「一定的做事方法」該如何理解呢?聽下文分解。

數倉的指導思想是什麼?如果一定有定義,那麼就是:以維度建模為基礎,根據業務域和資料域設計主題模型,構建一致性的維度和事實。

以下簡略敘述理論,維度模型已經有很多的講解文章,這裡只是起到思路講解的作用。

從巨集觀上將,首先要了解資料的統計週期,是增量同步,還是全量同步,並根據預估的資料量設計ods。

其次,要大致了解業務域的劃分情況,將一類不可拆分的行為作為一類,比如支付、比如搜尋。當有了巨集觀的劃分之後,就可以根據這些業務過程,構建最明細粒度的事實表,也就是dwd。

再次,基於dwd便可以根據主題物件進行資料建模,構建公共粒度的彙總指標事實表。很多時候,由於需要加工一定的業務邏輯,可能帶來dwd依賴dws的情況,比如基於時間序列的業務過程,這裡就需要避免統計型別或者業務型別的邏輯,加工到dwd中,這部分應該放到ads層去做,儘管這樣在實現上更為複雜,但避免了公共層的頻繁變動。

最後,定義好一致性的維度,即dim。通常是靜態的資訊,如果存在動態可變的屬性,還是放到dwd比較合適。

從這裡開始,每位研發同學,都可以掌握維度建模的核心思想,通常公共層建設好之後,應該是變動極其小的,為了避免設計不好導致的後續維護問題,模型一定要有評審,即便是忙,也至少要找乙個人幫忙進行codereview

根據這些建模方法,我們就可以愉快的進行ads層的業務開發了。

掌握了建模方法,不代表可以發揮創造力,就像谷歌編碼規範一樣,有很多的tips要貫徹強調:

每個人平時面試的時候,都會準備許許多多類似的tips,團隊如果比較規範,也會有一定的文件沉澱。這裡比較考驗乙個人的編碼功底了,是p6到p7高階的重要考量。

資料問題的檢測是一門大學問。

通常而言,檢測有三種方式:基於統計;基於自動規則;基於價值衡量。

基於統計:因為前文提到了,我們能夠根據規範進行編碼,因此我們便可以清晰的統計,ods/dwd/dws/ads層各有多少張表,每個業務域有多少張表,每張表的引用次數是多少,產品出口的ads表到最底下的ods表依賴層級有多深,基於這些統計,我們便可以對整個數倉的建設情況有乙個大體的了解。如果某個資料域表數量過多,或者某個dwd表下游太多,或者ads到ods的層級過深,大家便可以根據具體的情況進行治理。這種方法有乙個好處:簡單,做幾張bi報表便可以完成,但問題便是,即便知道了具體問題,治理起來也是一件棘手的問題。

基於自動規則:既然提到了,基於統計,我們能夠掌握大體的情況,那麼有沒有方法進行更細化的分析,提供解決的指導思路呢?這邊是基於自動規則的檢測方法。例如,我們可以檢測重複開發的表有哪些,通過表名相似性/字段相似性/資料量相似性等,估算兩兩之間的相似情況,如果相似程度90%以上,通常它們是可以合併的。再者,我們可以使用更高階的演算法,比如計算兩張表的主鍵與上下游引用,如果主鍵相似,且上下游表高度重合,那麼這樣的兩張表也是可以合併的。準確來講,自動規則,體現了我們對於數倉模型的理解程度。

基於價值衡量:治理也要有優先順序,優先治理**值的場景,或者尋找低價值的重構點,都是投入側重點的最重要因素。比如,a表只有乙個下游,占用了1tb的空間,而b表有1000個下游,占用了1gb的空間,是不是意味著b表價值遠大於a表?不見得,只要下游的收益,大於儲存這些資料的成本,就是有用的。因此只根據收益和成本,來衡量資料表的價值,容易產生極端。這裡如果有演算法的同學能夠接入,做一些類似於c-v模型的公式,找出異常點,就能夠相對準確的衡量價值。但這一點目前比較難以實現。

最後提一下工具的重要性。資料治理有乙個很棘手的問題,我們發現了有問題的表,如何進行糾正?比如字段不同了要廢棄,比如命名不規範要重新改,那麼如果下游依賴過多,又涉及許可權問題,基本上就算是無藥可救的狀態了。這時候開發乙個外掛程式,能夠同步hive解決命名問題,同步下游修改字段命名,以及將表的許可權複製到新錶中,就很有用。

精  彩  推  薦  

知識星球

acp優惠券

阿里雲優惠碼

數牛會即資料從業者社群,鏈結大咖,分享實踐。特設數字企業家(dt創始人/傳統企業家)、首席資料官(cdo/cio/cgo/coo)、資料精英綜合群、資料中颱與資料治理(dw與bi)、資料產品經理、資料科學家(資料分析師/資料工程師/機器學習)、阿里雲acp認證、萬年薪職場高階群,文末掃碼入群,請備註姓名/公司/職位。 

168大資料】國內領先的資料智慧型技術社群**

數百萬首席資料官、資料科學家的夢想棲息地!

最具價值的資料知識 研究報告 架構實踐 職場秘籍

打造權威的資料知識體系與職場成長平台!

我是首席資料官,我在這,你呢?

數倉建設生命週期 建設資料倉儲7個步驟

成功實施資料倉儲專案的七個步驟 建立乙個資料倉儲並不是乙個簡單的任務,不應該由乙個人單獨完成。由於資料倉儲最佳結合了業務慣例 和資訊系統技術,因此,乙個成功的資料倉儲實施需要這兩方面的不斷協調,以均衡其所有的需要,要求,任務和成果。我很樂意與大家分享我在規劃和管理任何資料庫專案時採用的方法,這些資料...

資料治理 VS 公司治理 IT治理 數倉治理

如題,今天要聊得這個話題,包含了四個 治理 看完這張圖你有什麼想法,這張圖說明了什麼?它是在描述公司治理 it治理 數倉治理和資料治理的關係嗎?如果這張圖是在描述四個 治理 之間的層次結構,那你認為哪乙個結構是正確的呢?如果您是企業的高管,您會選擇哪個結構,來實施 治理 呢?01 資料治理 vs 公...

大資料方案 數倉建設

基於阿里雲日誌服務實現,拉取阿里雲日誌到本地資料庫儲存。優點 實施速度快。缺點 依賴阿里雲日誌服務,擴充套件性和靈活性較差。前端 雲端 nginx等不同格式的日誌傳送到kafka訊息佇列,之後做etl資料清洗,之後可以使用storm做實時計算或使用hive spark streaming做離線批處理...