本文根據(jù)滿成見老師在2018年5月11日【第九屆中國數(shù)據(jù)庫技術(shù)大會】現(xiàn)場演講內(nèi)容整理而成。 講師簡介: 滿成見,獵聘網(wǎng)數(shù)據(jù)倉庫架構(gòu)師。2016年加入獵聘網(wǎng),負(fù)責(zé)獵聘數(shù)據(jù)倉庫平臺架構(gòu)設(shè)計與模型開發(fā),八年數(shù)據(jù)倉庫設(shè)計與數(shù)據(jù)治理項(xiàng)目實(shí)施經(jīng)驗(yàn)。
摘要: 獵聘網(wǎng)業(yè)務(wù)規(guī)模的高速發(fā)展,線上產(chǎn)品與線下銷售、客服業(yè)務(wù)的高度融合,獵頭、企業(yè)、經(jīng)理人多角色的招聘生態(tài)閉環(huán),多元化與多組織層次的數(shù)據(jù)統(tǒng)計與運(yùn)營分析需求......在這些復(fù)雜業(yè)務(wù)環(huán)境下如何做好數(shù)據(jù)治理實(shí)踐的?獵聘DIG數(shù)據(jù)平臺中MySql、GreenPlum、Hive多源數(shù)據(jù)庫共存,整合了結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù),為實(shí)時統(tǒng)計、T N的企業(yè)管理報表、機(jī)器學(xué)習(xí)提供更適合的基礎(chǔ)設(shè)施,同時以數(shù)據(jù)生命周期和數(shù)據(jù)血緣的管理作為數(shù)據(jù)治理的兩大核心脈絡(luò)。線上、線下不同業(yè)務(wù)形態(tài)的數(shù)據(jù),在時間、地域、組織等不同維度上,在數(shù)據(jù)產(chǎn)生、成長、下線、歸檔不同的生命階段,設(shè)置不同的數(shù)據(jù)監(jiān)測和管理策略,保證數(shù)據(jù)倉庫中數(shù)據(jù)的及時性和有效性。通過制定數(shù)據(jù)標(biāo)準(zhǔn)、規(guī)范協(xié)作流程、自研監(jiān)測與預(yù)警工具,保證業(yè)務(wù)數(shù)據(jù)、數(shù)倉明細(xì)數(shù)據(jù),核心指標(biāo)等各個數(shù)據(jù)加工鏈條節(jié)點(diǎn)上的數(shù)據(jù)一致性和質(zhì)量可靠性。
正文: 獵聘網(wǎng)是一個互聯(lián)網(wǎng)線上招聘業(yè)務(wù)網(wǎng)站,業(yè)務(wù)背景主要涉及三方面:內(nèi)部系統(tǒng)、線上產(chǎn)品以及數(shù)據(jù)應(yīng)用。線上產(chǎn)品部分,我們有經(jīng)理人、企業(yè)HR、獵頭等服務(wù)產(chǎn)品,今年年初,經(jīng)理人用戶達(dá)到四千萬,每天客戶端和服務(wù)端的埋點(diǎn)數(shù)據(jù)增量大約在3億條左右;內(nèi)部系統(tǒng)部分,有ERP、CRM、EHR等,客戶池的客戶量級大概在百萬級。我們的數(shù)據(jù)應(yīng)用分析也包含了線上和線下兩方面,以及實(shí)時和T 1的分析,針對傳統(tǒng)線下業(yè)務(wù),為支持公司運(yùn)營管理,需要跟蹤、管控銷售顧問和招聘服務(wù)顧問的工作進(jìn)程以及業(yè)績考核,線上數(shù)據(jù)分析主要包括流量分析、用戶獲取、轉(zhuǎn)化留存、A/B測試、產(chǎn)品運(yùn)維等方面的分析。除了BI分析報表,我們獵聘大數(shù)據(jù)研究院同時擔(dān)負(fù)著數(shù)據(jù)挖掘和智能決策分析等相關(guān)服務(wù)。 2016年,我加入獵聘網(wǎng)時所面對的業(yè)務(wù)困境主要有以下幾大方面:首先,大數(shù)據(jù)團(tuán)隊(duì)中沒有劃分專業(yè)的數(shù)據(jù)倉庫團(tuán)隊(duì);其次,整個數(shù)據(jù)使用不規(guī)范,所有數(shù)據(jù)應(yīng)用分析直接從業(yè)務(wù)表和日志數(shù)據(jù)一步加工,中間缺乏數(shù)據(jù)規(guī)整和分層處理的步驟;然后,整個數(shù)據(jù)倉庫近兩千張表有50%以上的元數(shù)據(jù)是丟失,這就造成我們對整個數(shù)據(jù)質(zhì)量缺乏把控,數(shù)據(jù)質(zhì)量完全依靠分析師個人判斷,數(shù)據(jù)問題由下往上發(fā)現(xiàn)追溯;最后, 缺乏數(shù)據(jù)上下游節(jié)點(diǎn)的合作規(guī)范和溝通流程。這就是我們當(dāng)時所面臨的業(yè)務(wù)困境。 要想解決這些困境,我們首要解決的問題是數(shù)據(jù)如何治理,在這方面,我們倒是有一個不錯的開端。 首先,我們的首席數(shù)據(jù)官CDO非常重視基礎(chǔ)數(shù)據(jù)治理工作,這讓整個數(shù)據(jù)治理理念很好得貫徹執(zhí)行了下去。做好數(shù)據(jù)治理前提是要加強(qiáng)流程管控,管控加強(qiáng)的同時必然又會不可避免的降低流程節(jié)點(diǎn)之間的工作效率,如果沒有公司戰(zhàn)略決策層的支持,數(shù)據(jù)治理將很難從業(yè)務(wù)部門貫徹到數(shù)據(jù)部門。 其次,我們整個大數(shù)據(jù)團(tuán)隊(duì)的接口層設(shè)計非常完善,完整保留了90%以上的核心業(yè)務(wù)數(shù)據(jù)每天的拍照,這為后續(xù)DW核心明細(xì)層的整合打了非常好的基礎(chǔ)。 然后,我們有自己的任務(wù)調(diào)度系統(tǒng),可以記錄任務(wù)之間的血緣關(guān)系。 數(shù)據(jù)治理的工作展開,主要考慮三個維度:模型架構(gòu)、平臺技術(shù)和流程規(guī)范。 在模型架構(gòu)層面,依據(jù)傳統(tǒng)數(shù)據(jù)倉庫的理論是對數(shù)據(jù)進(jìn)行分層管理,每一層進(jìn)行相應(yīng)的業(yè)務(wù)主題梳理,提煉出業(yè)務(wù)實(shí)體、實(shí)體之間的關(guān)系、實(shí)體的業(yè)務(wù)行為以及這些由業(yè)務(wù)行為所沉淀出的度量指標(biāo)。 在平臺技術(shù)層面,首先要有元數(shù)據(jù)管理系統(tǒng),其次要有數(shù)據(jù)血緣追溯系統(tǒng)、數(shù)據(jù)質(zhì)量監(jiān)測系統(tǒng)等,這些平臺技術(shù)可以幫助我們部分實(shí)現(xiàn)自動化管理。作為互聯(lián)網(wǎng)企業(yè),業(yè)務(wù)迭代、表以及字段的增加速度都非???,如果沒有好的平臺技術(shù)支撐,消耗的人力成本會非常高。 在流程規(guī)范層面,不管平臺技術(shù)多么先進(jìn),整個數(shù)據(jù)治理過程都不可能百分百覆蓋,因此必須保證整個上下游各個崗位、各個序列里所有數(shù)據(jù)相關(guān)方遵循統(tǒng)一的流程規(guī)范,對數(shù)據(jù)的來源、定義、使用方式等有明確統(tǒng)一的原則。 上圖為獵聘網(wǎng)的整個數(shù)據(jù)治理流程,首先是梳理元數(shù)據(jù),建立數(shù)據(jù)標(biāo)準(zhǔn),包括業(yè)務(wù)用語、業(yè)務(wù)規(guī)則、業(yè)務(wù)模型和業(yè)務(wù)指標(biāo)。同時,對用戶行為日志做埋點(diǎn)。這些標(biāo)準(zhǔn)和規(guī)范一開始就要落實(shí)到文檔,最終把文檔落實(shí)到標(biāo)準(zhǔn)庫。元數(shù)據(jù)庫包含數(shù)據(jù)編碼、數(shù)據(jù)格式、數(shù)據(jù)血緣、數(shù)據(jù)訪問權(quán)限以及數(shù)據(jù)存儲方式。數(shù)據(jù)標(biāo)準(zhǔn)庫的數(shù)據(jù)是整個數(shù)據(jù)質(zhì)量治理的基石。我們在這個標(biāo)準(zhǔn)之上才會衍生規(guī)則、制定任務(wù)并做預(yù)警監(jiān)控。同時,我們要管控好所有線下數(shù)據(jù),一定要保證所有分析相關(guān)數(shù)據(jù)入到線上數(shù)據(jù)倉庫,否則不知來源的數(shù)據(jù)會給最終數(shù)據(jù)的血緣追溯制造很多困擾。 獵聘網(wǎng)的整個數(shù)據(jù)倉庫架構(gòu)分層見下圖: 數(shù)據(jù)分層管理的核心是根據(jù)數(shù)據(jù)的業(yè)務(wù)特性和分析特性劃分到不同的物理層次中,以到達(dá)對數(shù)據(jù)精細(xì)化管理的目的。 接口層的核心功能就是要保留所有歷史拍照,很多時候企業(yè)產(chǎn)生的數(shù)據(jù)有一部分都是臟數(shù)據(jù),但是臟數(shù)據(jù)的定義可能會有很多標(biāo)準(zhǔn),如果對業(yè)務(wù)理解不清楚,你可能會把空值或者異常值都粗略得算為臟數(shù)據(jù),但有時這些異常值也會代表一種業(yè)務(wù)形態(tài),所以,我們在接口層保留了所有歷史數(shù)據(jù)。為了節(jié)省接口層存儲空間,我們會選擇業(yè)務(wù)表不同的同步方式,比如全量拍照,或者根據(jù)業(yè)務(wù)表的時間戳進(jìn)行按天增量存儲,或者將增量和全量數(shù)據(jù)合并去重。根據(jù)歷史增量拍照和每個日期內(nèi)的增量分區(qū),我們就可以恢復(fù)出某個業(yè)務(wù)表在歷史上某天的數(shù)據(jù)狀態(tài),這對結(jié)合業(yè)務(wù)上下游環(huán)境進(jìn)行精準(zhǔn)分析非常有幫助。 此外,我們在接口層主要做了MySQL分庫分表整合,數(shù)據(jù)規(guī)范方面主要做了生成唯一主鍵、編碼轉(zhuǎn)換、敏感字段過濾以及數(shù)據(jù)格式統(tǒng)一等工作。敏感字段過濾主要涉及經(jīng)理人的聯(lián)系方式、郵件地址、證件號碼等敏感數(shù)據(jù)。我們不允許這些數(shù)據(jù)導(dǎo)入數(shù)據(jù)倉庫,如果需要獲取敏感信息可以找業(yè)務(wù)研發(fā)或安全部門團(tuán)隊(duì)開發(fā)統(tǒng)一接口。 在DW層,主要是根據(jù)業(yè)務(wù),劃分分析主題,提煉業(yè)務(wù)實(shí)體和關(guān)系模型,做業(yè)務(wù)關(guān)聯(lián)整合,業(yè)務(wù)信息方面除了一些實(shí)體和行為指標(biāo)的整理,還要進(jìn)行一些冗余設(shè)計,屏蔽業(yè)務(wù)表變化對整個上游的沖擊?;ヂ?lián)網(wǎng)端的線上業(yè)務(wù)研發(fā)迭代速度非??欤績芍芫蜁幸淮未螽a(chǎn)品迭代,對應(yīng)的業(yè)務(wù)表和業(yè)務(wù)字段都會有變更,數(shù)倉工程會在DW層完成對業(yè)務(wù)變更的適應(yīng)調(diào)整,對下游應(yīng)用分析屏蔽具體細(xì)節(jié),保證整個數(shù)據(jù)的一致性和完整性以及指標(biāo)的統(tǒng)一性。 在DM層,我們的主要工作是決策層核心報表與部門級集市報表,使用Hive保留原始加工數(shù)據(jù),MySQL支持T 1報表,Greenplum支持10分鐘以內(nèi)的實(shí)時業(yè)務(wù)分析。 上圖為獵聘網(wǎng)自主研發(fā)的大數(shù)據(jù)管理平臺,包括元數(shù)據(jù)管理平臺Octopus、任務(wù)調(diào)度系統(tǒng)Leo、數(shù)據(jù)質(zhì)量稽核系統(tǒng)Raven以及數(shù)據(jù)同步系統(tǒng)Mule。 按照傳統(tǒng)數(shù)據(jù)倉庫理論,我們會將元數(shù)據(jù)管理分為業(yè)務(wù)元數(shù)據(jù)和技術(shù)元數(shù)據(jù)兩部分。業(yè)務(wù)元數(shù)據(jù)是指業(yè)務(wù)對象、業(yè)務(wù)關(guān)聯(lián)以及業(yè)務(wù)規(guī)則,業(yè)務(wù)對象可能落實(shí)到我們的業(yè)務(wù)表或者業(yè)務(wù)字段,業(yè)務(wù)關(guān)聯(lián)指業(yè)務(wù)實(shí)體之間在業(yè)務(wù)關(guān)聯(lián),業(yè)務(wù)規(guī)則要根據(jù)不同的業(yè)務(wù)部門進(jìn)行提煉總結(jié)。 技術(shù)元數(shù)據(jù)主要分為數(shù)據(jù)生命周期、數(shù)據(jù)血緣等部分。數(shù)據(jù)生命周期就是指所有數(shù)倉數(shù)據(jù)的創(chuàng)建信息、變更歷史以及銷毀信息等工作;數(shù)據(jù)血緣負(fù)責(zé)任務(wù)之間的依賴、表與字段之間的依賴等;其他信息,比如數(shù)據(jù)倉庫里的數(shù)據(jù)安全等級和使用熱度等。 以下著重介紹數(shù)據(jù)生命周期管理部分。獵聘網(wǎng)之所以強(qiáng)調(diào)數(shù)據(jù)生命周期管理,是因?yàn)槲覀兓ヂ?lián)網(wǎng)的業(yè)務(wù)背景。如果不做好數(shù)據(jù)倉庫的入庫、上線以及停更工作,我們將很難判斷整個數(shù)據(jù)倉庫中各表是否可用、出了問題之后應(yīng)該找誰負(fù)責(zé)等。舉例來說,我們經(jīng)常面臨一些周年或節(jié)日活動,此時可能會集中出來一批表用于維護(hù)活動信息,待活動結(jié)束,這批表肯定面臨著下線問題。這種情況下,我們要做好表的生命周期管理,保證整個數(shù)據(jù)倉庫數(shù)據(jù)的實(shí)時有效可用。此外,所有數(shù)據(jù)入庫必須通過前端工具完成,不允許在后臺通過服務(wù)器端以人工腳本執(zhí)行的方式完成,因?yàn)橐坏┻@張表出現(xiàn)問題,我們將很難確認(rèn)責(zé)任負(fù)責(zé)人。我們會在入庫時同步創(chuàng)建表接口,在接口中強(qiáng)制填寫入庫表的責(zé)任人、業(yè)務(wù)注釋、業(yè)務(wù)歸屬線、業(yè)務(wù)參照關(guān)鍵狀態(tài)等信息。 如果部分表沒有業(yè)務(wù)屬性存在,或者不再有用時,我們需要對表進(jìn)行停更操作,主要有三種方式:物理刪除、歸檔和保留。物理刪除主要用于臨時表,當(dāng)這些表不在被需要時,我們會進(jìn)行物理刪除以節(jié)省存儲空間,但是這類表比較少;歸檔相當(dāng)于在數(shù)據(jù)倉庫里對業(yè)務(wù)用戶不可見,這些表的特征是暫時不具備分析價值但未來可能會再次查閱;保留狀態(tài)則時對用戶可見,這部分表的特征是雖然暫時下線并停止更新數(shù)據(jù),但其作用是無可替代的,需要保留一段時間。 接下來是數(shù)據(jù)血緣影響的管理。數(shù)據(jù)血緣關(guān)系主要指表與ETL任務(wù)、表與數(shù)據(jù)表、表與數(shù)據(jù)表的字段、表與埋點(diǎn)事件、表與UDF函數(shù)、表與指標(biāo)、表與報表之間的關(guān)系。 數(shù)據(jù)血緣是ETL的DAG圖、任務(wù)優(yōu)先級制定、銷毀上游對象約束、質(zhì)量稽核影響性以及打通各平臺工具的脈絡(luò)。以任務(wù)優(yōu)先級舉例來說,數(shù)據(jù)血緣關(guān)系是任務(wù)優(yōu)先級設(shè)定的重要參考指標(biāo),通常,任務(wù)的優(yōu)先級由任務(wù)創(chuàng)建人制定,但同時也需要我們根據(jù)數(shù)據(jù)血緣重新賦權(quán)優(yōu)先級系數(shù),以保證真正核心任務(wù)的優(yōu)先級。為了避免錯誤操作,我們每天都會在固定的時間對數(shù)據(jù)血緣進(jìn)行檢查,確認(rèn)所有ETL調(diào)度任務(wù)依賴的表是否存在,如果不存在,就會報錯并通知相應(yīng)人員做一些變更和修改。 在數(shù)據(jù)質(zhì)量稽核部分,數(shù)據(jù)質(zhì)量稽核系統(tǒng)會對整個數(shù)據(jù)倉庫里面的庫、字段、指標(biāo)以及埋點(diǎn)數(shù)據(jù)做相應(yīng)的質(zhì)量稽核,并針對業(yè)務(wù)規(guī)則設(shè)定閾值,每天晚上任務(wù)調(diào)度系統(tǒng)工作完成之后開始啟動,一旦監(jiān)測到疑似錯誤的問題存在,郵件以及短信回發(fā)到對應(yīng)的任務(wù)責(zé)任人。 以下是整個數(shù)據(jù)質(zhì)量稽核規(guī)則與流程: 通過時間序列分析可以在一定程度上提醒業(yè)務(wù)責(zé)任人數(shù)據(jù)可能出現(xiàn)的波動性異常。拿我們招聘服務(wù)網(wǎng)站而言,有所謂的”金三銀四”,每年的3/4月會有較大的業(yè)務(wù)提升,時間序列分析可以將這些業(yè)務(wù)正常波動考慮在內(nèi)。在鍵屬性這邊會對業(yè)務(wù)的表字段做一些非空、唯一性以及數(shù)據(jù)參照集合。對業(yè)務(wù)和數(shù)據(jù)的合法性,比如主從一致等進(jìn)行很好的規(guī)范,所有碼值業(yè)務(wù)表字段必然在Java代碼中有枚舉類與之對應(yīng),我們會在對應(yīng)的表之間做映射關(guān)系,從代碼里面獲取最新自檢值,以判斷字段的注釋和值是否正確。在統(tǒng)計屬性方法中,我們會根據(jù)數(shù)值是離散值還是連續(xù)值采用不同的稽核規(guī)則,如果是離散值,我們會繼續(xù)考察分布占比情況,如果中間出現(xiàn)某個值的占比突然降低或升高,或者主營業(yè)務(wù)數(shù)據(jù)突然降低,會判斷該數(shù)據(jù)可能出現(xiàn)錯誤。如果是連續(xù)值,則主要考察極、均值、分位數(shù)等,同時也會結(jié)合數(shù)據(jù)的標(biāo)準(zhǔn)差和方差來檢查數(shù)據(jù)分布是否合理。 指標(biāo)稽核主要是業(yè)務(wù)規(guī)則和交叉校驗(yàn)兩部分工作,業(yè)務(wù)規(guī)則主要指表責(zé)任人和使用者如何定義指標(biāo)的波動范圍。當(dāng)然,我們也會從其他角度校驗(yàn),但凡一個指標(biāo)統(tǒng)計來源肯定不止一種方式。如果是站在報表引用和分析的角度,我們必須要有統(tǒng)一的途徑, 但可以利用其他途徑做參考校驗(yàn)。交叉校驗(yàn)就是通過不同的方式加工同一個指標(biāo),然后判斷指標(biāo)的相關(guān)性,如果數(shù)據(jù)的差異不在同一個量級,那么實(shí)際上這個數(shù)據(jù)是有問題的。比如新增用戶數(shù)指標(biāo),我們可以通過埋點(diǎn)和業(yè)務(wù)表信息兩種方式進(jìn)行創(chuàng)建。當(dāng)然,這種方式無法覆蓋數(shù)倉中的所有表,只針對各個公司或者各個事業(yè)部關(guān)注的一些核心指標(biāo)應(yīng)用。 我們目前也正在探索通過數(shù)據(jù)質(zhì)量稽核應(yīng)用生成數(shù)據(jù)質(zhì)量報告,并將報告抄送給我們的業(yè)務(wù)和研發(fā)人員,讓更多序列的人參與進(jìn)來并關(guān)注稽核結(jié)果。 我們需要強(qiáng)調(diào)數(shù)據(jù)安全。隨著獵聘網(wǎng)的不斷發(fā)展壯大,整個體量相對來說比較龐大,各項(xiàng)業(yè)務(wù)形態(tài)或者說管理標(biāo)準(zhǔn)都已成熟,但業(yè)務(wù)體系實(shí)際上比較復(fù)雜,尤其是涉及銷售和招聘部分,我們需要嚴(yán)格把控整個數(shù)據(jù)安全管理過程。 數(shù)據(jù)安全主要涉及安全標(biāo)準(zhǔn)、數(shù)據(jù)粒度、用戶行為和審批流程四個環(huán)節(jié)。在安全標(biāo)準(zhǔn)方面,又可細(xì)分為個人隱私、業(yè)務(wù)敏感、財務(wù)數(shù)據(jù)、部門隔離和等級區(qū)分幾部分。所有的個人聯(lián)系方式等隱私數(shù)據(jù)并不會傳入數(shù)據(jù)倉庫,我們會在數(shù)據(jù)入倉時進(jìn)行校驗(yàn),對個人隱私數(shù)據(jù)、業(yè)務(wù)敏感數(shù)據(jù)以及一些財務(wù)數(shù)據(jù)實(shí)行不入倉原則。部門隔離實(shí)際上在整個公司發(fā)展過程中,我們發(fā)現(xiàn)不同事業(yè)部之間的數(shù)據(jù)可能是不希望共享的,因此我們需要針對業(yè)務(wù)進(jìn)行初步隔離,同時針對所有數(shù)據(jù)進(jìn)行安全等級區(qū)分。我們目前主要分為兩個等級權(quán)限,一是查詢權(quán)限,一是下載權(quán)限。 在數(shù)據(jù)粒度層面,我們主要分為schema、表級、字段級、任務(wù)級以及接口級。用戶行為主要分為任務(wù)查詢、表查詢、明細(xì)數(shù)據(jù)下載權(quán)限以及郵件內(nèi)容。審批流程層面主要分為自動解析、系統(tǒng)提醒和人工審核三部分。 總結(jié)以上,我們整個數(shù)據(jù)倉庫團(tuán)隊(duì)和工程師一起搭建了數(shù)據(jù)治理體系,包括元數(shù)據(jù)管理、數(shù)據(jù)稽核工具與配置、數(shù)據(jù)血緣影響與分析、數(shù)據(jù)異常通知與預(yù)警、指標(biāo)管理工具與配置、數(shù)據(jù)服務(wù)接口提供。但是整個數(shù)據(jù)上下游的治理必然不是數(shù)據(jù)部門自己的事情,而是要產(chǎn)品、研發(fā)、數(shù)據(jù)一起合作完成的。只有這樣,數(shù)據(jù)才能更好的為產(chǎn)品賦能,產(chǎn)品和運(yùn)營團(tuán)隊(duì)才可以更好得分析數(shù)據(jù),由數(shù)據(jù)完成智能驅(qū)動業(yè)務(wù)高速發(fā)展。 經(jīng)過兩年多的不懈努力,獵聘網(wǎng)目前已經(jīng)實(shí)現(xiàn)定時監(jiān)控上游數(shù)據(jù)結(jié)構(gòu)與質(zhì)量問題,發(fā)現(xiàn)問題當(dāng)天跟進(jìn)處理,保障90%以上的核心報表與數(shù)據(jù)應(yīng)用的穩(wěn)定與可靠性;模型分層,統(tǒng)一了下游引用出口,上游系統(tǒng)升級改造,影響截止到DW層,節(jié)省分析師90%以上的資源投入;元數(shù)據(jù)完善95%以上,數(shù)倉知識體系與數(shù)據(jù)標(biāo)準(zhǔn)構(gòu)建完畢,業(yè)務(wù)與數(shù)據(jù)學(xué)習(xí)使用效率極大提升。
|
|