數據倉庫管理着整個銀行或公司的數據,數據結構復雜,數據量龐大,任何一個數據字段的變化或錯誤都會引起數據錯誤,影響數據應用,同時業務的發展也帶來系統不斷升級,數據需求的不斷增加,數據倉庫需要不斷的升級和維護,才能保證為全行提供持續完整准確的數據服務。所以數據倉庫基本上是全行或全公司版本最多的系統,如何保證在頻繁的變化中保證數據的准確和系統的穩定,需要數據倉庫的開發管理必須做到高效、有條不紊。
1、數據倉庫開發流程
1.1、規范先行
數據倉庫從開發上看,數據加載和導入的程序相對固定,開發工作主要是數據轉換的SQL腳本的分析和開發。那SQL的分析和開發最主要的還是基於業務邏輯進行編寫,所以對數據字段的理解以及對業務規則的熟悉是數據倉庫模型人員和開發人員都需要具備的知識,同時數據和規則又會不斷變化,那如何確保快速開發,開發的代碼具有可讀性、模型設計具有一致性,最重要的是在數據倉庫建立時就制定相應的規范,使整個團隊能按規范同步進行開發、設計。那在數據倉庫中主要有以下規范:
(1)命名規范:包括ETL作業、數據庫或大數據平台的對象(表、字段、存儲過程、schema名或庫名)、腳本名、文件名等都需要按一定的規則進行命名,以便快速定位。
(2)ETL開發規范:包括抽取、加載作業的開發規范、調度工具的使用規范、SQL腳本或作業的開發規范、開發流程規范等:
(3)數據模型設計和維護規范:主要對主模型區、匯總指標層、集市層的模型設計原則、方法、重要規則(如客戶ID)進行統一。
通過規范先行,能在數據倉庫建設及后續維護中能快速統計數據倉庫的運行情況,如系統作業的關鍵路徑、表數量以及空間使用情況,源系統變化的影響情況等,避免產生混亂,比如許多數據倉庫或系統隨着不斷變化和增加,連哪些表在使用,哪些數據已經不更新了、目標表使用了哪些源系統數據字段都不能馬上分析出來,需要花費人力來梳理,一段時間后又回歸混亂。這種情況不僅無法有效分析數據倉庫的實際運行情況,更會帶來生產問題的安全隱患。
1.2、開發流程
之前已經提到數據倉庫從頭建設的流程,那現在以某個數據應用對數據倉庫提出需求來看整個系統維護的開發流程,主要步驟如下,
(1)需求分析,確定數據集市和數據倉庫的接口字段和內容,明確數據需求;
(2)模型開發和維護:分析現有模型是否滿足所有接口字段需求,如果不滿足則需要從源系統增加入倉的表數據,並分析更新主數據區、匯總指標區和數據集市的邏輯模型、物理模型,並確定數據接口字段的映射關系,如果滿足則只需確認映射規則;
(3)ETL開發:開發數據庫或大數據平台的數據腳本以及作業腳本,並根據測試和生產驗證的情況修正邏輯模型;
1.3、分工及職責
數據倉庫團隊主要分為模型人員、ETL開發人員和測試人員,其中模型人員主要是進行需求分析和模型維護,ETL開發人員負責代碼實現和系統維護,開發流程中各角色工作如下:
那在許多銀行實際開發中,根據公司團隊規模不同模型人員的職責也會有所差別,模型人員有的屬於數據倉庫開發團隊,只負責數據模型維護,有的屬於科技規划團隊即又稱SA,模型人員除了模型維護可能還兼顧項目經理、系統分析的角色。那模型人員也可能分別負責主模型區、匯總指標區和數據集市。所以模型團隊內部也需要定期同步數據模型的變化和更新,統一設計規則和數據分布邊界;
2、數據倉庫開發管理系統
通過規范、標准流程和分工協作可以保證數據倉庫開發工作有條不紊,但如何高效執行整個開發流程,提高代碼開發效率。則需要有數據開發管理工具的支持。
之前在ETL開發中也介紹了一些開發實踐,如標准的數據采集和加載作業、按ETL算法和數據映射自動生成數據轉換腳本,那這些都可以通過工具整合並管理。通過開發管理工具對整個開發流程的模型數據、ETL數據和代碼進行管理和維護,通過系統化來協助模型設計和開發,那對於一個數據倉庫開發管理系統,主要有以下幾方面功能:
2.1數據模型維護功能
模型維護的功能許多是有文檔來進行,通過系統的整合可以提高效率,增加信息的可統計性。
(1)對於源系統調研信息進行管理,可對源系統的每個表和字段調研備注信息進行存儲修改,同時針對每個需求新增的表和字段都進行維護,以便沉淀經驗。
(2)邏輯模型管理,這個功能如果已經是通過ERWIN或POWERDESIGN等工具進行管理,可以只將結果和歷史版本進行維護。如果自己開發,可以集成一些開源工具的邏輯模型功能,統一在開發管理系統中維護。
(3)物理模型管理:物理模型主要是根據邏輯模型可以自動生成物理模型,模型人員和ETL開發人員在這個基礎上進行物理化,增加索引、壓縮、分區等信息。開發管理系統需要對物理模型進行存儲和記錄版本變更記錄,那各個數據區的物理模型都可以在開發管理系統中維護,同時針對每次版本的變更,自動生成數據庫或者大數據平台的數據庫腳本。
2.2 ETL作業信息配置及代碼生成
(1)數據映射:管理第5節介紹的數據轉換作業映射文檔,在配置算法等信息后,自動生成數據轉化作業代碼;
(2)數據采集和加載:管理數據采集作業和加載作業的信息,具體可見第4節,並自動生成采集和加載作業的腳本;
(3)調度作業:可以集成調度工具測試環境,根據ETL作業腳本信息,自動生成調度作業的腳本並同步作業信息到調度系統,並在調度工具中配置依賴關系后並測試后形成上線的調度作業配置版本。
2.3 打通測試環境和版本管理工具
數據倉庫的代碼主要是ETL腳本,無需編譯,只需放在規范的目錄下即可,由於生成代碼后還需要提交到版本管理工具以及測試環境進行測試,因此可以直接調用版本管理工具的命令進行生成的代碼更新,再通過版本發布工具發布到測試環境。如果沒有版本發布工具,可以直接在開發管理工具中集成腳本傳輸的功能,在測試環境驗證后再更新版本管理工具上的代碼分支。
通過打通測試環境和版本管理工具,可以提高自動化,確保從系統自動產生代碼和腳本,使維護的信息和生產腳本確保一致。
實際開發中,數據倉庫可能會有多個團隊進行維護,許多廠商也會有些工具,但要從數據倉庫全開發流程以及結合各銀行或公司的版本管理、測試管理流程來設計工具,提高開發效率這個層面,廠商一般不會考慮那么全面,需要銀行數據倉庫管理人員進行規划。通過統一規范及基礎上通過開發管理工具可以更好的統一全行的數據開發規范,提高開發效率和代碼質量,讓更多的人力投入到數據應用開發和分析中。