??? 數(shù)倉治理是一個非常棘手的問題,通常需要跟著業(yè)務(wù)需求快速發(fā)展??赡艽嬖跀?shù)據(jù)分散在不同團(tuán)隊(duì)或者團(tuán)隊(duì)之間研發(fā)規(guī)范不一致的情況。從維度模型來約束規(guī)范的工作來看,“模型”的治理難度大于“架構(gòu)”。
目前行業(yè)通常的模型治理方法是規(guī)定一種建模規(guī)范,然后各自按照規(guī)范進(jìn)行編碼。當(dāng)業(yè)務(wù)變得模糊不清時,再抽調(diào)時間進(jìn)行人工治理。這種方法就像清理黃河的流沙一樣,雖然可以清理一次又一次,但上游仍然會沖下新的流沙。
因此,考慮換個思路來解決問題。當(dāng)業(yè)務(wù)高速發(fā)展時,數(shù)倉必須跟著發(fā)展,否則數(shù)倉就沒有意義了。但是業(yè)務(wù)通常不會一直處于高速發(fā)展階段,就像長跑一樣,總會有跑跑停停的時候。所以如果我們遵循一定的做事方法,多一些流程步驟,就可以大大延緩數(shù)倉治理的問題。
換句話說,不要追求長期的問題解決,而是以一段時間內(nèi)的穩(wěn)定為目標(biāo),比如一年。當(dāng)業(yè)務(wù)發(fā)展到比較穩(wěn)定的階段時,再來進(jìn)行治理,既可以避免因業(yè)務(wù)變動而影響模型重構(gòu),也能節(jié)省精力和壓力。
完美的解決方案通常是不存在的,所以當(dāng)技術(shù)無法解決問題時,可以嘗試一些另類思路去解決。
數(shù)倉的指導(dǎo)思想是以維度建模為基礎(chǔ),根據(jù)業(yè)務(wù)域和數(shù)據(jù)域設(shè)計(jì)主題模型,構(gòu)建一致性的維度和事實(shí)。
具體建模方法如下:首先了解數(shù)據(jù)的統(tǒng)計(jì)周期,是增量同步還是全量同步,并根據(jù)預(yù)估的數(shù)據(jù)量設(shè)計(jì)ODS。其次,大致了解業(yè)務(wù)域的劃分情況,將一類不可拆分的行為作為一類,例如支付、搜索等。然后根據(jù)這些業(yè)務(wù)過程,構(gòu)建最明細(xì)粒度的事實(shí)表(DWD)?;贒WD,可以根據(jù)主題對象進(jìn)行數(shù)據(jù)建模,構(gòu)建公共粒度的匯總指標(biāo)事實(shí)表。同時定義一致性的維度(DIM),通常是靜態(tài)信息,動態(tài)可變屬性應(yīng)放到DWD中。
掌握了維度建模的核心思想后,每位研發(fā)同學(xué)都可以開始進(jìn)行維度建模了。
掌握建模方法并不意味著可以發(fā)揮創(chuàng)造力,就像谷歌編碼規(guī)范一樣,有很多的Tips要遵循:
表名和字段命名要有規(guī)范,指標(biāo)命名應(yīng)能推測出大概的涵義;善于利用分區(qū)、臨時表等方法降低表的依賴層級;擴(kuò)展字段應(yīng)以key-value形式存儲,雖然get_json_object操作慢,但簡潔;小數(shù)精度應(yīng)使用Decimal而不是Double,避免問題;對每個任務(wù)進(jìn)行摸底,解決可能產(chǎn)生數(shù)據(jù)傾斜的地方,常見于Join的空值問題。
數(shù)據(jù)問題的檢測是一個復(fù)雜的過程。
通常有三種檢測方式:基于統(tǒng)計(jì)、基于自動規(guī)則和基于價(jià)值衡量。
基于統(tǒng)計(jì)可以統(tǒng)計(jì)ODS/DWD/DWS/ADS層的表數(shù)量、業(yè)務(wù)域的表數(shù)量以及每張表的引用次數(shù)等,從而了解數(shù)倉建設(shè)情況。
基于自動規(guī)則可以檢測重復(fù)開發(fā)的表,估算表之間的相似程度,推測是否可以合并。還可以計(jì)算表的主鍵和上下游引用,判斷是否可以合并。這種方法需要對數(shù)倉模型有較深的理解。
基于價(jià)值衡量可以根據(jù)收益和成本對數(shù)據(jù)表的價(jià)值進(jìn)行衡量,優(yōu)先治理高價(jià)值的場景或者尋找低價(jià)值的重構(gòu)點(diǎn)。這種方法需要考慮收益和成本的平衡。
最后提到了工具的重要性,例如FineDataLink可以幫助解決數(shù)據(jù)表命名、字段命名和權(quán)限問題,加速企業(yè)數(shù)據(jù)集成。選擇合適的工具需要結(jié)合實(shí)際情況,目前市場占有率較高的產(chǎn)品是帆軟ETL軟件——FineDataLink。
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經(jīng)驗(yàn),每一個項(xiàng)目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!