1991年,《Building the Data Warehouse》作者Bill Inmon提出了數據倉庫的概念,指出數據倉庫是面向主題的(Subject Oriented)、集成的(Integrated)、相對穩定的(Non-Volatile)、反映歷史變化的(Time Variant)數據集合。之后,關于數據倉庫實施的方法論、架構及路徑引發了諸多爭議。1998年,Bill Inmon提出了新的企業信息工廠架構,該架構在不同層次上采用不同構件來滿足不同的業務需求。Ralph Kimball的《The Data Warehouse Toolkit》問世后,其所提出的維度建模理論顛覆了Bill Inmon主張的三范式建模,主導了未來一段時間的數據倉庫建模理論。由于早期數據量相對較小以及存儲珍貴,數據倉庫所依賴的硬件及軟件環境相對單一,主要集中于Teradata和IBM一體機,低拓展性及高維護成本讓多數中小銀行望而卻步。隨著并行處理數據庫的推出,數據倉庫由一體機逐步向集群方式邁進,國內華為推出的Gauss DB成為代表性產品。
2003年,Google提出一種可拓展的分布式文件系統,該系統允許使用廉價的機器,并能確保數據具有較高容錯性。隨后,Google以GFS為基礎推出Map Reduce和Big Table,三大核心技術形成了完整的分布式運算架構。Map Reduce將任務分解,在多個處理能力較弱的計算節點中同時處理分解后的任務,然后將結果合并從而完成大數據處理,是一套針對并行計算的編程模型。Big Table是一個大型的具有容錯性和自治特性的系統,具有TB量級的內存和PB量級的磁盤存儲空間,每秒可處理幾百萬的讀寫。受以上論文的啟發,Doug Cutting于2004年開始逐步進行代碼實現,在2006年分離出Hadoop項目并將其開源,從而帶來了一場深刻的技術革命。在業務與效率的催生下,SQL引擎、流式計算及內存計算等組件得到快速發展。在國內,華為、阿里、星環等公司基于開源產品也相應地推出商業版本,推進大數據技術的應用。經過近幾年發展,各大數據平臺已逐步發展成熟。
建設銀行自2017年左右開始利用大數據技術解決海量數據分析的問題,該行在實施新一代數據倉庫架構前,主要采用軟硬件一體的數據庫和SAN來存儲和處理數據,存在成本居高不下、擴展能力有限、支持的數據類型有限(不支持半結構化和非結構化)等問題?;赬86的服務器所搭建的大數據平臺,在合理成本及高擴展性方面引起了業界的關注,同時MPP架構在海量數據計算及高容錯性方面也具有較大優勢。建設銀行結合Hadoop及MPP的優勢和特點,一方面,將MPP數據庫技術產品應用于貼源數據區、應用計算區和實驗數據區,降低Teradata平臺的處理壓力,為Teradata平臺減負;另一方面,將Hadoop/Spark技術運用于歷史數據歸檔區存儲源系統和倉庫海量備份數據。
招商銀行數據倉庫建設之路從1998年的Sybase到2002年基于DB2構建數據倉庫平臺,再到2013年重構TD倉庫,建成了涵蓋客戶服務、產品銷售、風險管理、績效管理、監管審計等領域完整的數據應用平臺。面對一體機數據倉庫平臺存儲和算力無法匹配應用數據量高速增長的問題,2020年,招商銀行正式啟動數據使能平臺建設,并提出“人人用數,人人都是數據分析師”的數據發展戰略。隨著云計算技術的蓬勃發展,云分布式架構以其靈活和高可用的優勢,成為招商銀行數據使能平臺首選架構。該行利用華為Gauss DB構筑全新一代的云上數倉,實現對零售客戶體驗的實時監測和數字化呈現,更大的算力支撐使得跑批作業速度較之前得到大幅提升。
Hadoop技術體系在國內以商業化產品的方式運作,各廠商均對其進行封裝,基于貴陽銀行的升級需求,本文重點討論華為旗下Hadoop產品Fusion Insight HD(簡稱FI)。FI對開源組件進行封裝和增強,對外提供具有大數據處理能力的產品。通過HDFS分布式文件系統,可實現結構化與非結構化數據的大規模存儲,同時引入基于內存計算的Spark升級版組件,可實現快速運算。此外,配置一套運維管理系統,監控整個集群是否健康運行??梢哉f,HD集群具有高可靠、高擴展、高容錯、低成本等特點?;贖adoop這一特點,其適合作為不需要高并發查詢的數據存儲平臺。
Gauss DB200是華為基于Postgre SQL開發的企業級大規模并行處理關系型數據庫。Gauss DB200采用MPP非共享存儲架構,支持行存儲和列存儲,提供PB級別數據量的處理能力。在非共享集群中,每個節點都有獨立的磁盤存儲系統和內存系統,數據被劃分到各節點上,每臺數據節點通過專用網絡互相連接,彼此協同計算,作為整體提供數據服務,具有可伸縮、高可用、高性能、快速查詢及事務一致性等優勢,企業可將其作為快速運算、高速查詢的首選。
貴陽銀行于2016年引入華為FI大數據平臺,同時為保障數據查詢效率,還引入了惠普Vertica數據庫以支持數據服務,依據Hadoop所提供的智能化的資源管理能力以及大規模、高并發的計算能力,使其承擔貼源數據存儲、共性加工運算等職能,加工后的數據通過鏡像和數據映射同步至Vertica。Vertica高效的數據查詢能力和事務處理能力可承擔數據服務的職能。目前,該數據平臺雖已平穩運行4年,但隨著數據量的增長,部分問題也逐漸凸顯:FI數據平臺版本較低,許多組件性能不滿足現實需要;隨著業務量的提升,存儲容量急須擴充;響應偏慢,計算能力亟須提升;Vertica數據庫容量已嚴重不足,亟須尋找可替代的解決方案;數據底座能力被弱化,亟須夯實;Hadoop與Vertica間的融合度不夠高。
為解決現有數據倉庫存在的問題,貴陽銀行通過升級FI及引入Gauss DB實現平臺功能的增強和提升。從架構上看,一期是對“混搭式”數據架構的探索實踐,數倉定位為全行基礎數據存儲,為全行提供基礎數據服務。二期將踐行一期經驗,同時考慮Vertica存在的問題,將其逐步退出為數據試驗區,并引入華為Gauss DB,進一步實現架構融合,增強數據倉庫平臺的基礎算力,為數據分析、數據應用奠定基礎。從數據模型上看,一期數據倉庫在貼源數據的基礎上,根據應用需要實現了輕粒度、小范圍的共性加工數據整合,其數據模型體系無法屏蔽源系統變化帶來的下游應用調整,隨著新系統的建設,數據倉庫數據源的數據結構勢必發生一系列結構性變化,故二期采用規范化的整合層模型主題設計,進行標準化字段英文名及中文名、數據類型、精度、長度、碼值等模型定義,貼源數據在進入整合層后進行標準化的轉換與適配。在此種模型設計思路下,源系統數據結構發生變化,只需調整源系統數據與整合層模型之間的適配度,理論上就可以高程度地滿足因源系統變化而帶來的下游應用調整,從而提升數據倉庫數據轉換及數據適應能力。從版本上看,將對華為FI進行版本升級,升級后各組件性能得到大幅提升,同時與Gauss DB融合得更深。
依據業內先進成熟的經驗及行內數據體系總體規劃,將全行數據架構劃分為數據產生層、數據集成層、數據整合層、數據加工層、數據工具層、數據應用層及數據管控平臺、調度監控系統等層/模塊。其中,數據整合層、數據加工層對應行內的數據倉庫,作為統一的數據存儲、整合、加工平臺,并對外提供數據工具,實現數據服務輸出能力,如圖1所示。
融合數倉主要有4層架構,包括技術緩沖層、貼源層、整合層、共性加工層,重新設計后的數據倉庫將數據服務剝離,實現輕型、高效運轉,承擔全行數據底座的職能。該架構具有如下特點。
整合各源系統數據,實現了全方位的數據整合。
一次加工多次使用,服務多個不同集市,實現數據和指標共享,減少數據重復計算與存儲。對常用的業務口徑進行統一定義和維護,有利于實現可信的單一視圖,提高數據使用效率和數據標準化水平。
將數據加工與歷史存儲分離,極大地提高了ETL處理效率和報表前端訪問效率。共性加工層采用逆范式及維度建模的設計方式,使其業務含義易于理解,方便業務進行自定義查詢;整合層采用3NF與寬表設計相結合,既滿足集市對時效性的需求,又減少了數據冗余。
將華為FI打造為數據湖,存儲貼源數據、歷史數據、歸檔數據,不再承擔數據整合、數據共性加工職責;充分發揮Gauss DB數據處理和計算的能力,提升運算速度。加工后的數據通過數據交換推送至數據服務平臺進行應用,如圖2所示。
通過對華為FI升級及Gauss DB的融合運用,數據倉庫平臺功能、算力、穩定性得到大幅增強。一是夯實了數據倉庫作為數據底座的基礎能力,建立了覆蓋數據全鏈路“采、存、算、管、治、用”的一體化運營平臺,聚焦數據資產價值最大化。二是FI數據平臺各組件得到大幅升級,存儲及算力得到提高,運算能力和穩定性不斷提升。三是充分融合Gauss DB的大規模并行計算能力,在結構化數據計算、復雜關聯運算、快速查詢響應方面得到增強。四是重構后的數據倉庫模型,屏蔽了因前端業務系統結構變更而帶來的下游系統接口調整。
隨著云計算、物聯網的發展,實時性的數據分析應用日益增加,實時數據處理能力將成為企業提升競爭力的重要因素。同時,云數據倉庫可通過計算存儲和網絡資源池化管理,按需彈性部署,因此,云分布式架構以其靈活和高可用等優勢,將成為下一代數據倉庫的首選。未來,主要在兩方面進行完善。一是對現有平臺按云原生的方式進行部署,使其實現一鍵式集群申請、半小時級發放,存算分離,動態擴展。二是加強數據湖能力建設,構建統一數據目錄、統一元數據管理、統一安全管理。