張 碩,趙卓峰,王桂玲,劉 杰
(北方工業(yè)大學(xué) 大規(guī)模流數(shù)據(jù)集成與分析技術(shù)北京市重點實驗室,北京 100144)
ETL(Extract-Transformation-Loading)即數(shù)據(jù)抽取、轉(zhuǎn)換和加載的概念是隨著數(shù)據(jù)倉庫的產(chǎn)生而產(chǎn)生的[1],可以看作是一類主要的數(shù)據(jù)集成技術(shù)手段,傳統(tǒng)的ETL方案是用戶從數(shù)據(jù)源抽取所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,最終按照預(yù)先定義好的數(shù)據(jù)倉庫模型,將數(shù)據(jù)加載到數(shù)據(jù)倉庫中,為信息研判分析提供決策支持的數(shù)據(jù).信息研判分析是指對數(shù)據(jù)進行關(guān)聯(lián)和整合后產(chǎn)生的一個判定性的結(jié)果進行分析,以為后續(xù)工作提供依據(jù)的過程.目前企業(yè)中存在大量動態(tài)、突發(fā)的業(yè)務(wù)需求,需要采用探索與執(zhí)行并行的方式不斷嘗試著將數(shù)據(jù)聯(lián)系起來進行研判分析活動,用戶只能根據(jù)當前的結(jié)果來決定下一步的數(shù)據(jù)轉(zhuǎn)換和關(guān)聯(lián)操作,難以通過傳統(tǒng)的預(yù)定義式的ETL方案實現(xiàn).
利用客戶端工具實現(xiàn)ETL過程是最普遍的做法,但利用ETL工具[2]建立ETL流程是一項非常繁瑣并且對專業(yè)技能要求很高的工作,需要對ETL有一定的研究基礎(chǔ)才能很好地利用工具進行研判分析,不具有通用性和普遍性,傳統(tǒng)的ETL方法要求開發(fā)人員首先簡單的描述業(yè)務(wù)規(guī)則,然后精確地詳細設(shè)計如何一步步地實現(xiàn)這些規(guī)則[3],操作性較差,而且一旦在構(gòu)建ETL任務(wù)過程中發(fā)生錯誤,進行錯誤排查也是一項耗時耗力的工作,對于非計算機專業(yè)的人員而言門檻較高,學(xué)習起來難度較大.一個ETL流程的執(zhí)行對應(yīng)一種結(jié)果數(shù)據(jù)集,若要根據(jù)結(jié)果再繼續(xù)研判分析就需要重新建立ETL流程,工作強度較大,而對于沒有確定的數(shù)據(jù)源、數(shù)據(jù)抽取和加載方案的這種逐步嘗試進行研判分析的情況顯然是不適應(yīng)的.
針對無法預(yù)先定義研判分析方案和構(gòu)建ETL流程復(fù)雜的問題,提出動態(tài)ETL流程服務(wù),“動態(tài)”表示該服務(wù)不需要預(yù)先創(chuàng)建指定結(jié)構(gòu)的目標表,也不需要預(yù)先定義好ETL流程,能夠隨著用戶需求的改變而改變.將構(gòu)建ETL流程的過程封裝為服務(wù),屏蔽底層實現(xiàn)細節(jié),特別是數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)關(guān)聯(lián)操作的復(fù)雜性,轉(zhuǎn)化為非IT人員易于理解和操作的方式,用戶只需要通過界面進行簡單的配置操作即可完成ETL流程的構(gòu)建工作,可以最大限度地降低用戶建立ETL流程的復(fù)雜度,并且能夠避免人工操作出錯的問題.
本文第二節(jié)介紹了相關(guān)工作;第三節(jié)詳細闡述基于動態(tài)ETL流程服務(wù)的探索式研判分析基本思路;第四節(jié)給出動態(tài)ETL流程服務(wù)模型相關(guān)定義;第五節(jié)介紹動態(tài)ETL流程服務(wù)的實現(xiàn)過程和并發(fā)性能的優(yōu)化方法;第六節(jié)結(jié)合某公安聯(lián)合作戰(zhàn)指揮應(yīng)用案例對動態(tài)ETL流程服務(wù)進行驗證.
當前數(shù)據(jù)的處理主要是通過ETL工具完成,這些工具往往都提供了圖形化界面,在一定程度上為用戶提供了便利,但對于非IT人員而言,要建立一個ETL流程實現(xiàn)難度較高.目前大多研究都是針對ETL工具的,提高其通用性,降低復(fù)雜度,文獻[4]和文獻[5]都是從數(shù)據(jù)源的層面提高ETL工具的通用性,其中文獻[4]通過搜索數(shù)據(jù)源找到目標表與源數(shù)據(jù)表的映射關(guān)系,對各種異構(gòu)的數(shù)據(jù)源進行提取和轉(zhuǎn)換成統(tǒng)一格式的目標表.文獻[5]根據(jù)元數(shù)據(jù)信息在服務(wù)器中創(chuàng)建其對應(yīng)的表的視圖,屏蔽了各異構(gòu)數(shù)據(jù)源的差別.文獻[6]實現(xiàn)了一個通用化的ETL系統(tǒng),簡化了ETL的開發(fā)環(huán)節(jié).文獻[7]提出了一個ETL優(yōu)化框架并對ETL過程的邏輯優(yōu)化進行了研究,得出了最小時間的ETL工作流.文獻[8]提出一種基于統(tǒng)一視圖模型的ETL過程建模方法,提供源數(shù)據(jù)ET抽取映射,主要完成屬性名稱、屬性類型、屬性語義等方面的轉(zhuǎn)換和統(tǒng)一,依靠視圖重用性簡化用戶操作,降低復(fù)雜性.
還有一些研究是將ETL過程與服務(wù)相結(jié)合的,文獻[9]將ETL作業(yè)的執(zhí)行操作封裝為服務(wù),通過數(shù)據(jù) ETL 服務(wù)器定義特定的作業(yè),將其發(fā)布為 Web Services,服務(wù)請求者調(diào)用作業(yè)執(zhí)行服務(wù)執(zhí)行作業(yè).文獻[10]對于一些ETL工具不支持的異種數(shù)據(jù)源采用包裝成Web服務(wù)的方式進行訪問,提供標準統(tǒng)一的訪問方式,并提供Web服務(wù)方式的數(shù)據(jù)抽取.以上這些研究對于作業(yè)執(zhí)行以及數(shù)據(jù)訪問和數(shù)據(jù)抽取操作進行服務(wù)封裝,簡化了用戶的一些操作,但是沒有考慮到無法確定構(gòu)建ETL流程方案的情況用戶面臨的瓶頸問題,用戶利用數(shù)據(jù)進行研判分析工作的最繁重也最困難的工作就是建立ETL流程,要從根本上減少用戶的工作量,簡化用戶操作,由此想到將ETL流程封裝為服務(wù),用戶只需要進行簡單配置就能完成.
Web服務(wù)實現(xiàn)方案中,因為基于REST[11]式Web服務(wù)的實現(xiàn)和操作與基于SOAP和XML-RPC方式相比則更為容易和簡潔[12],以至于越來越多的Web服務(wù)開始采用REST風格來進行設(shè)計和實現(xiàn),涉及到電子商務(wù)、搜索、社交、支付等多個平臺的大力支持.例如,Google已利用REST的設(shè)計原則改善了Web搜索服務(wù)功能,Amazon和Ebay等也根據(jù)REST原則實現(xiàn)了用HTTP+URI+XML的服務(wù)[13],還有社交平臺FaceBook以及支付平臺Paypal,都提供了REST風格的Web服務(wù).傳統(tǒng)以WSDL為代表的結(jié)構(gòu)化Web服務(wù)正逐漸被RESTful Web服務(wù)取代[14],選用REST架構(gòu)風格將構(gòu)建ETL流程封裝為服務(wù)是可行且適合的選擇.
在探索式研判分析的過程中,用戶不斷提出和改進需求,通過分析當前結(jié)果來確定最終結(jié)果或明確下一步需求,以此反復(fù),直至得到滿意的結(jié)果.例如,公安機關(guān)要處理的案件類型多樣,復(fù)雜多變,每個案件的發(fā)生情況各不相同,突發(fā)案件也時有發(fā)生,有時候現(xiàn)場線索模糊不清,不能給出確切的嫌疑人范圍,無法確定嫌疑人信息,交織信息繁多,導(dǎo)致公安人員不能確定最終想要的數(shù)據(jù)結(jié)果集,具體想要提取哪些數(shù)據(jù)不明確,只能根據(jù)每次的結(jié)果進行分析研究,找出數(shù)據(jù)的關(guān)聯(lián)關(guān)系,以明確下一次的研判分析方案,逐步嘗試得出有效信息,這是一種典型的探索式研判分析的過程.
本文提出的動態(tài)ETL流程服務(wù)注重對于數(shù)據(jù)源、數(shù)據(jù)抽取和加載方式的不確定性問題的快速有效解決方案,以支持探索式研判分析,基于動態(tài)ETL流程服務(wù)的探索式研判分析活動如圖1所示,圖中的小方塊代表通過請求訪問動態(tài)ETL服務(wù)后獲取到的數(shù)據(jù)信息,橢圓和三角形的嵌套組合代表隨需求調(diào)整而變化的動態(tài)ETL流程服務(wù),橢圓表明服務(wù)的表現(xiàn)形式?jīng)]有改變,不同角度的三角形表明服務(wù)可以根據(jù)用戶需求的改變調(diào)整請求參數(shù)的配置完成不同ETL流程的創(chuàng)建.圖中涉及到兩類箭頭,其中,空心箭頭表示用戶操作,包括配置服務(wù)請求參數(shù)和請求訪問服務(wù)操作,實心箭頭表示動態(tài)ETL流程服務(wù)操作,包括獲取源數(shù)據(jù)和服務(wù)返回結(jié)果操作.用戶在初始階段并不能確定最終的研判分析結(jié)果,只能采用探索與執(zhí)行并行的方式進行研判分析,用戶首先嘗試請求訪問動態(tài)ETL流程服務(wù),得到一個數(shù)據(jù)結(jié)果集,根據(jù)當前結(jié)果調(diào)整需求,繼續(xù)發(fā)送請求,服務(wù)接收請求進行處理返回結(jié)果,以此反復(fù),直到用戶得到滿意的結(jié)果才結(jié)束這個過程.
圖1 基于動態(tài)ETL流程服務(wù)的探索式研判分析 基本思路Fig.1 Principle of exploratory judgment analysis based on dynamic ETL process service
基于動態(tài)ETL流程服務(wù)的探索式研判分析基本思路如下:
①對于非IT人員的用戶,不能很好地理解Web服務(wù),為此需要將Web服務(wù)抽象化,轉(zhuǎn)化為用戶易于理解和操作的可視化界面進行服務(wù)的參數(shù)配置完成對服務(wù)的訪問操作;
②用戶可以根據(jù)當前結(jié)果更改服務(wù)請求參數(shù)以進行下一次服務(wù)請求,獲取所需數(shù)據(jù),支持探索與執(zhí)行并行的方式進行研判分析活動;
③屏蔽底層實現(xiàn)細節(jié),用戶不需要手工建立ETL流程,通過訪問動態(tài)ETL流程服務(wù)完成ETL流程的創(chuàng)建工作,對源數(shù)據(jù)的提取也無需操作數(shù)據(jù)庫,通過界面配置選定數(shù)據(jù)源.
利用ETL工具構(gòu)建ETL流程是復(fù)雜且耗時的一項工作,同時要求使用者有一定的專業(yè)基礎(chǔ),動態(tài)ETL流程服務(wù)將構(gòu)建ETL流程的過程封裝為服務(wù),用戶通過參數(shù)配置的形式,完成ETL流程的構(gòu)建.
定義1.時間戳(TS).時間戳是ETL過程中進行增量數(shù)據(jù)抽取的依據(jù),分為兩種類型,一類是創(chuàng)建時間(newTS),另一類是更新時間(updateTS),時間戳可以表示為一個可變集合{…TS},當只包含其中一類時間戳時,TS={newTS}或TS={updateTS},當包含兩類時間戳時,TS={newTS,updateTS},此時以這兩者中較大值作為增量數(shù)據(jù)抽取的時間戳標記.
定義2.數(shù)據(jù)源集合(DSC).數(shù)據(jù)源集合包含ETL過程所需的所有數(shù)據(jù)源以及多源數(shù)據(jù)的關(guān)聯(lián)操作,由用戶自定義設(shè)置,當數(shù)據(jù)源只有一個時,DSC的表示形態(tài)在下面的內(nèi)容中進行說明,多個數(shù)據(jù)源時將其表示為DSC={DSi|i=1,…,n}∪{DSLj|j=1,…,n-1},其中:
DS是數(shù)據(jù)源,由于用戶需求的不確定性和隨時調(diào)整的特性,它可表示為一個不定元組DS=
TN是指定的數(shù)據(jù)源表名;
KF是關(guān)鍵字段,用于數(shù)據(jù)抽取的排序字段,也用于多源數(shù)據(jù)的關(guān)聯(lián)字段,不需要顯式定義,通過以下介紹的DSL設(shè)置關(guān)聯(lián);
TS是時間戳,在此為可選元素,若要采用時間戳增量比對的數(shù)據(jù)抽取方式,則DS=
Q是數(shù)據(jù)查詢,它是一個SELECT查詢語句,用來獲取符合用戶要求的所有數(shù)據(jù),不需要顯式定義,通過界面選擇數(shù)據(jù)源及過濾數(shù)據(jù)操作得到;
DSL是數(shù)據(jù)源可視化鏈接,通過界面可視化連線操作的方式將各個數(shù)據(jù)源關(guān)聯(lián)起來.
以card(DS)表示DS集合的元素個數(shù),當數(shù)據(jù)源只有一個時,即card(DS)=1時,不需要數(shù)據(jù)關(guān)聯(lián)操作,此時數(shù)據(jù)源集合可表示為DSC={DSi|i=1,…,n}.
定義3.ETL流程服務(wù).ETL流程服務(wù)是實現(xiàn)快速構(gòu)建ETL流程的軟件服務(wù),從構(gòu)成角度來看,可以將其表示成一個四元組
URI是ETL服務(wù)的唯一標識;
DSC是數(shù)據(jù)源集合;
TI是服務(wù)調(diào)用時間間隔,用以指定調(diào)度器進行任務(wù)調(diào)度的時間間隔,進行定時抽取數(shù)據(jù),加載至目標庫;
DEST是目標表名;
TYP是ETL服務(wù)類型,不需要顯式定義,由TI的值與DS的表現(xiàn)形式?jīng)Q定,若TI=0,則TYP是手工觸發(fā)ETL服務(wù),若TI≠0∧DS= KF,Q>,則TYP是全量比對定時ETL服務(wù). Kettle是目前較為主流的一款開源ETL工具,數(shù)據(jù)抽取高效穩(wěn)定,本文提出的動態(tài)ETL流程服務(wù)是基于Kettle實現(xiàn)的,將利用工具構(gòu)建ETL流程的過程封裝為服務(wù),轉(zhuǎn)化為用戶易于掌握的方式將數(shù)據(jù)聯(lián)系起來,為研判分析提供決策支持. 圖2 動態(tài)ETL流程服務(wù)實現(xiàn)流程Fig.2 Dynamic ETL process service processing flow chart 用戶通過界面配置數(shù)據(jù)源及其關(guān)聯(lián)關(guān)系、時間戳字段和調(diào)用時間間隔注冊動態(tài)ETL服務(wù),服務(wù)器端解析服務(wù)請求信息,獲取JSON數(shù)據(jù)并驗證JSON數(shù)據(jù)的正確性,若JSON信息有誤,則直接返回JSON有誤的錯誤信息.若正確,則根據(jù)JSON獲取創(chuàng)建ETL流程的參數(shù),傳給動態(tài)ETL流程服務(wù)接口,首先創(chuàng)建目標表,若創(chuàng)建失敗則直接返回目標表創(chuàng)建失敗的錯誤信息,否則繼續(xù)判斷是否建立時間戳任務(wù),若為非時間戳任務(wù)則根據(jù)任務(wù)類型建立全量比對數(shù)據(jù)抽取轉(zhuǎn)換,否則再根據(jù)任務(wù)類型建立時間戳作業(yè)和相關(guān)轉(zhuǎn)換,若任務(wù)建立失敗則直接返回轉(zhuǎn)換或作業(yè)建立失敗的錯誤信息,否則將任務(wù)保存到資源庫中,并提交給調(diào)度器,若保存失敗則直接返回保存失敗的錯誤信息,否則返回建立成功的響應(yīng)信息,完成ETL流程構(gòu)建.具體實現(xiàn)流程如圖2所示. 實現(xiàn)流程的偽代碼如表1所示. 動態(tài)ETL流程服務(wù)可以支持多用戶并發(fā)請求,如何提升并發(fā)性能,支持更多用戶請求,更快速地給用戶響應(yīng)是當前需要考慮的問題.由于該服務(wù)中最耗時的部分是排隊將成功創(chuàng)建的ETL流程保存到資源庫的過程,若要提高并發(fā)性能,可行的方案就是將創(chuàng)建完成的ETL流程保存到資源庫的過程剝離出來,將一個完整的ETL流程構(gòu)造過程分為ETL流程的創(chuàng)建和ETL流程的保存兩個部分,使用戶無需等待ETL流程成功保存到資源庫,當ETL流程創(chuàng)建成功后即通知用戶,此時服務(wù)可以繼續(xù)接受請求,即采用異步的方式實現(xiàn)動態(tài)ETL流程服務(wù).目前主要的實現(xiàn)異步機制的方案是消息中間件[15],消息中間件提供了異步通信的方式,同時還具有并發(fā)機制的特性,具備處理多線程的能力,它將耗時比較長或者消耗資源的請求排隊進行異步處理,減輕服務(wù)器壓力并增加系統(tǒng)的穩(wěn)定性. 表1 動態(tài)ETL流程服務(wù)實現(xiàn) 1. IF checkJson(JSON)2. IF createTargetTable(DEST)3. IF isTimeStamp(DS)4. startTimeTrans←genBeginTimeTrans(TS,DSC,DEST)5. dataSychTrans←genTimeStampTrans(TS,DSC,DEST)6. endTimeTrans←genEndTimeTrans(TS,DSC,DEST)7. job←genTimeStampJob(startTimeTrans,dataSychTrans,endTimeTrans)8. saveTransToRepo(startTimeTrans)9. saveTransToRepo(dataSychTrans)10. saveTransToRepo(endTimeTrans)11. saveJobTorepo(job)12. END IF13. ELSE 14. trans←genTrans(DSC,DEST)15. saveTransToRepo(transMeta)16. END ELSE17. END IF18.END IF 利用消息中間件的異步通信機制將動態(tài)ETL流程服務(wù)分成接收服務(wù)請求和處理服務(wù)請求兩個部分,以處理更多的服務(wù)請求,在本文中選用RabbitMQ[16,17]實現(xiàn),如圖3所示,接收服務(wù)請求部分接收到用戶請求后創(chuàng)建ETL流程并將創(chuàng)建好的流程發(fā)送到RabbitMQ,處理服務(wù)請求部分監(jiān)聽RabbitMQ隊列并將ETL流程對象存儲到持久化隊列中,然后通知消費者將ETL流程對象保存到資源庫中,之后將成功創(chuàng)建ETL流程的消息發(fā)送給RabbitMQ,RabbitMQ將消息返回給用戶,通知用戶成功創(chuàng)建ETL流程. 圖3 基于消息中間件的并發(fā)性能優(yōu)化Fig.3 Concurrent performance optimization based on message oriented middleware 使用Web Service 性能測試軟件JMeter對優(yōu)化前后的動態(tài)ETL流程服務(wù)進行并發(fā)測試,分別對300和600的并發(fā)量各進行10次測試,發(fā)現(xiàn)并發(fā)量為300時,優(yōu)化前后的服務(wù)都能良好的支持,沒有出錯信息,并發(fā)量為600時,優(yōu)化前的服務(wù)出現(xiàn)了5個連接超時的異常,而優(yōu)化后的服務(wù)沒有出現(xiàn)異常,運行穩(wěn)定. 本部分結(jié)合實際應(yīng)用對動態(tài)ETL流程服務(wù)進行驗證,重點以一個抓捕盜竊案犯罪團伙的案例來說明動態(tài)ETL流程服務(wù)可以實現(xiàn)無法預(yù)先定義數(shù)據(jù)集成方案時的ETL流程的快速構(gòu)建,即時進行數(shù)據(jù)集成,能有效支持探索式的研判分析,幫助公安人員進行案件偵破工作.這起案件發(fā)生在B市,公安人員經(jīng)過初步偵察和線索推斷,此次案件嫌疑人來自C市身份證以“511721”開頭的可能性最大,并且這些嫌疑人很可能在B市有過旅店登記住宿.通過以上線索,公安干警小李獲取案發(fā)前后2天內(nèi)以“511721”開頭的身份證號. 人員的住宿登記信息,需要的數(shù)據(jù)只涉及到住宿信息(ZSXX)表,具體獲取信息如下:姓名(NAME)、身份證號(ID_NUMBER)、旅店名稱(HOTEL_NAME)、入住時間(CHECKIN_DATE)和退房時間(CHECKOUT_DATE).這些要提取的數(shù)據(jù)不需要增量抽取和定時加載,故無需設(shè)置時間戳信息,建立單表非時間戳任務(wù),只需要調(diào)度一次即可,通過可視化界面配置訪問動態(tài)ETL流程服務(wù)的參數(shù)信息,請求訪問動態(tài)ETL流程服務(wù). 圖4 服務(wù)請求參數(shù)設(shè)置Fig.4 Service request parameter settings 根據(jù)結(jié)果發(fā)現(xiàn)在此時間范圍內(nèi)共有100人進行住宿登記,涉及到六家旅店,將本次的目標表作為源數(shù)據(jù),按照旅店名稱劃分數(shù)據(jù),并按照入住時間進行排序,重新設(shè)置請求參數(shù),經(jīng)過六次請求訪問動態(tài)ETL流程服務(wù)對數(shù)據(jù)進行劃分,分別查看結(jié)果發(fā)現(xiàn)在案發(fā)當天X旅店有8人辦理入住,其中有6人入住時間相差小于1小時,這6人中有5人退房時間相差小于半小時,將此次X旅店住宿信息表作為源表,設(shè)置請求參數(shù),將這5人信息單獨存放到嫌疑人員(XYRY)表中,之后將該表與重點人員信息(ZDRYXX)表關(guān)聯(lián),重點人員信息表獲取如下信息:姓名(NAME)、性別(SEX)、年齡(AGE)、身份證號(ID_NUMBER)和案件類型(CASE_TYPE).設(shè)置請求參數(shù),訪問服務(wù),具體設(shè)置如圖4所示,查看結(jié)果發(fā)現(xiàn)其中有3人具有盜竊犯罪前科,之后小李分別調(diào)取這3人在案發(fā)前后兩天的通話記錄信息,發(fā)現(xiàn)他們在此期間有電話往來,由此確定他們是嫌疑人,經(jīng)過最后調(diào)查取證這3人是作案人員. 在實際應(yīng)用中重點人員監(jiān)控也是公安部門較為常見的業(yè)務(wù)需求,公安干警小李想要對吸毒人員進行重點監(jiān)控,他需要獲取重點人員信息和網(wǎng)吧上網(wǎng)記錄信息,涉及到重點人員信息(ZDRYXX)表和(WBSWXX)表,此時小李可以通過界面配置參數(shù),選擇需要獲取的字段信息,并利用可視化數(shù)據(jù)源連線操作進行多表關(guān)聯(lián),配置完成后訪問動態(tài)ETL流程服務(wù)獲取所需信息,根據(jù)當前結(jié)果調(diào)整參數(shù)配置信息再次訪問服務(wù)獲取信息,當發(fā)現(xiàn)吸毒人員聚眾上網(wǎng)時,則需要做好預(yù)警防范工作,以防違法犯罪案件的發(fā)生. 在上述案例中,用戶是根據(jù)上一次的服務(wù)返回結(jié)果進行研判分析來確定當前的需求,無法預(yù)先定義ETL流程,只能摸索著、探索著進行研判分析,不斷調(diào)整需求,傳統(tǒng)的解決方案是根據(jù)需求利用ETL工具不斷地構(gòu)建ETL流程,這是一項非常耗費人力和時間的工作,而且ETL很復(fù)雜,需要專業(yè)人員操作.而動態(tài)ETL流程服務(wù)采用REST架構(gòu)風格將ETL流程封裝為服務(wù),使用戶無需通過ETL工具建立流程,也無需知道具體的ETL構(gòu)建流程,只需要通過界面進行簡單的配置就能完成ETL流程的構(gòu)建工作,通過數(shù)據(jù)源連線操作屏蔽數(shù)據(jù)關(guān)聯(lián)的復(fù)雜性,易于用戶理解和操作,用戶只需要經(jīng)過多次服務(wù)訪問操作,即可將數(shù)據(jù)轉(zhuǎn)化為信息,得出最終結(jié)果.本文提出的動態(tài)ETL流程服務(wù)能更加快速地支撐需求的動態(tài)演化,支持探索式研判分析,屏蔽計算機專業(yè)相關(guān)的復(fù)雜性和技術(shù)性,使非IT人員實現(xiàn)快速構(gòu)建ETL流程,拓寬了用戶群體. 在如今的信息化時代,信息系統(tǒng)層出不窮,如何有效解決將分散的數(shù)據(jù)轉(zhuǎn)化為有效信息的問題是當前的重要課題,而利用數(shù)據(jù)進行研判分析的需求往往是動態(tài)變化的,無法預(yù)先定義的,采用現(xiàn)有的ETL工具逐步根據(jù)需求進行研判分析活動工作量較大,難度較高.采用REST架構(gòu)風格將ETL構(gòu)建過程封裝為服務(wù),能有效支持需求的動態(tài)演化,支持探索式研判分析,邊探索邊改進,得出最終滿意的結(jié)果.此外,還利用RabbitMQ進行了并發(fā)性能優(yōu)化,支持更多的用戶請求.結(jié)合案例對動態(tài)ETL流程服務(wù)進行了驗證分析,結(jié)果表明該服務(wù)能夠有效地進行探索式研判分析,展示數(shù)據(jù)的潛在關(guān)系,幫助用戶進行關(guān)鍵信息的提取,有很強的易用性,使非計算機專業(yè)人員也能快速構(gòu)建ETL流程,拓寬了用戶群體,具有良好的應(yīng)用價值.5 動態(tài)ETL流程服務(wù)實現(xiàn)及其并發(fā)性能優(yōu)化
5.1 動態(tài)ETL流程服務(wù)實現(xiàn)
5.2 并發(fā)性能優(yōu)化
Table 1 Processing of dynamic ETL process service6 案例與評價
7 結(jié)束語