淺談快速發(fā)展中的企業(yè)存在的數(shù)據(jù)污染問題
引言
公司由粗獷式發(fā)展轉(zhuǎn)向精細化運營的過程中,數(shù)據(jù)決策支持發(fā)揮著至關(guān)重要的作用。而在傳統(tǒng)行業(yè)里,由于數(shù)據(jù)量相對較小;業(yè)務(wù)系統(tǒng)變更相對規(guī)律;系統(tǒng)架構(gòu)相對簡單;數(shù)據(jù)來源相對單一等原因,從而使數(shù)據(jù)的計算過程更加簡單,計算結(jié)果更加準(zhǔn)確。而作為業(yè)務(wù)與技術(shù)高速發(fā)展的京東,用常規(guī)的架構(gòu)設(shè)計無法滿足公司對數(shù)據(jù)高 質(zhì)量的要求。如何在保障業(yè)務(wù)高速發(fā)展的同時,將數(shù)據(jù)倉庫的數(shù)據(jù)污染降低到最???我們重點來說說引起數(shù)據(jù)污染的原因以及解決方案。
業(yè)務(wù)系統(tǒng)的數(shù)據(jù)源多樣化
隨著技術(shù)的發(fā)展,不同的業(yè)務(wù)系統(tǒng)由不同的團隊開發(fā)與維護,造成了公司多樣化的數(shù)據(jù)存儲方式,如SQL SERVER、ORACLE、MYSQL、HBASE、DB2、XML、文本等數(shù)十種數(shù)據(jù)結(jié)構(gòu),于是就要求數(shù)據(jù)中心支持異構(gòu)數(shù)據(jù)源的數(shù)據(jù)同步,并將數(shù)據(jù)存儲為可相互關(guān)聯(lián)的統(tǒng)一數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)源越多,數(shù)據(jù)的交換成本和維護成本就越高。這一階段數(shù)據(jù)的主要污染集中在不同數(shù)據(jù)源之間的數(shù)據(jù)一致性。
業(yè)務(wù)系統(tǒng)架構(gòu)頻繁變更
傳統(tǒng)行業(yè)的優(yōu)勢是業(yè)務(wù)系統(tǒng)相對成熟且穩(wěn)定,而互聯(lián)網(wǎng)行業(yè)的架構(gòu)大幅度升級如家常便飯,有時是迫于業(yè)務(wù)的快速發(fā)展,有時候是為了改變而改變,所有改變中最為痛苦的就是新老系統(tǒng)并行運行,其中部分業(yè)務(wù)仍在老系統(tǒng)A上運行,而部分業(yè)務(wù)在新系統(tǒng)B上運行,這一階段的數(shù)據(jù)污染主要體現(xiàn)在:
1)新老系統(tǒng)數(shù)據(jù)不一致的差異解釋
2)新老系統(tǒng)數(shù)據(jù)庫結(jié)構(gòu)的不統(tǒng)一,導(dǎo)致數(shù)據(jù)中心的數(shù)據(jù)抽取不穩(wěn)定且后續(xù)業(yè)務(wù)的解釋異常復(fù)雜。
數(shù)據(jù)庫設(shè)計復(fù)雜化
傳 統(tǒng)行業(yè)依靠優(yōu)秀的大型硬件配置來支撐海量數(shù)據(jù)的查詢,除非必要情況一般采用單一表的數(shù)據(jù)存儲,而在互聯(lián)網(wǎng)行業(yè)通過分庫分表來解決業(yè)務(wù)的可擴展性,對于數(shù)據(jù)中心來講,業(yè)務(wù)系統(tǒng)的分庫規(guī)則的多樣化,在數(shù)據(jù)集中時面臨巨大的挑戰(zhàn)。對于京東來講,庫房數(shù)據(jù)的質(zhì)量保障是我所接觸到的所有場景中最為復(fù)雜的,有幾個特 點:
1)庫房分布地域不同,網(wǎng)絡(luò)環(huán)境好壞不一
2)各庫房根據(jù)業(yè)務(wù)不同,數(shù)據(jù)庫結(jié)構(gòu)不盡相同
3)當(dāng)?shù)貛旆肯到y(tǒng)維護人員工作習(xí)慣不統(tǒng)一
這三點對倉庫生產(chǎn)基地數(shù)據(jù)的質(zhì)量提出了非常高的挑戰(zhàn)。
業(yè)務(wù)系統(tǒng)的人員數(shù)據(jù)質(zhì)量意識單薄
由于長期的業(yè)務(wù)開發(fā)更加關(guān)注業(yè)務(wù)系統(tǒng)流程,功能方面的可用性,對于滯后于業(yè)務(wù)系統(tǒng)的數(shù)據(jù)統(tǒng)計、數(shù)據(jù)分析與數(shù)據(jù)挖掘關(guān)注較少,且不屬于職能范疇,因此粗糙的前期數(shù)據(jù)設(shè)計會給后端的數(shù)據(jù)消費帶來極高的成本:
1)業(yè)務(wù)系統(tǒng)為保障數(shù)據(jù)的展現(xiàn)實效性,將商品的描述信息全部存儲為XML,后端的消費時需要解析XML,這沒有技術(shù)難點,但這種靈活的存儲方式使得XML的結(jié)構(gòu)變更非常容易,后端解析很難保證一致性。所以,在設(shè)計時應(yīng)該存儲XML,同時將商品屬性信息進行格式化存儲,后端采用結(jié)構(gòu)化的統(tǒng)一數(shù)據(jù)。這樣XML與格式化的數(shù)據(jù)由同一個團隊提供,在一定程度上保障了數(shù)據(jù)源的穩(wěn)定。
2)大量的數(shù)據(jù)分析要求數(shù)據(jù)的變化有歷史記錄,從而發(fā)現(xiàn)用戶的有效行為,但有些系統(tǒng)沒有存儲表變更歷史或者變更日志,從而導(dǎo)致變化的數(shù)據(jù)無法追溯;更有甚者直接登錄到數(shù)據(jù)庫進行數(shù)據(jù)的調(diào)整操作,違規(guī)的數(shù)據(jù)修改,會給后端帶來嚴重的數(shù)據(jù)污染。
解決方案-數(shù)據(jù)質(zhì)量管理框架
1)質(zhì)量信息采集:獲取數(shù)據(jù)信息
2)質(zhì)量規(guī)則管理:數(shù)據(jù)驗證規(guī)則,包含系統(tǒng)規(guī)則、技術(shù)規(guī)則、業(yè)務(wù)規(guī)則
3)質(zhì)量診斷與控制:大數(shù)據(jù)監(jiān)控平臺
4)質(zhì)量評估與報告:定期完成質(zhì)量報告
5)問題分析與處理:發(fā)現(xiàn)問題,分析問題,解決問題
解決方案-數(shù)據(jù)質(zhì)量系統(tǒng)架構(gòu)
1)數(shù)據(jù)源:
a、線上業(yè)務(wù)庫:生產(chǎn)業(yè)務(wù)系統(tǒng)數(shù)據(jù)
b、外部數(shù)據(jù)庫:外圍系統(tǒng)對接數(shù)據(jù)
c、日志文件:操作流點擊日志文件(非結(jié)構(gòu)化數(shù)據(jù))
2)應(yīng)用服務(wù)層:數(shù)據(jù)處理核心層
a、規(guī)則引擎:主要包括規(guī)則庫存儲和質(zhì)量檢測,負責(zé)質(zhì)量規(guī)則維護和檢測處理,保證數(shù)據(jù)抽取質(zhì)量
b、抽取引擎:主要包括匹配抽取和整合抽取,保證數(shù)據(jù)更快抽取。
3)用戶交互層:
a、數(shù)據(jù)源維護:主要包括SQL SERVER、ORACLE、MYSQL、HBASE等數(shù)據(jù)源的維護
b、規(guī)則維護:質(zhì)量校驗規(guī)則維護
c、問題診斷:質(zhì)量問題分析和解決
d、質(zhì)量報告:數(shù)據(jù)質(zhì)量定期報告
小結(jié)
以 前有一句話來形容業(yè)務(wù)系統(tǒng)的架構(gòu)對數(shù)據(jù)質(zhì)量的影響:垃圾進去,垃圾出來,雖然形容的不夠貼切,但一定程度上反映了數(shù)據(jù)來源的質(zhì)量決定了數(shù)據(jù)倉庫數(shù)據(jù)污染的程度。那么問題來了,是否可以***的保障數(shù)據(jù)倉庫的質(zhì)量呢?答案是肯定的,但這要花費很大的代價,即數(shù)據(jù)質(zhì)量的高低與資源的消費成本成正比。
因此個人認為,除了在質(zhì)量監(jiān)控系統(tǒng)的自動化上面進行優(yōu)化和減少人工干預(yù)外,還需要達成共識,20%的數(shù)據(jù)滿足了80%的企業(yè)級數(shù)據(jù)需求,二八原則在這里同樣適用。
在快速迭代的業(yè)務(wù)系統(tǒng)時期,數(shù)據(jù)污染是必然的,所以即使嚴格的審計報告也會有大量差異的解釋工作,即做到數(shù)據(jù)污染的可追述、可證明即可滿足企業(yè)數(shù)據(jù)需求。