【正文】
在 EDW 中,將由成千上萬的作業(yè)來完成數(shù)據(jù)整和的功能,這些作業(yè)由于復雜度不同,運行頻度不同,甚至是同一個作業(yè),由于數(shù)據(jù)來源不同(例如不同的分行),數(shù)據(jù)規(guī)模也是相差甚遠的,因此如果對所有的作業(yè)使用相同的配置文件,將對系統(tǒng)。服務(wù)端與客戶端作為daemon 進程,要求能夠長時間運行??蛻舳伺c服務(wù)端采用 C/S 通信模式,通過 TCP 協(xié)議傳送信息,這樣做的好處是:? 避免工作節(jié)點直接訪問管理庫,訪問管理庫的工作統(tǒng)一ETL Server來完成,從而提高了應(yīng)用部署的適應(yīng)能力;46 / 47? ETL Server可以據(jù)此檢測所有工作節(jié)點是否存在故障;客戶端負責采集信息發(fā)送到服務(wù)端,服務(wù)端接收信息,并寫到數(shù)據(jù)庫。45 / 47 動態(tài)資源分配R e s o u r c e B r o k e rR e s o u r c eA g e n tN o d e 1R e s o u r c eA g e n tN o d e 2R e s o u r c eA g e n tN o d e NR e s o u r c eA g e n tD B S e r v e r. . . 節(jié)點資源實時信息T C P / I P T C P / I P T C P / I P T C P / I P更新E T L S e r v e rE T L C l i e n tE T L 域上圖為本系統(tǒng)的動態(tài)資源采集模塊的邏輯結(jié)構(gòu)圖,其目的是實時采集整個ETL 域中各節(jié)點的系統(tǒng)資源使用情況,以及檢測節(jié)點運行狀態(tài)是否正常,以作為動態(tài)資源分配的主要依據(jù)。7. ETL SERVER 得到 ETL CLIENT 的反饋信息后,將其寫入日志,并設(shè)置JOB 的狀態(tài),同時釋放結(jié)點的資源。然后根據(jù)運行配置文件,將 JOB 分配給各個 ETL CLIENT 執(zhí)行。5. ETL SERVER 在得到 JOB 運行的結(jié)點個數(shù)和能夠運行該 JOB 的結(jié)點列表后,根據(jù)本域的管理類數(shù)據(jù)庫中結(jié)點的使用情況表,按照一定的策略對能夠運行該 JOB 的結(jié)點列表進行排序,選出最優(yōu)的若干個 ETL CLIENT。44 / 473. 3.ETL SERVER 對 JOB 的類型進行判斷,如果是普通的 SHELL JOB 或者EXEC JOB,則根據(jù) JOB 實例表中的 NODES_LIST(該作業(yè)可使用的節(jié)點列表),計劃在本域中分配一個 ETL CLIENT 給 JOB 運行,如果是 DS JOB,則根據(jù) JOB 實例表中的 NODES_NEED(運行該作業(yè)所需節(jié)點數(shù))和NODES_LIST(該作業(yè)可使用的節(jié)點列表)得到該 JOB 運行所需的結(jié)點個數(shù)以及所能夠運行該 JOB 的結(jié)點列表。管理庫的信息分為三類:? 系統(tǒng)參數(shù)和作業(yè)配置信息:靜態(tài)參數(shù);? 狀態(tài)信息: 屬于控制類的動態(tài)信息;? 日志信息; ETL 流程設(shè)計系統(tǒng) ETL 設(shè)計流程如下圖:43 / 47本系統(tǒng) ETL 處理流程順序概要描述如下:1. 調(diào)度程序在總行的調(diào)度服務(wù)器上面運行,當調(diào)度程序發(fā)現(xiàn)某個作業(yè)符合調(diào)度條件,就對其進行調(diào)度,將該 JOB 的 ID 發(fā)給該 JOB 所在域的ETL SERVER。無論是總行還是分行,數(shù)據(jù)庫都是由管理類數(shù)據(jù)庫和業(yè)務(wù)類數(shù)據(jù)庫組成。管理類數(shù)據(jù)庫存放的是作業(yè)運行控制相關(guān)的數(shù)據(jù)信息,如系統(tǒng)配置參數(shù)或作業(yè)配置信息、狀態(tài)信息和運行日志信息等。? 數(shù)據(jù)庫模塊統(tǒng)一架構(gòu)中的數(shù)據(jù)庫模塊分為兩個部分:管理類數(shù)據(jù)庫和業(yè)務(wù)類數(shù)據(jù)庫。如果實際運行 JOB 的 ETL CLIENT 資源不足,經(jīng)常處于高負荷狀態(tài),則可以通過增加 ETL CLIENT 來提高運行效率。它可以根據(jù)本域上的作業(yè)情況增減 ETL CLIENT。42 / 47ETL CLIENT 主要負責 ETL SERVER 分配的作業(yè)模塊的具體執(zhí)行,是作業(yè)的具體執(zhí)行者。其次根據(jù)作業(yè)運行資源需求,獲取所屬 ETL CLIENT 的資源情況,選擇最優(yōu)的若干臺 ETL CLIENT,分配作業(yè)給這些 ETL CLIENT 運行。ETL SERVER 主要負責 ETL JOB 的具體執(zhí)行。對于不同的域,它們的處理任務(wù)也是不一樣的。總行有一個或多個總行的 ETL 域,分行有本分行的 ETL 域。在實際部署中,調(diào)度模塊可以僅部署在總行,實施統(tǒng)一調(diào)度,也可能部署在分行,實施分布調(diào)度;而在每個 ETL 域的 ETL Server 上部署調(diào)度的Agent 模塊,調(diào)度 Server 負責任務(wù)的檢索、調(diào)度和分發(fā),調(diào)度 Agent 接收到調(diào)度 Server 的調(diào)度指令,調(diào)用作業(yè)主控模塊(JCI)執(zhí)行具體的作業(yè),并根據(jù) JCI的退出碼將作業(yè)的執(zhí)行情況反饋給調(diào)度 Server。任務(wù)調(diào)度模塊在 EDWH+EDWB 統(tǒng)一模塊中,調(diào)度是由部署在總行的調(diào)度 SERVER 統(tǒng)一完成調(diào)度工作,或者由部署在分行的調(diào)度 Server 完成本分行作業(yè)的調(diào)度。 ? 物理作業(yè):具體負責數(shù)據(jù)加工的程序執(zhí)行單元,各類存儲過程或者作業(yè)腳本(SHELL 腳本、用 C/C++/PROC 等開發(fā)的可執(zhí)行程序) 。? ETL 域:ETL 架構(gòu)中基本的計算資源組合,是一個計算機群,由 JCI統(tǒng)一管理和控制,一個 ETL 域由一個 ETL Server 和多個 ETL 41 / 47Client 組成。? 數(shù)據(jù)庫模塊:管理類數(shù)據(jù)庫:用于調(diào)度和作業(yè)主控,保存任務(wù)和作業(yè)的相關(guān)配置信息和運行信息。需要定義:源數(shù)據(jù)結(jié)構(gòu)、目標數(shù)據(jù)結(jié)構(gòu)、源和目標的映射(包括定制映射的方案、定制映射調(diào)用的函數(shù)、定制清洗的方案)、作業(yè)處理日志以及作業(yè)依賴關(guān)系。作業(yè)的監(jiān)控需要包括以下功能:監(jiān)控作業(yè)的當前執(zhí)行情況;查詢作業(yè)歷史執(zhí)行情況。 作業(yè)調(diào)度和監(jiān)控根據(jù)作業(yè)依賴關(guān)系的元數(shù)據(jù)進行 ETL 作業(yè)的調(diào)度,并對執(zhí)行過程進行監(jiān)控。 異常處理ETL 處理的異常主要包括:1) 硬件、操作系統(tǒng)、網(wǎng)絡(luò)導致異常;2) 數(shù)據(jù)源數(shù)據(jù)傳輸、質(zhì)量導致異常;3) ETL 過程處理導致異常;4) 目標數(shù)據(jù)模型導致異常;5) 人工干預(yù)導致異常等;建議處理的方法包括:1) 手工干預(yù),重新調(diào)整 ETL 過程;2) 終止流程,通知管理員;3) 拒絕數(shù)據(jù),記錄原因;4) 清洗數(shù)據(jù),部分入庫;5) 監(jiān)控資源,反復嘗試ETL 恢復策略包括有:1) 每條記錄中有數(shù)據(jù) ETL 的時間戳,對小數(shù)據(jù)量的數(shù)據(jù)表,可以通過該40 / 47時間戳清除掉本次加載的數(shù)據(jù)。錯誤的恢復策略:? 每條記錄中有數(shù)據(jù) ETL 的時間戳,對小數(shù)據(jù)量的數(shù)據(jù)表,可以通過該時間戳清除掉本次加載的數(shù)據(jù)。ETL 管理調(diào)度利用作業(yè)調(diào)度控制可以處理各種異常錯誤情況。缺點是必須對業(yè)務(wù)數(shù)據(jù)庫進行改動,客戶不一定能接受。6. 循環(huán)校驗碼對于沒有時間戳的數(shù)據(jù)進行修改,還可以考慮采用循環(huán)校驗碼。一般數(shù)據(jù)庫均包括日志,通過分析數(shù)據(jù)庫的日志來判斷增量數(shù)據(jù)。4. 整表比較對于沒有時間戳的增量數(shù)據(jù),數(shù)據(jù)量不大時,例如編碼表,可以采用使用數(shù)據(jù)庫的 SQL 操作語句(NOT IN,NOT Exists)的方法。2. 自增長的序列號源系統(tǒng)設(shè)置了自增長的序列號作為唯一主鍵。增量策略是正常的日常增量處理的策略,故障恢復策略是在日常增量處理出錯時的處理策略。對于歷史數(shù)據(jù)加載的策略,我們可以采用時間窗口的分段的方法來處理歷史數(shù)據(jù)量大的表的裝載,即我們可以一個一個時間段來加載歷史數(shù)據(jù)。我們認為只需要建立一套增量加載的 ETL 同樣處理歷史數(shù)據(jù)加載和日常數(shù)據(jù)加載,而不再開發(fā)另一套全量加載 ETL 程序處理歷史數(shù)據(jù)加載。歷史數(shù)據(jù)加載指在第一次加載數(shù)據(jù)到數(shù)據(jù)倉庫中,此時數(shù)據(jù)倉庫中不存在歷史數(shù)據(jù)。5. 作為 ETL 后續(xù)處理的統(tǒng)一接口建立 Staging Area 作為 ETL 每個處理階段的接口,對系統(tǒng)的靈活性和可擴展性非常有幫助。3. 對數(shù)據(jù)的格式進行轉(zhuǎn)換在 Staging Area 完成數(shù)據(jù)格式的轉(zhuǎn)換,例如日期格式、字符串右邊的空格、NULL 值的替換、數(shù)據(jù)類型轉(zhuǎn)換等。2. 應(yīng)用于增量處理可以減少處理的記錄數(shù)量,使增量處理更加容易,例如應(yīng)用于 SCD Type 2。Staging Area 的作用與實現(xiàn):1. 減少對數(shù)據(jù)源的查詢壓力,有助于數(shù)據(jù)整合。 從業(yè)務(wù)系統(tǒng)抽取數(shù)據(jù),采用 ETL 平臺直接從業(yè)務(wù)系統(tǒng)抽取數(shù)據(jù),也可以先把業(yè)務(wù)系統(tǒng)的數(shù)據(jù)導出為文本文件再加載到臨時存儲區(qū)。 ETL 設(shè)計方案 ETL 關(guān)鍵設(shè)計環(huán)節(jié) 接口層設(shè)計策略將數(shù)據(jù)源環(huán)境下的數(shù)據(jù)裝載進入 EDW 環(huán)境,需要在兩個不同環(huán)境的記錄系統(tǒng)之間建立一個接口。提供數(shù)據(jù)存儲區(qū)的FDM層數(shù)據(jù)、ADM層數(shù)據(jù)。本模式提供EDW允許的相應(yīng)時間段的歷史數(shù)據(jù)支持。? ETL5:屬于ETL目標數(shù)據(jù)裝載。從數(shù)據(jù)倉庫FDM層進行適量的維度、指標建模。ETL3處理是耗時最長,邏輯處理最復雜的階段,需要非常重視。? ETL3:屬于ETL轉(zhuǎn)換。對數(shù)據(jù)緩沖區(qū)數(shù)據(jù)標準化,統(tǒng)一數(shù)據(jù)表達格式,排序數(shù)據(jù),篩選重復數(shù)據(jù),合并或分割數(shù)據(jù)項,裝載入數(shù)據(jù)存儲區(qū)的基礎(chǔ)數(shù)據(jù)層。對源數(shù)據(jù)做數(shù)據(jù)平衡檢查、稽核數(shù)據(jù)有效性,報告數(shù)據(jù)質(zhì)量問題。? ETL1:屬于ETL預(yù)處理。ETL 轉(zhuǎn)換清洗通過連接、合并、分割,按照清洗規(guī)則對數(shù)據(jù)緩沖區(qū)、數(shù)據(jù)存儲區(qū)的數(shù)據(jù)進行加工、匯總,最終裝載入數(shù)據(jù)存儲區(qū)。XX 銀行總行的 EDW 系統(tǒng)數(shù)據(jù)源環(huán)境復雜,應(yīng)用系統(tǒng)數(shù)據(jù)需求旺盛,數(shù)據(jù)質(zhì)量參差不齊,結(jié)合以上系統(tǒng)目標及設(shè)計原則,建議采用如下體系架構(gòu)建設(shè):35 / 47ETL 邏輯結(jié)構(gòu)按照處理過程可劃分為 ETL 預(yù)處理、ETL 轉(zhuǎn)換清洗、ETL 目標數(shù)據(jù)裝載。通過高效的 ETL 系統(tǒng)結(jié)構(gòu)、層次化的應(yīng)用功能劃分和標準的程序模板,EDW 系統(tǒng)能夠達到以下目標:? 支持在此框架下實現(xiàn)EDW項目所需要的ETL功能;? 支持在規(guī)定的批處理時間窗口(Batch Window)內(nèi)能夠完成數(shù)據(jù)加載工作,即需要滿足日常數(shù)據(jù)加載的性能需求;? 能夠支持有效的應(yīng)用程序開發(fā)模式,提高開發(fā)效率,盡量減少應(yīng)用開發(fā)成本;? 減少系統(tǒng)維護的復雜性,支持后續(xù)增加新數(shù)據(jù)或功能的開發(fā)工作。34 / 47第二章 ETL 體系建設(shè) ETL 架構(gòu)概述在商業(yè)銀行的 EDW 系統(tǒng)中,數(shù)據(jù)由數(shù)據(jù)源系統(tǒng)加載到 EDW 的各個數(shù)據(jù)層中,并通過供數(shù)接口提供給相關(guān)使用者系統(tǒng)。33 / 47 應(yīng)用服務(wù)基于數(shù)據(jù)分析功能和交易功能分離原則,為保證交易系統(tǒng)運行效率和數(shù)據(jù)分析功能日益增加的需求,新系統(tǒng)設(shè)計時,應(yīng)該將數(shù)據(jù)分析功能和交易功能分離到不同系統(tǒng)中,或者至少為將來分離做好技術(shù)準備。? EDW 模型化各系統(tǒng)數(shù)據(jù),可以滿足各應(yīng)用系統(tǒng)對全量數(shù)據(jù)、增量數(shù)據(jù)的需求,減少對重要交易系統(tǒng)的干擾。EDW 數(shù)據(jù)采集、加工、發(fā)布的范圍包括:? 總行各應(yīng)用系統(tǒng)之間? 總行與分行應(yīng)用系統(tǒng)之間? 同一分行應(yīng)用系統(tǒng)間? 不同分行應(yīng)用系統(tǒng)間? 分布部署的同一應(yīng)用系統(tǒng)間EDW 數(shù)據(jù)服務(wù)具備的能力有:? EDW 快速提供批量數(shù)據(jù),可以滿足應(yīng)用系統(tǒng)準實時的數(shù)據(jù)要求。應(yīng)用架構(gòu)應(yīng)采用先進的理念和技術(shù),并結(jié)合 XX 銀行科技規(guī)劃與現(xiàn)有的技術(shù)平臺。EDW 系統(tǒng)的應(yīng)用架構(gòu)應(yīng)該能夠作為需求檢查列表,檢驗當前用戶需求是否被涵蓋,而不會發(fā)生遺漏。開放性:EDW 系統(tǒng)的應(yīng)用架構(gòu)設(shè)計必須考慮平臺、系統(tǒng)、功能的開放性,與XX 銀行的科技規(guī)劃相適應(yīng),能夠與周邊各系統(tǒng)進行良好的信息傳遞。數(shù)據(jù)集市中可存在操作型數(shù)據(jù)、匯總型數(shù)據(jù)和多維分析數(shù)據(jù),根據(jù)應(yīng)用的需要分別進行建立。加工匯總數(shù)據(jù)層的數(shù)據(jù)模型設(shè)計在有相應(yīng)的匯總需求情況下才針對匯總需求進行數(shù)據(jù)表和數(shù)據(jù)匯總?cè)蝿?wù)的擴展設(shè)計,逐步積累公共匯總指標,最后形成全行可共享的面向各個主題的中間匯31 / 47總指標。加工匯總數(shù)據(jù)層下的匯總需求由“應(yīng)用需要”來確定。EDW 對源系統(tǒng)客戶號進行統(tǒng)一,提供統(tǒng)一的客戶號(ECIF 客戶編號) 。在基礎(chǔ)據(jù)模型中按照八大主題對銀行全行數(shù)據(jù)進行整合、分類組織和存儲,這八大主題包括總帳(GL)、客戶(CI)、存款(DEP)、貸款(LN)、銀行卡(CRD)、中間業(yè)務(wù)(NIN)、渠道(CHN)、公用(CM);每個主題下設(shè)計相應(yīng)的數(shù)據(jù)模型,最后構(gòu)成全行統(tǒng)一的基礎(chǔ)數(shù)據(jù)模型。為應(yīng)用方便、查詢高效考慮,可以對源系統(tǒng)進行適當?shù)恼?、拆分,也可以裁減掉源系統(tǒng)中沒有必要整合的數(shù)據(jù)。? 標準化全量層? 基礎(chǔ)數(shù)據(jù)層數(shù)據(jù)模型基礎(chǔ)數(shù)據(jù)模型用于整合、存儲全行各業(yè)務(wù)系統(tǒng)的基礎(chǔ)業(yè)務(wù)數(shù)據(jù)。為了更好的管理這些數(shù)據(jù),EDW 數(shù)據(jù)按層次進行劃分存放及管理,從邏輯模型上劃分為以下幾個數(shù)據(jù)層次:30 / 47? 源數(shù)據(jù)緩沖層:數(shù)據(jù)層與業(yè)務(wù)源的數(shù)據(jù)結(jié)構(gòu)一一對應(yīng),是數(shù)據(jù)存儲的臨時存儲區(qū)域,數(shù)據(jù)在其中只作暫時性保存,當新的數(shù)據(jù)到達緩儲區(qū)時,現(xiàn)有數(shù)據(jù)被刪除或覆蓋。因此數(shù)據(jù)和信息不能隨意堆積存放到數(shù)據(jù)庫中,需要對全行的數(shù)據(jù)和信息進行分層、分類存放,并制定相應(yīng)的數(shù)據(jù)分層、分類的規(guī)范,EDW 系統(tǒng)上所有數(shù)據(jù)和應(yīng)用的建設(shè)都應(yīng)遵從統(tǒng)一的數(shù)據(jù)管理規(guī)范。因此在設(shè)計時必須考慮如何合理組織數(shù)據(jù),以減小數(shù)據(jù)冗余。? 存儲空間合理性原則數(shù)據(jù)模型需要處理海量數(shù)據(jù)。? 實用性原則處理大量的源系統(tǒng)數(shù)據(jù),將會占用大量的系統(tǒng)資源,因此必須仔細分析數(shù)據(jù)的實用性、指標的使用頻率,以業(yè)務(wù)需求驅(qū)動為原則,對業(yè)務(wù)提出的基礎(chǔ)數(shù)據(jù)和指標需求進行優(yōu)先級劃分,正確制定指標的匯總粒度。28 / 47? 高效原則數(shù)據(jù)模型面臨海量數(shù)據(jù)的加工和存儲,隨著時間的推移,數(shù)據(jù)將不斷累積,因此效率問題是直接影響系統(tǒng)可用性的關(guān)鍵因素。特別是加工匯總層的數(shù)據(jù)架構(gòu)必須符合“匯總指標可靈活增加”的技術(shù)要求,