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