一、數(shù)據(jù)治理是什么?
1.1、說在前頭的話
其實在網(wǎng)上也看了很多數(shù)據(jù)治理相關(guān)的文章,說的也很條理,可能那些作者站的高度很高,他們視角也會很廣,感覺讀他們的文章會感覺大而廣泛,對于開闊自己的視野非常有幫助,筆者想根據(jù)自己的工作經(jīng)驗,對數(shù)據(jù)治理相關(guān)的事項,結(jié)合自己的經(jīng)驗,以實際例子來描述一下數(shù)據(jù)如何治理。當然,本文也會涉及一部分技術(shù)相關(guān)的描述,所以能夠?qū)?shù)據(jù)基礎(chǔ)平臺,數(shù)據(jù)倉庫,數(shù)據(jù)應(yīng)用等有所了解,會更加好理解筆者想表達的意思。
1.2、數(shù)據(jù)治理的定義
其實數(shù)據(jù)治理是一個很廣的事情,抽象來講可以包含數(shù)據(jù)標準管理,數(shù)據(jù)質(zhì)量管理,元數(shù)據(jù)管理。數(shù)據(jù)治理的目的是為了讓數(shù)據(jù)變得更加可靠,易用,支持高速迭代。這三點,是目前筆者感觸最深的,后續(xù)也會一一詳細說明??梢栽囅胍幌?,"不健康"的數(shù)據(jù)往往比沒有數(shù)據(jù)給企業(yè)帶來的傷害更大,因為每個企業(yè)成立數(shù)據(jù)部門,希望數(shù)據(jù)能夠帶來價值變現(xiàn),用數(shù)據(jù)進行賦能,如果數(shù)據(jù)本身就是不準確的,那么由數(shù)據(jù)產(chǎn)出的加工品,自然也就變得不那么可信了。
二、數(shù)據(jù)標準
1.1、說在前頭的話
為什么要把數(shù)據(jù)標準放在最前頭,其實整個數(shù)據(jù)治理過程,是各個環(huán)節(jié)相互輔助迭代的一個過程。把數(shù)據(jù)標準放在最前頭,是因為筆者覺得數(shù)據(jù)標準如房屋根基,根基不穩(wěn),會導致后續(xù)一系列問題。大部分企業(yè),都是業(yè)務(wù)起來了,才會開始逐步重視數(shù)據(jù),這樣會面臨一個問題,因為業(yè)務(wù)發(fā)展非??欤瑢е聰?shù)據(jù)方面的建設(shè)都是跟著業(yè)務(wù)跑,缺乏體系化,標準化的建設(shè),舉個小例子,在缺乏體系化建設(shè)的情況下,想要計算一個指標,直接從明細層去取數(shù),關(guān)于數(shù)據(jù)建模這一塊,可以參考一下筆者的一文了解數(shù)據(jù)庫和數(shù)據(jù)倉庫,這樣慢慢的就會導致,指標計算越來越復雜,越來越難維護,計算口徑很難統(tǒng)一,數(shù)據(jù)質(zhì)量也堪憂。那么如何標準呢,筆者分為以下幾點:
1.2、數(shù)據(jù)接入標準
目前企業(yè)主要的數(shù)據(jù)分布在流量日志,關(guān)系型數(shù)據(jù)/非關(guān)系型數(shù)據(jù)庫,第三方的一些數(shù)據(jù),例如爬蟲。
流量日志:首先已經(jīng)要制定埋點規(guī)范,如果有埋點系統(tǒng)來約束整個埋點生命周期當然最好,如果沒有至少了做到有文檔維護,規(guī)范制定了還需要強制執(zhí)行,埋點完成以后,要進行埋點正確性校驗,最好能做到各個環(huán)節(jié)有負責人簽字確認。埋點往往是很多企業(yè)的痛點,不規(guī)范的埋點,會導致后期修改起來很麻煩,不好統(tǒng)一維護,并且會給模型層兼容帶來很大的挑戰(zhàn),并且從問題的根因出發(fā),發(fā)現(xiàn)埋點問題不應(yīng)該模型層來兼容,而是應(yīng)該推動埋點去改正。埋點其實是一個很復雜的工程,本文不做詳細描述。
關(guān)系型數(shù)據(jù)/非關(guān)系型數(shù)據(jù)庫:企業(yè)會建立許多獨立,但是之間又有聯(lián)系的業(yè)務(wù)系統(tǒng),就拿電商來說,有交易,物流,售后,供應(yīng)鏈,商家,會員,品牌等諸多的業(yè)務(wù)系統(tǒng),當一個公司發(fā)展到一定程度,甚至會出現(xiàn)多個領(lǐng)域業(yè)務(wù)的拓展。那么這一類數(shù)據(jù)如何接入到大數(shù)據(jù)里面呢,一般來講現(xiàn)在大數(shù)據(jù)倉庫都是使用hive搭建,當然底層還是用HDFS來進行存儲。其實有許多接入數(shù)據(jù)的工具,類似于sqoop,dataX,或者公司自己自研的工具。不管用什么工具,都要做到接入數(shù)據(jù)的規(guī)范。比如說:統(tǒng)一工具,統(tǒng)一明細層命名,統(tǒng)一多少數(shù)據(jù)量是全量,多少是增量等,一般在數(shù)據(jù)接入層,在數(shù)據(jù)模型設(shè)計當中會單獨設(shè)立一層stage(緩沖層),再上層才是ods層,stage層主要作用可以用于修復ods層數(shù)據(jù),增量stage合并ods層數(shù)據(jù)成為全量數(shù)據(jù)等作用??梢愿鶕?jù)自己的業(yè)務(wù)特點,制定適用的標準。
第三方數(shù)據(jù):一般多為一些非結(jié)構(gòu)化數(shù)據(jù),處理方法也有很多種,暫不詳述。
1.3、數(shù)據(jù)開發(fā)標準
開發(fā)標準主要指寫ETL的一些規(guī)范,比如腳本開頭要說明這個腳本所屬數(shù)據(jù)域,負責人,開發(fā)時間,以及后面在什么時間修改了什么邏輯,都應(yīng)該在腳本中體現(xiàn),這么做可以好追溯一個腳本的修改歷史,從而好追溯問題,另外是一些sql的格式,表,字段的命名,一些關(guān)鍵邏輯的注釋,腳本當中臨時表的使用規(guī)范等。當然最重要的是hive參數(shù)配置,合理化應(yīng)用資源,這個要畫黑板了。
1.4、數(shù)據(jù)模型規(guī)范
數(shù)據(jù)倉庫建設(shè)必須要遵循一套規(guī)范,就拿現(xiàn)在較為常用的kimball理論,或者說是阿里的onedata體系,在上面說的數(shù)據(jù)接入,數(shù)據(jù)域劃分,維度表設(shè)計,事實表設(shè)計等都有理論可以支持。簡單說下分層,離線數(shù)據(jù)倉庫,常見的就有stage(緩沖層),ods(明細層),dwb(原子指標層),dws(衍生指標層),app|rpt等報表接口應(yīng)用層。
1.5、數(shù)據(jù)服務(wù)規(guī)范
一套好的數(shù)據(jù)倉庫建設(shè)完以后,除了維護其迭代更新,最重要的當然是使其發(fā)揮作用,每個公司的應(yīng)用情況都不一樣,例如電子大屏,風控,報表,線上接口等,只要能用上公共層數(shù)據(jù)的情況,都屬于對數(shù)據(jù)的應(yīng)用。那么面對諸多的應(yīng)用,我們在提供數(shù)據(jù)服務(wù)時,就應(yīng)該要設(shè)立權(quán)限,監(jiān)控,告警等規(guī)范,當然這也屬于數(shù)據(jù)質(zhì)量的內(nèi)容,從某種意義上來講,遵循標準體現(xiàn)的意義就是提升質(zhì)量。
三、數(shù)據(jù)質(zhì)量
數(shù)據(jù)質(zhì)量的范疇也很廣,大概分為以下幾點:
- 數(shù)據(jù)完整性:首先數(shù)據(jù)應(yīng)該是完整的,沒有缺失的,這一點,在數(shù)據(jù)接入,以及后續(xù)數(shù)據(jù)加工,都需要關(guān)注,在接入時,應(yīng)該配置監(jiān)控,如果抽取過來的數(shù)據(jù)量反常,則應(yīng)該觸犯告警,在后續(xù)加工當中,應(yīng)該慎用join關(guān)鍵詞,因為可能會導致join丟失。
- 數(shù)據(jù)時效性
如果是實時數(shù)據(jù),那么數(shù)據(jù)的時效性,當然毋庸置疑,當然現(xiàn)在flink,storm,spark都可以用來處理流式數(shù)據(jù)。這里講述的時效性不僅僅指這些,離線的數(shù)據(jù)同樣具有時效性,比如早上公司領(lǐng)導要看的重要核心報表,你中午才產(chǎn)出,這明顯是不能夠接受的,所以這也是我們要建設(shè)數(shù)據(jù)倉庫的主要原因,下沉公共邏輯,抽象分層,快速產(chǎn)出報表,詳細的就不多講述了。 - 數(shù)據(jù)生命周期
數(shù)據(jù)應(yīng)該是有生命周期的,而不應(yīng)該都是永久存在,比如stage層,這種緩沖層的數(shù)據(jù),沒必要一直保留,占用空間,比如一些不常用的報表接口,幾個月都沒人訪問了,是否可以考慮下線,以防占用計算資源等。 - 唯一性
數(shù)據(jù)表應(yīng)該是具有唯一性的,比如商品維度表的唯一主鍵應(yīng)該是商品id,如果商品id都不唯一,這時候應(yīng)該要配置監(jiān)控告警等。 - 依賴一致性
在onedata體系當中,數(shù)據(jù)分層很細,每一層之間都有相互依賴,執(zhí)行任務(wù)時,必須要保證上游任務(wù)都已經(jīng)執(zhí)行完成,所以要保證依賴的一致性。 - 正確性
在數(shù)據(jù)產(chǎn)出時,務(wù)必要保證數(shù)據(jù)的正確性,這也是為什么一定要做數(shù)據(jù)的校驗工作,因為你要知道,現(xiàn)在不做校驗工作,等到這個數(shù)據(jù)在下游使用過程中出了問題,在排查起來將耗費更多人力物力。 - 可用性
針對一些拉鏈表,快照表,多事務(wù)事實表,對于無數(shù)據(jù)建模經(jīng)驗的人來說,使用起來是有一定難度的,所以要做相關(guān)表的解釋和使用文檔,要做到每個字段的注釋齊全,枚舉完善。
以上所有都是可以通過監(jiān)控系統(tǒng)進行配置監(jiān)控的,因為數(shù)據(jù)質(zhì)量的問題大多都是人為造成,也是無法避免的,能做的都是配置監(jiān)控,提醒人不規(guī)范的操作,從而進行修改。
四、元數(shù)據(jù)管理
元數(shù)據(jù)是描述數(shù)據(jù)的數(shù)據(jù),大數(shù)據(jù)集成了多個業(yè)務(wù)系統(tǒng)的數(shù)據(jù),打破了數(shù)據(jù)孤島,那么怎么有效的將這些數(shù)據(jù)進行管理是一個很大的問題,每個公司都應(yīng)該有一個元數(shù)據(jù)系統(tǒng)來管理數(shù)據(jù)。一般都會包含以下幾個功能:
- 分數(shù)據(jù)域,分層,責任人等關(guān)鍵的檢索功能
- 庫,表,字段,枚舉的描述信息
- 每個表的生命周期管理
- 每個表的權(quán)限,開放范圍
- 每個表和上下游的依賴血緣關(guān)系
- 每個表的計算邏輯
- 每個表的分區(qū),產(chǎn)出信息,數(shù)據(jù)量,數(shù)據(jù)增量等
有了元數(shù)據(jù)系統(tǒng)可以更好的幫助我們使用數(shù)據(jù)。