- 相關(guān)推薦
小研非現場(chǎng)審計系統業(yè)務(wù)的ETL
1.引言
在商業(yè)銀行中,用戶(hù)對數據實(shí)時(shí)性的要求很高。在商業(yè)銀行的一些系統中,如非現場(chǎng)審計系統,用戶(hù)需要在很短的時(shí)間內對交易數據進(jìn)行分析、統計,并把可疑數據上報,以盡量減少損失。這就要求系統所需數據必須在短時(shí)間內到達,但是這些系統的數據源十分繁多。
審計系統中,審計人員需要的信息很全面,既包括個(gè)貸業(yè)務(wù)、信貸業(yè)務(wù)、私金業(yè)務(wù),還要包括國際業(yè)務(wù)、資金業(yè)務(wù)和中間業(yè)務(wù)等,這些業(yè)務(wù)都有各自的系統,其中有一部分數據還取自于核心系統。而且數據存儲在異構的環(huán)境中,比如它們使用不同的數據庫,不同的操作系統環(huán)境等等,如何在眾多系統中快速的提取數據和快速的形成一個(gè)系統所需的數據集市,這對我們是一個(gè)挑戰。
針對上述問(wèn)題,本文提出了一個(gè)ETL模型。與其他商業(yè)銀行常用的模型相比,本模型基于業(yè)務(wù)設計和實(shí)現,具有高效的錯誤恢復機制,能夠利用基礎任務(wù)和業(yè)務(wù)任務(wù)的劃分,根據任務(wù)號單獨執行出錯的任務(wù),而不用將整個(gè)ETL過(guò)程重新執行一遍,大大縮短了恢復錯誤的時(shí)間,從而可以更好地滿(mǎn)足客戶(hù)對于時(shí)間上的要求;與傳統成熟的商業(yè)ETL工具相比,基于業(yè)務(wù)的模型設計與實(shí)現,可以根據每天的審計目標去創(chuàng )建ETL任務(wù),減少了工作量。同時(shí),此模型部分實(shí)現直接采用代碼,針對性更強,靈活性更好,可以處理商業(yè)銀行復雜系統中清洗和轉換任務(wù),最重要的是可以減少商業(yè)工具一些不必要的執行步驟,縮短了時(shí)間。中國碩士論文網(wǎng)提供大量免費mba碩士論文,如有業(yè)務(wù)需求請咨詢(xún)網(wǎng)站客服人員!
2.審計系統的ETL
目標ETL 過(guò)程的最終目標是在合理的時(shí)間內實(shí)現了高質(zhì)量的審計系統數據集市,以供客戶(hù)審計業(yè)務(wù)數據。圍繞此目標,本文必須合理、靈活、高效的設計ETL 過(guò)程,才能滿(mǎn)足用戶(hù)的需求。在此過(guò)程中,存在以下幾個(gè)問(wèn)題:
1.靈活的ETL 控制過(guò)程。
因為本審計系統涉及的數據源比較多,包括信貸系統、票據系統、核心系統等,根據客戶(hù)要求,有的業(yè)務(wù)數據可能需要每天更新,而有的業(yè)務(wù)數據可能需要每?jì)商旄乱淮。對于這種數據更新頻率不統一的要求,本論文需要設計靈活的ETL過(guò)程,可以實(shí)現針對單數據源的操作。
2.統一安全的抽取平臺。
由于數據源的繁多,而且數據存儲在異構的環(huán)境中,比如它們使用不同的數據庫,不同的操作系統環(huán)境等。這就要求本文要實(shí)現一個(gè)統一的抽取平臺,以應對不同的數據承載平臺、數據源和數據格式,同時(shí)要求在抽取構成中不能破壞源數據。
3.快速的處理過(guò)程。
由于用戶(hù)要求數據的準實(shí)時(shí)性,要求在盡量短的時(shí)間內(比如兩個(gè)小時(shí))便可以審計業(yè)務(wù),所以本文還要解決如何快速在眾多數據源中提取數據和快速的形成一個(gè)系統所需的數據集市,這對本文是一個(gè)巨大的挑戰。
4.自動(dòng)化的處理流程,可定制的服務(wù)。
由于商業(yè)銀行的特殊性,要求數據抽取必須在午夜進(jìn)行,所以本系統必須實(shí)現自動(dòng)化的處理流程,盡量減少人工干預,降低服務(wù)成本。此外,還要實(shí)現客戶(hù)定制任務(wù),包括時(shí)間和頻率等。
5.高質(zhì)量的數據集市。
同樣由于商業(yè)銀行業(yè)務(wù)的特殊性,審計系統的數據一定要高質(zhì)量,只有高質(zhì)量的數據作為保證,整個(gè)數據集市項目所提供的數據才能體現出高價(jià)值,這就要求本系統在ETL 過(guò)程中一定要建立合理的質(zhì)量保證和錯誤恢復機制。
3.ETL 模型結構設計
主要分為四個(gè)部分:控制臺、ODS、ETL過(guò)程和審計系統數據集市。
首先開(kāi)發(fā)人員必須利用控制臺初始化任務(wù),建立源數據和目標數據集市中的映射關(guān)系。
根據數據源的不同,建立不同的任務(wù)類(lèi)型,以供用戶(hù)選擇。然后用戶(hù)就可以利用控制臺管理任務(wù)了,包括初始化任務(wù)、任務(wù)調度、異常處理和記錄日志等。
客戶(hù)啟動(dòng)任務(wù)后,ETL過(guò)程會(huì )根據本次任務(wù)需要的數據信息從相應的數據源中抽取數據到ODS中。為什么要先將數據抽取到ODS中,而不直接進(jìn)行清洗,裝載到目標數據集市中呢?ODS是目標數據集市與外部源數據的接口,并且ODS在ETL中有著(zhù)緩沖和保護的作用,在業(yè)務(wù)系統和數據集市之間形成一個(gè)隔離層,避免外部源數據直接向目標數據集市寫(xiě)數據。
將數據抽取到ODS中,開(kāi)發(fā)人員就可以對ODS中的數據進(jìn)行多次清洗和轉換,即是在清洗和轉化過(guò)程中發(fā)生錯誤,開(kāi)發(fā)人員也不需要直接從數據源再次抽取,而只要使用ODS中的數據即可,為審計系統提供一定的容錯能力。清洗和轉換完畢后,將數據裝載到審計系統數據集市中。
4. ETL 的功能設計
4.1 控制臺
控制臺中又包括了任務(wù)管理、元數據管理、異常處理和系統日志。任務(wù)管理實(shí)現了任務(wù)的初始化、任務(wù)調度、任務(wù)執行等功能。元數據管理則為開(kāi)發(fā)人員提供了源數據(ODS 中)和數據集市映射關(guān)系的管理。
4.1.1 元數據管理目前,元數據存在多種不同的描述,Luo Agostas 說(shuō)元數據是一種比喻,因為它抽象了看起來(lái)完全不同的事物。在數據倉庫領(lǐng)域元數據被定義為:描述數據及其環(huán)境的數據。在本文里,筆者采用常用的一種描述,將本系統的元數據分為技術(shù)元數據和業(yè)務(wù)元數據。
所謂技術(shù)元數據主要是用來(lái)描述數據實(shí)體和數據處理過(guò)程中的技術(shù)細節和處理規則。比如數據源接口(數據庫名、端口、數據庫類(lèi)型、用戶(hù)名、密碼等)、ETL 任務(wù)表(任務(wù)編號、任務(wù)名稱(chēng)、任務(wù)粒度、任務(wù)號、后序任務(wù)、狀態(tài)等)、業(yè)務(wù)元數據則主要是對IT 系統的數據實(shí)體和數據處理的業(yè)務(wù)化描述,包括業(yè)務(wù)規則、業(yè)務(wù)術(shù)語(yǔ)、統計口徑、信息分類(lèi)等。如某商業(yè)商業(yè)銀行審計系統中的企業(yè)基本信息(企業(yè)名稱(chēng)、客戶(hù)類(lèi)型、企業(yè)隸屬、企業(yè)類(lèi)型、行業(yè)類(lèi)型、主營(yíng)業(yè)務(wù)、經(jīng)濟類(lèi)型等)、財務(wù)報表數據(報表月份、客戶(hù)名稱(chēng)、報表種類(lèi)、幣種等)、小額擔保貸款貼息統計(借據號、合同號、小額擔保貸款類(lèi)型、客戶(hù)姓名、貸款金額、期限年、期限月、貸款發(fā)放日等)等。
考慮到保證系統的執行效率。元數據管理主要為數據集市的形成提供基礎數據映射分析,并且在以后的維護中提供支持。
4.1.2 任務(wù)管理
在本文中,任務(wù)的劃分按照客戶(hù)審計目標而定,一個(gè)任務(wù)即是一個(gè)審計業(yè)務(wù)數據的ETL過(guò)程,這是本文的重點(diǎn)。在一個(gè)數據集市的形成過(guò)程中,會(huì )涉及到很多的業(yè)務(wù)系統,因此審計系統的數據集市由很多任務(wù)組成。本系統中任務(wù)分為兩種類(lèi)型:基礎任務(wù)和業(yè)務(wù)任務(wù);A任務(wù)是指實(shí)現形成該審計系統數據集市所必須的所有數據,比如審計系統中客戶(hù)的基本信息,賬戶(hù)信息,企業(yè)信息等,這些都是基礎數據,無(wú)論哪個(gè)業(yè)務(wù)都必須采用的數據,所以基礎任務(wù)也是每次ETL 過(guò)程所必須完成的任務(wù)。而業(yè)務(wù)任務(wù)則是可以選擇的,依據本次審計人員的要求而決定是否導入審計系統數據集市,比如信貸業(yè)務(wù),如果本次審計要求中不包括此業(yè)務(wù),那么本次ETL 任務(wù)便可不處理該業(yè)務(wù)數據;A任務(wù)是形成數據集市的必選任務(wù),每天只需執行一次。而業(yè)務(wù)任務(wù)則是根據每天的審計目標而選擇的可選任務(wù)。
在此基礎上又引入了優(yōu)先級、執行時(shí)間和任務(wù)號的概念。優(yōu)先級是在任務(wù)創(chuàng )建的同時(shí)就會(huì )確定的,優(yōu)先級有三等:重要,一般,不重要。執行時(shí)間就是執行任務(wù)的時(shí)間先后。任務(wù)號是若干任務(wù)執行先后順序的依據。
在描述功能前,我們有必要先描述任務(wù)的生命周期。在本審計系統中,任務(wù)有五種狀態(tài):
新建,就緒,執行,成功,失敗。狀態(tài)之間的轉換。
新建狀態(tài):創(chuàng )建一個(gè)任務(wù)即添加一個(gè)新的 ETL 任務(wù),任務(wù)的信息包括目標子任務(wù)信息和任務(wù)的創(chuàng )建信息(包括創(chuàng )建者和創(chuàng )建時(shí)間等等)。
就緒狀態(tài):任務(wù)在被調度后,初始化其狀態(tài)為就緒,等待執行。
執行狀態(tài):任務(wù)占用系統資源,同一時(shí)刻,處于“執行”狀態(tài)的只有一個(gè)任務(wù),另外的任務(wù)處于“就緒”狀態(tài)。
成功狀態(tài):任務(wù)執行完畢,并且執行過(guò)程中沒(méi)有發(fā)生異常,或者發(fā)生異常后又重新執行完畢。
失敗狀態(tài):任務(wù)執行過(guò)程中發(fā)生異常,非正常結束。
任務(wù)狀態(tài)之間的轉換主要包括以下幾種:
創(chuàng )建新任務(wù):創(chuàng )建一個(gè)新的任務(wù),即確定一個(gè)檢測計劃,初始化任務(wù)的數據源和元數據等信息。
調度:準備執行任務(wù),將其置為“就緒狀態(tài)”,隨時(shí)可以分派執行,由于同步機制的限制,系統在同一時(shí)刻只能執行一個(gè)任務(wù)。
分派:選擇任務(wù)并執行,進(jìn)入執行狀態(tài)。
出現異常:任務(wù)在執行過(guò)程中,發(fā)生可恢復或者不可恢復的異常,中止執行,將其置為“失敗”狀態(tài)。
重置:解決異常后,重置失敗的任務(wù),等待重新執行。
執行完成:任務(wù)執行過(guò)程中沒(méi)有出現異常情況,順利執行完畢。
任務(wù)管理模塊包括的功能主要有任務(wù)初始化、任務(wù)調度和任務(wù)執行。
任務(wù)初始化主要是創(chuàng )建任務(wù),用戶(hù)根據本次審計目標的要求來(lái)建立一個(gè) ETL 任務(wù),包含任務(wù)信息和任務(wù)的創(chuàng )建信息。任務(wù)信息是指選擇符合本次審計目標的業(yè)務(wù)任務(wù),基礎任務(wù)不用選擇,因為是必選的,在執行ETL 的時(shí)候,會(huì )首先執行基礎任務(wù)。
任務(wù)調度模塊是貫穿整個(gè)數據集市形成過(guò)程的,在此過(guò)程中監聽(tīng)事件,并能夠根據事件啟用相應的任務(wù)。在此模塊啟動(dòng)后,根據任務(wù)號順序執行,關(guān)于任務(wù)的任務(wù)號確定問(wèn)題,本系統中采用一個(gè)較為簡(jiǎn)單的原則來(lái)解決:在任務(wù)創(chuàng )建的同時(shí)已經(jīng)確定了任務(wù)的優(yōu)先級,結合任務(wù)的執行時(shí)間,先按照執行時(shí)間先后確定任務(wù)號,如果執行時(shí)間相同,再按照任務(wù)的重要性確定任務(wù)號,如果重要性也相同,則對二者(或者更多)隨機確定任務(wù)號。如果任務(wù)B的任務(wù)號是排在任務(wù)A 的任務(wù)號的下一位,則成任務(wù)B 是任務(wù)A 的后續任務(wù)。順序執行任務(wù)的同時(shí)要監聽(tīng)觸發(fā)事件,此模塊監聽(tīng)的事件可分為主要有兩種:①任務(wù)結束。在一個(gè)任務(wù)執行時(shí),任務(wù)調度模塊會(huì )實(shí)時(shí)監控這個(gè)任務(wù)的狀態(tài),當一個(gè)任務(wù)執行完畢后,將此任務(wù)的狀態(tài)置為完成,并將其后序任務(wù)狀態(tài)置為準備。而當錯誤發(fā)生后,首先將其狀態(tài)置為異常,然后調用異常處理模塊,處理好現場(chǎng),并將該子任務(wù)的狀態(tài)置為“失敗”。并將錯誤記錄到日志中,順序執行下一個(gè)任務(wù)。②時(shí)間到達。對于一些任務(wù),用戶(hù)希望它們定時(shí)執行,所以任務(wù)調度模塊必須實(shí)時(shí)比較它們的啟動(dòng)時(shí)間和系統時(shí)間,一旦二者一致,就執行此任務(wù)。任務(wù)調度模塊一直執行到任務(wù)完成后關(guān)閉系統時(shí)才隨系統一起停止運行。
任務(wù)執行即是開(kāi)始 ETL 處理過(guò)程。任務(wù)的執行方式分為兩種:手動(dòng)和定時(shí),手動(dòng)方式隨時(shí)可以執行,定時(shí)方式則是在設定的時(shí)間自動(dòng)啟動(dòng)。具有管理員權限的用戶(hù)隨時(shí)可以執行任務(wù)。定時(shí)任務(wù)則要在系統內設置定時(shí)執行任務(wù)的時(shí)間,可以根據任務(wù)需求設置幾種頻率:
每月,每周,每天等。每天到零點(diǎn)時(shí)刻,系統就會(huì )添加所有在這一天內要執行的定時(shí)任務(wù)到隊列中,然后計算出到達下一個(gè)設定的執行時(shí)間的時(shí)間差,讓線(xiàn)程休眠相同時(shí)間,醒來(lái)后再執行。同一個(gè)任務(wù)可以多次重復執行。如果在執行任務(wù)過(guò)程中新添加了一個(gè)任務(wù),系統會(huì )根據此任務(wù)的任務(wù)號插入到隊列中。每完成一個(gè)任務(wù),系統就從執行隊列中選取一個(gè)優(yōu)先級最高的執行。
4.1.3 異常處理
任何系統都會(huì )出現異常情況,所以異常處理模塊必不可少。在本模型中,異常處理模塊主要應對任務(wù)執行異常情況,比如數據出現亂碼,從而致使數據轉化任務(wù)出錯;正在執行抽取或導入任務(wù)時(shí),網(wǎng)絡(luò )斷開(kāi),等等。
在出現錯誤后,本模塊會(huì )將該任務(wù)的狀態(tài)置為“異!,然后調用相應的處理程序。對于一些任務(wù)執行過(guò)程中發(fā)生的錯誤,只需要重新執行該任務(wù)便可,比如網(wǎng)絡(luò )或電源斷開(kāi);而對于一些錯誤的處理則比較麻煩,比如抽取數據的時(shí)候一個(gè)表發(fā)生錯誤,并且ETL 過(guò)程已經(jīng)執行完畢后發(fā)現的,這種情況下,重新執行一遍ETL 過(guò)程勢必要花費大量的時(shí)間,無(wú)論是用戶(hù)還是數據源系統都是不允許的,因此我們可以利用前面所述基礎任務(wù)和業(yè)務(wù)任務(wù)的劃分,根據任務(wù)號單獨執行出錯的任務(wù),這種做法就大大節省了時(shí)間,從而提高了錯誤恢復的效率。
4.1.4 系統日志
系統日志模塊也是 ETL 過(guò)程中必不可少的一個(gè)模塊。它的作用在于記錄每一個(gè)任務(wù)完成情況,以及系統啟動(dòng)時(shí)間和完成時(shí)間等詳細信息,以便技術(shù)人員在查看以往的記錄的時(shí)候有據可依,并且也可以從中查看一些異常情況,分析問(wèn)題,解決系統無(wú)法自動(dòng)解決的問(wèn)題。
日志模塊對于管理員的一些操作也要做詳細的記錄,比如某天某個(gè)管理員沒(méi)有按照要求擅自啟動(dòng)了ETL 系統,導致了錯誤的發(fā)生,或者在發(fā)生異常后,管理員做出了一些解決措施;蛘哂泄芾韱T利用職權竊取數據,這些都將被記錄下來(lái),為以后的責任的追究和工作表現提供證據。
4.2 ETL 過(guò)程
此模塊是 ETL 的主要實(shí)現過(guò)程,包含三個(gè)階段:數據抽取、清洗和轉換、轉載。
在數據抽取階段,我們根據用戶(hù)提供的數據源方式分為以下幾種處理方式:①抽數。針對此種數據源,我們在數據源接口表中定義好了數據源的地址、端口號、用戶(hù)名和密碼,以及抽取時(shí)間后,即可定時(shí)調用任務(wù)抽取數據。②送數。由于數據源保密性要求、時(shí)間上的不合適或者網(wǎng)絡(luò )隔絕等條件的限制,ETL 系統只能等待數據源送數過(guò)來(lái),或者以備份文件,或者以文本文件的形式送達。這時(shí),我們可以監聽(tīng)送數事件,當查看到特定目錄中出現數據的時(shí)候,便啟動(dòng)往ODS 導數任務(wù)。在抽取任務(wù)中,我們也必須描述清楚數據的增長(cháng)方式:
增量或者全量。增量抽取往往適用于交易信息,這類(lèi)數據的特點(diǎn)是每天的操作不會(huì )對以前的信息造成影響;全量則適用于客戶(hù)信息、票據信息等可能被更改的數據,這些信息在各個(gè)抽取任務(wù)中都會(huì )有所體現。
在清洗和轉化操作階段,我們根據處理的源數據的規模大小和相關(guān)性將幾個(gè)處理過(guò)程作為一個(gè)子任務(wù),這樣做的好處是方便實(shí)時(shí)查看進(jìn)度和減少任務(wù)失敗時(shí)重新執行的時(shí)間損失,同時(shí)也最大化地利用了數據庫的緩存池。這樣的一個(gè)任務(wù)提交時(shí),比每個(gè)處理過(guò)程執行完畢后就提交節省很多時(shí)間,而每個(gè)任務(wù)完成后再提交則有可能導致數據庫緩存池溢出錯誤,從而導致任務(wù)提交失敗。即使沒(méi)有出現錯誤,實(shí)踐證明提交一個(gè)任務(wù)比子任務(wù)需要更多的時(shí)間。
在裝載階段,我們采用成熟的商業(yè)工具即可,因為這類(lèi)工具具有穩定性和安全性,并且在此階段,沒(méi)有太多可以?xún)?yōu)化的地方。只是在裝載前我們會(huì )停去掉表的索引,在導完數據后再統一建立,這么做的好處是提高導入速度。
裝載完畢后,對存在于 ODS 中的歷史數據,我們也需要定時(shí)的清理,以減少整個(gè)ETL系統負擔。針對不同的數據,清理的要求也不同,有的數據需要保留一天,以便同以后的數據對比,有的數據則可以即時(shí)清理掉。在本模型中,我們可以設置表數據的清理范圍和時(shí)間,用戶(hù)只需根據具體要求設置好執行時(shí)間,則系統會(huì )在指定時(shí)間清理指定數據。
5.模型的應用
我們將此模型應用到某商業(yè)銀行的非現場(chǎng)審計系統中,針對審計系統的特點(diǎn)對各個(gè)模塊就行了本地化。系統實(shí)際運行情況表明,該系統具有很好的效率,可靠性比較強,同時(shí)具有一定的容錯性,能很好的滿(mǎn)足用戶(hù)的需求。
6.總結
本文針對商業(yè)銀行系統復雜的數據存儲環(huán)境設計了基于業(yè)務(wù)的 ETL 模型,該模型將商業(yè)工具和編程實(shí)現結合起來(lái),可以靈活地實(shí)現用戶(hù)要求,同時(shí)保持了很高的效率。本模型在任務(wù)管理模塊將業(yè)務(wù)劃分為任務(wù),既可以按照傳統ETL 流程處理數據,也可以在發(fā)生錯誤后按照任務(wù)的任務(wù)號單獨完成目標數據庫中出錯部分,這種靈活的處理方式大大節省了時(shí)間。異常處理模塊和系統日志模塊為系統的安全性、健壯性提供了保障,歷史數據的定時(shí)清理機制也保證了此ETL 系統可以高效的完成任務(wù)。本碩士論文來(lái)源于中國碩士論文網(wǎng),參考文獻:http://www.lunwenad.com/wzlb-3.html,轉載敬請保留鏈接,謝謝。
本系統也還存在一些不足的地方,比如對于語(yǔ)義異構問(wèn)題沒(méi)有有效提出有效的方法,希望將來(lái)能夠改進(jìn)。
【小研非現場(chǎng)審計系統業(yè)務(wù)的ETL】相關(guān)文章:
利用非現場(chǎng)審計系統進(jìn)行分析性復核03-23
非審計服務(wù)與審計質(zhì)量03-22
淺談國有商業(yè)銀行非現場(chǎng)計算機審計04-01
小研多變量系統的解耦與控制03-01
非接觸測距系統03-07