上一篇 給初心者的數(shù)據(jù)倉(cāng)庫(kù)元數(shù)據(jù)系統(tǒng)開發(fā)指南 主要是描述了元數(shù)據(jù)的基本概念和典型需求。實(shí)際的開發(fā)和使用中,還有個(gè)基本問題容易被混淆,關(guān)于元數(shù)據(jù)的產(chǎn)品形態(tài)。
元數(shù)據(jù)門戶
這是最直觀的產(chǎn)品形態(tài),可以讓數(shù)據(jù)的開發(fā)者有個(gè)地方,可以集中查看數(shù)據(jù)倉(cāng)庫(kù)的基本信息,比如表結(jié)構(gòu)、注釋。這是個(gè)生產(chǎn)力工具,可以提升數(shù)據(jù)開發(fā)者的生產(chǎn)效率。多從數(shù)據(jù)開發(fā)者的使用角度思考,讓他們用的爽,元數(shù)據(jù)門戶的用戶數(shù)自然而然就會(huì)提升。
這個(gè)門戶可以是獨(dú)立的域名和頁面,也可以嵌入到開發(fā)環(huán)境里。比如著名的開源開發(fā)平臺(tái)hue,就可以查看Hive表的基本信息,當(dāng)然系統(tǒng)自帶的功能比較弱,不足以提升生產(chǎn)效率。
開發(fā)的策略有兩種
- 基于需求:作為數(shù)據(jù)倉(cāng)庫(kù)管理者,被用戶吐槽或咨詢最多的,就優(yōu)先通過元數(shù)據(jù)的系統(tǒng)能力解決。
- 主動(dòng)設(shè)計(jì):數(shù)據(jù)開發(fā)者很難有全局和長(zhǎng)遠(yuǎn)的視角,他們并不知道元數(shù)據(jù)可能的更大價(jià)值,可以主動(dòng)設(shè)計(jì)元數(shù)據(jù)門戶的功能,然后按照自己的節(jié)奏去開發(fā)。
快速找到想要的信息
為了更高效展示,元數(shù)據(jù)門戶需要面向不同的用戶,給出不同的檢索方案
- 搜索:根據(jù)表名、字段名、注釋、責(zé)任人,匹配到相應(yīng)的數(shù)據(jù)倉(cāng)庫(kù)表??梢詤⒖贾髁魉阉饕娴母呒?jí)搜索,提供更多維度的篩選,比如按業(yè)務(wù)域、大小、更新時(shí)間等篩選,以及更清晰的關(guān)鍵信息展示。
- 導(dǎo)航:搜索面向的是熟練開發(fā)者,他們知道自己要搜什么。對(duì)于小白用戶,更好的尋找信息方式是導(dǎo)航,類似于hao123這樣的網(wǎng)址導(dǎo)航。把數(shù)據(jù)倉(cāng)庫(kù)的信息歸類展示,比如按多級(jí)的主題域,優(yōu)先展示最常用的表。
血緣關(guān)系是另一種可以幫助用戶找到信息的工具
- 表級(jí)血緣:實(shí)踐證明,即便是熟練的開發(fā)者,也只能記住少量關(guān)鍵表,通過關(guān)鍵表的血緣關(guān)系,可以很快找到關(guān)聯(lián)的其他表。
- 字段級(jí)血緣:可以更細(xì)粒度跟蹤某個(gè)字段的上下游關(guān)系,比如修改一個(gè)字段,要觀察影響到的下游任務(wù)。
上面都是從表的角度描述,另一種更貼近小白用戶的是指標(biāo)角度的描述。一個(gè)典型場(chǎng)景,產(chǎn)品經(jīng)理想做用戶畫像,可能會(huì)拍腦袋決定需要用若干統(tǒng)計(jì)指標(biāo)來衡量用戶的購(gòu)物偏好。如果有這么一個(gè)指標(biāo)的導(dǎo)航系統(tǒng),可以快速勾選數(shù)據(jù)倉(cāng)庫(kù)已經(jīng)存在的指標(biāo),這個(gè)拍腦袋的過程就會(huì)很愉快。
元數(shù)據(jù)驅(qū)動(dòng)數(shù)據(jù)倉(cāng)庫(kù)開發(fā)
怎么提升數(shù)據(jù)倉(cāng)庫(kù)管理員對(duì)系統(tǒng)的掌控力呢?把數(shù)據(jù)倉(cāng)庫(kù)規(guī)范落地到元數(shù)據(jù)里可以做到。部分能力與開發(fā)平臺(tái)、調(diào)度系統(tǒng)的邊界已經(jīng)很模糊,要根據(jù)實(shí)際情況來決定在哪邊實(shí)現(xiàn),或者干脆只是一個(gè)系統(tǒng)。
- 開發(fā)時(shí):命名規(guī)范、SQL規(guī)范、鑒權(quán),這些能避免數(shù)據(jù)倉(cāng)庫(kù)被濫用。
- 運(yùn)行時(shí):數(shù)據(jù)質(zhì)量校驗(yàn),問題嚴(yán)重時(shí)需停止調(diào)度并告警;數(shù)據(jù)傾斜、異常任務(wù)檢測(cè)等。運(yùn)行時(shí)主要是能第一時(shí)間發(fā)現(xiàn)異常任務(wù),并幫助及時(shí)解決。
- 運(yùn)行后:通過數(shù)據(jù)質(zhì)量事件,生成數(shù)據(jù)質(zhì)量報(bào)告;通過運(yùn)行時(shí)信息采集,生成性能消耗分析報(bào)表;通過血緣關(guān)系,做到數(shù)據(jù)質(zhì)量事件的影響分析;通過審計(jì),得到數(shù)據(jù)平臺(tái)的使用情況報(bào)表。能做的事情還有很多。
這里的產(chǎn)品形態(tài)可以有兩種
- 面向開發(fā)者的,需要與開發(fā)平臺(tái)、調(diào)度系統(tǒng)結(jié)合,比如SQL規(guī)范的校驗(yàn)與錯(cuò)誤提示。元數(shù)據(jù)系統(tǒng)作為強(qiáng)業(yè)務(wù)邏輯的子系統(tǒng),可以實(shí)現(xiàn)大部分?jǐn)?shù)據(jù)倉(cāng)庫(kù)的規(guī)范,并提供一系列接口給其他子系統(tǒng)使用,比如數(shù)據(jù)同步、調(diào)度、IDE、BI系統(tǒng)。
- 面向數(shù)據(jù)倉(cāng)庫(kù)管理者的,比如一系列分析報(bào)表,很可能是基于元數(shù)據(jù)的二次統(tǒng)計(jì)分析。
有的公司會(huì)把某個(gè)管理功能獨(dú)立出子系統(tǒng),比如數(shù)據(jù)質(zhì)量,可能會(huì)有準(zhǔn)確性校驗(yàn)的子系統(tǒng),也可能有數(shù)據(jù)生成及時(shí)性的監(jiān)控子系統(tǒng)。
系統(tǒng)背后的數(shù)據(jù)采集
要實(shí)現(xiàn)上述功能,首先是有這些元數(shù)據(jù),需要從數(shù)據(jù)倉(cāng)庫(kù)里采集??梢杂羞@么幾種辦法
- 通過腳本采集
- 后端服務(wù)提供接口,由外部調(diào)度系統(tǒng)觸發(fā)采集
- 后端服務(wù)內(nèi)部定時(shí)觸發(fā)采集
建議盡量把采集功能在后端服務(wù)實(shí)現(xiàn)。腳本采集開發(fā)起來很快,但是維護(hù)較困難,一旦功能修改,服務(wù)端的采集和展示功能在一起,很容易保證一致性,而外部腳本修改會(huì)更困難。
小結(jié)
元數(shù)據(jù)系統(tǒng)的產(chǎn)品概況來說有這么幾類
- 數(shù)據(jù)開發(fā)者可見
- 元數(shù)據(jù)門戶,提升開發(fā)者生產(chǎn)效率
- 把數(shù)據(jù)倉(cāng)庫(kù)規(guī)范嵌入到開發(fā)平臺(tái),甚至作為獨(dú)立子系統(tǒng),保證數(shù)據(jù)開發(fā)可控
- 管理員可見:根據(jù)元數(shù)據(jù),得到數(shù)據(jù)倉(cāng)庫(kù)的各種報(bào)表