周潔
摘 要:隨著商業(yè)智能的發(fā)展,現(xiàn)代化石油鉆井企業(yè)開始越來越重視數(shù)據(jù)的作用,如何將企業(yè)多年信息化建設(shè)的成果更有效地利用起來成為當(dāng)前企業(yè)信息化建設(shè)的一個(gè)重要內(nèi)容。數(shù)據(jù)倉庫建設(shè)的過程中最重要的過程就是ETL過程。ETL過程經(jīng)常需要耗費(fèi)大量的人力、物力、財(cái)力。但是效率依然十分低下,為了解決這個(gè)問題,本文提出采用網(wǎng)絡(luò)眾包的方法將傳統(tǒng)數(shù)據(jù)倉庫ETL過程與眾包的方式結(jié)合,構(gòu)建基于眾包的鉆井物料數(shù)據(jù)倉庫ETL系統(tǒng),有效提高石油企業(yè)數(shù)據(jù)倉庫建設(shè)的效率。
關(guān)鍵詞:眾包; ETL; 數(shù)據(jù)倉庫
Abstract: With the development of business intelligence, modern oil drilling companies have begun to pay more and more attention to the role of data. How to make effective use of the results of many years of enterprise information construction has become an important part of current enterprise information construction. More and more data warehouses have been established. The most important design in the data warehouse construction is the ETL process. The ETL process often requires a lot of manpower, material and financial resources. However, the efficiency is still very low. In order to solve this problem, this paper proposes a method of using network crowdsourcing, which is combined with the traditional data warehouse ETL process, and builds a crowdsourced drilling material data warehouse ETL system to effectively improve the data warehouse of oil companies.
Key words: crowdsourcing; ETL; data warehouse
引言
在當(dāng)今信息化建設(shè)高速發(fā)展的影響下,現(xiàn)代化石油企業(yè)大多已建立起一定規(guī)模的、成熟的數(shù)據(jù)庫系統(tǒng),并且積累了大量的歷史數(shù)據(jù)。數(shù)據(jù)庫作為數(shù)據(jù)資源用于管理業(yè)務(wù)中的事務(wù)處理,已成為成熟的信息基礎(chǔ)設(shè)施?,F(xiàn)在,伴隨著石油企業(yè)對(duì)有效信息的依賴性越來越強(qiáng),越來越多的石油企業(yè)開始建立數(shù)據(jù)倉庫。但數(shù)據(jù)倉庫的建設(shè)是一項(xiàng)需要耗費(fèi)大量時(shí)間、人力、財(cái)力的過程。其中的ETL(Extract,Transformation,Loading)過程,是建設(shè)數(shù)據(jù)倉庫最重要的部分,是數(shù)據(jù)倉庫系統(tǒng)的核心技術(shù)之一。在企業(yè)數(shù)據(jù)倉庫建設(shè)的過程中,有60%以上的精力花費(fèi)在ETL的設(shè)計(jì)和實(shí)施上。傳統(tǒng)ETL過程需要花費(fèi)很大的代價(jià),但是靈活性和可擴(kuò)展性較差。本文采用網(wǎng)絡(luò)眾包的理論和方法,將傳統(tǒng)數(shù)據(jù)倉庫ETL過程與眾包方式相結(jié)合,提出一種基于眾包的鉆井物料數(shù)據(jù)倉庫ETL設(shè)計(jì)方法,設(shè)計(jì)構(gòu)建系統(tǒng)的總體結(jié)構(gòu)和眾包模式,以有效提高傳統(tǒng)數(shù)據(jù)倉庫ETL過程的效率。
ETL(Extract,Transformation,Loading)是數(shù)據(jù)抽取、轉(zhuǎn)換和裝載的英文簡稱。ETL過程是數(shù)據(jù)倉庫數(shù)據(jù)的入口,完成數(shù)據(jù)從數(shù)據(jù)源到數(shù)據(jù)倉庫的轉(zhuǎn)化過程,其重要性不言而喻。當(dāng)前能提供ETL功能的商業(yè)化工具很多,主流分為兩類:一是ETL廠商提供的工具,一般具有較完整的體系結(jié)構(gòu)和功能,如Informatica,Datastage;另一類是數(shù)據(jù)庫廠商提供的整體數(shù)據(jù)倉庫解決方案和產(chǎn)品,如ODI。雖然這些ETL工具相對(duì)比較成熟,但是對(duì)于具有不同特性的目標(biāo)數(shù)據(jù)倉庫系統(tǒng),不同的ETL工具效果差異明顯。ETL工具的選擇及編寫特定SQL腳本都直接影響到ETL的效率。另外,ETL 3個(gè)階段的規(guī)則設(shè)計(jì)也是最難和工作量最大的部分。因數(shù)據(jù)倉庫應(yīng)用系統(tǒng)每天都會(huì)進(jìn)行的工作就是ETL過程。所以,ETL設(shè)計(jì)的效率高低關(guān)系到數(shù)據(jù)倉庫的建設(shè)成效。
在商業(yè)環(huán)境競爭力和活力日益增加的情景下,單一企業(yè)所具有的實(shí)力再雄厚,也無法獨(dú)自具備充足的技術(shù)和資源來滿足可持續(xù)創(chuàng)新的需求。因此,在進(jìn)行ETL設(shè)計(jì)時(shí),要引入更廣泛的人力資源,出于成本和質(zhì)量的考慮,將數(shù)據(jù)倉庫的ETL過程眾包是一個(gè)具有可操作性而且效率很高的過程。
眾包是Howe于2006年首次正式提出的,是指一個(gè)公司或機(jī)構(gòu)把過去由員工或者承包商執(zhí)行的工作任務(wù),以自由自愿的形式,外包給非特定的大眾網(wǎng)絡(luò)或者虛擬社區(qū)的做法,是一種在線分布式的問題解決模式[1]。
基于眾包的鉆井物料數(shù)據(jù)倉庫ETL系統(tǒng)DMETLC(Drilling Materials Dataware ETL Based on Crowdsourcing),在傳統(tǒng)ETL過程中引入了更為廣泛的人力資源。系統(tǒng)采用眾包模式,將相關(guān)事務(wù)通過眾包平臺(tái)發(fā)布,向更廣泛的大眾群體獲取解決方案。設(shè)計(jì)基于眾包的鉆井物料數(shù)據(jù)倉庫ETL系統(tǒng)流程如圖1所示。
系統(tǒng)通過眾包平臺(tái)將ETL過程的3個(gè)步驟依次眾包。數(shù)據(jù)源主要包括各個(gè)不同的業(yè)務(wù)數(shù)據(jù)庫以及可能的Excel、XML、TXT等。數(shù)據(jù)倉庫的主題由石油企業(yè)根據(jù)企業(yè)自身實(shí)際需求由主要業(yè)務(wù)部門負(fù)責(zé)人經(jīng)多次商定決定的,由專業(yè)人士對(duì)其技術(shù)可行性做出評(píng)價(jià)后發(fā)布在眾包平臺(tái)上。
數(shù)據(jù)抽取過程(Extract)要緊密聯(lián)系目標(biāo)企業(yè)數(shù)據(jù)倉庫的主題,根據(jù)主題的需要對(duì)系統(tǒng)的功能性需求進(jìn)一步的細(xì)化,進(jìn)行恰當(dāng)?shù)木S度設(shè)計(jì)、權(quán)限設(shè)置、以及粒度層次設(shè)計(jì)、事實(shí)及度量設(shè)計(jì),將事實(shí)與維度關(guān)聯(lián)起來,形成圍繞某一主題的多維數(shù)據(jù)模型,進(jìn)而確定所要抽取的數(shù)據(jù)。由于數(shù)據(jù)抽取過程的數(shù)據(jù)源可能來源于多個(gè)源系統(tǒng),而每個(gè)源系統(tǒng)有不同的業(yè)務(wù)處理周期和方法,選擇采取存量抽取的方式還是增量抽取的方式,周期如何設(shè)置,是采用人工編寫SQL的方式還是直接選取某ETL工具,都是需要考慮的關(guān)鍵問題。同時(shí)要對(duì)數(shù)據(jù)采集接口進(jìn)行合理的設(shè)計(jì),以保證進(jìn)入數(shù)據(jù)庫的數(shù)據(jù)完整性。
數(shù)據(jù)轉(zhuǎn)換過程(Transfer)是ETL過程的核心,主要包括數(shù)據(jù)整理、數(shù)據(jù)提出、數(shù)據(jù)合并、數(shù)據(jù)清理以及數(shù)據(jù)驗(yàn)證等過程。數(shù)據(jù)格式與名稱的統(tǒng)一、定義空字段的處理、數(shù)據(jù)質(zhì)量問題的控制等都是這一階段重點(diǎn)解決的問題。
數(shù)據(jù)裝載過程(Loading)是將數(shù)據(jù)轉(zhuǎn)換的結(jié)果加載到數(shù)據(jù)倉庫中并形成相應(yīng)的數(shù)據(jù)加載報(bào)告。在將數(shù)據(jù)加載到數(shù)據(jù)倉庫之前,需要考慮是否還有需要做特殊處理的屬性。選擇最終加載的數(shù)據(jù)倉庫類型和加載到數(shù)據(jù)倉庫的方式,存量加載和增量加載的實(shí)現(xiàn)方式是重點(diǎn)設(shè)計(jì)的問題。
眾包工作者在完成了一個(gè)階段的設(shè)計(jì)工作后,需在實(shí)踐后將結(jié)果提交至眾包平臺(tái)中的眾包質(zhì)量專家評(píng)審組,待評(píng)審組判定其是否合格,合格則繼續(xù)進(jìn)行下一步眾包,否則,進(jìn)行該階段的二次眾包。直至最終達(dá)到評(píng)審組的要求為止。
2 眾包管理平臺(tái)總體結(jié)構(gòu)
DMETLC系統(tǒng)中的眾包管理平臺(tái)是支撐基于眾包的數(shù)據(jù)倉庫ETL系統(tǒng)的關(guān)鍵。在該平臺(tái)中,為改變以往人員參與和數(shù)據(jù)使用被動(dòng)的情況,擬采用多Agent技術(shù),將平臺(tái)中的各個(gè)模塊構(gòu)造成Agent,以多Agent協(xié)作組織和工作方式實(shí)現(xiàn)數(shù)據(jù)倉庫ETL過程的眾包[2]。所謂智能體(Agent)是駐留于環(huán)境中的實(shí)體,處于一個(gè)環(huán)境中并作為這個(gè)環(huán)境的一部分。該眾包管理平臺(tái)包括ETL任務(wù)管理器、網(wǎng)絡(luò)眾包引擎、ETL任務(wù)執(zhí)行器3部分。平臺(tái)體系結(jié)構(gòu)如圖2所示。
ETL任務(wù)管理器支持構(gòu)建數(shù)據(jù)倉庫企業(yè)(發(fā)包方)對(duì)ETL不同階段發(fā)布任務(wù)要求,描述任務(wù)關(guān)鍵事項(xiàng),選擇接包方,對(duì)接包方提交結(jié)果進(jìn)行質(zhì)量檢查和結(jié)論評(píng)價(jià)。通過發(fā)包方任務(wù)描述Agent對(duì)眾包的ETL任務(wù)的實(shí)際商業(yè)需求進(jìn)行形式化的描述,并可以添加例證。通過任務(wù)發(fā)布Agent將當(dāng)前眾包的ETL任務(wù)發(fā)布到眾包引擎的黑板系統(tǒng)中。接包方管理Agent,主要對(duì)有接包意向的接包方進(jìn)行相關(guān)知識(shí)及經(jīng)驗(yàn)考查,根據(jù)實(shí)際情況對(duì)接包方群體進(jìn)行管理。質(zhì)量控制Agent是專家系統(tǒng)根據(jù)擬定指標(biāo)對(duì)眾包工作者完成的工作進(jìn)行質(zhì)量評(píng)估與審核。結(jié)論評(píng)價(jià)Agent是根據(jù)質(zhì)量控制Agent的結(jié)果做出評(píng)價(jià),確定是否采納。
網(wǎng)絡(luò)眾包引擎是DMETLC系統(tǒng)眾包管理平臺(tái)的核心。通過Agent黑板系統(tǒng)獲取發(fā)包方對(duì)ETL任務(wù)、質(zhì)量參數(shù)、時(shí)間限定與獎(jiǎng)勵(lì)等的形式化描述。由任務(wù)分解Agent將ETL的任務(wù)進(jìn)行階段性劃分,由資源訪問Agent實(shí)現(xiàn)眾包工作者對(duì)發(fā)包方提供的數(shù)據(jù)源進(jìn)行訪問權(quán)限控制,接包方選擇Agent支持多接包方對(duì)同一任務(wù)的共同參與,成果共享的方式主動(dòng)參與眾包任務(wù)。方案接收Agent負(fù)責(zé)對(duì)眾包工作者的工作結(jié)果進(jìn)行接收,方案綜合Agent實(shí)現(xiàn)基于網(wǎng)絡(luò)眾包的工作者的工作方案進(jìn)行綜合集成并將結(jié)果通過黑板系統(tǒng)反饋給發(fā)包方。
ETL任務(wù)執(zhí)行器用于支持眾包工作者自主參與到企業(yè)數(shù)據(jù)倉庫ETL網(wǎng)絡(luò)眾包過程中,通過用戶接口Agent獲取完成ETL工作任務(wù)的相關(guān)數(shù)據(jù)資源。接包方通過任務(wù)感知Agent發(fā)現(xiàn)適合自己的工作任務(wù),由任務(wù)投標(biāo)Agent將其相應(yīng)知識(shí)能力、經(jīng)驗(yàn)提交到黑板系統(tǒng)中并反饋給發(fā)包方。在整個(gè)接包方的任務(wù)執(zhí)行過程中,眾包用戶是通過圖形化界面與系統(tǒng)進(jìn)行人機(jī)對(duì)話。
文中采用了基于眾包的鉆井物料數(shù)據(jù)倉庫ETL系統(tǒng)進(jìn)行數(shù)據(jù)倉庫建設(shè)?,F(xiàn)以一實(shí)際眾包結(jié)果對(duì)該系統(tǒng)的合理性與高效性進(jìn)行說明。
石油鉆井企業(yè)要求的2個(gè)基本主題是鉆井公司和鉆具,現(xiàn)以鉆具為例進(jìn)行說明。
3.1 數(shù)據(jù)抽取階段
3.1.1 數(shù)據(jù)抽取范圍
根據(jù)石油企業(yè)提供的需求分析報(bào)告,以鉆具物料清單為例設(shè)計(jì)出其物料需求的星型模型,如圖3所示,并根據(jù)模型進(jìn)行抽取。
3.1.2 數(shù)據(jù)抽取方法。
由業(yè)務(wù)系統(tǒng)的資源數(shù)據(jù)庫到數(shù)據(jù)準(zhǔn)備區(qū),主要考慮因素是盡可能減少對(duì)資源庫性能的影響。石油鉆井公司提供的數(shù)據(jù)源主要是數(shù)據(jù)庫文件,存放在Informix數(shù)據(jù)庫中,還含有部分Excel表格。在將業(yè)務(wù)數(shù)據(jù)庫抽取到數(shù)據(jù)準(zhǔn)備區(qū)時(shí),眾包結(jié)果是以開發(fā)人員手工編碼的方式,通過執(zhí)行SQL語句來實(shí)現(xiàn)ETL。相比于ETL工具,手工編碼方式的SQL執(zhí)行效率較高,能夠最大限度地降低ETL對(duì)業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫的影響。實(shí)際操作時(shí),眾包提供的結(jié)果是本部分的數(shù)據(jù)采集接口,使用oracle高級(jí)復(fù)制技術(shù)完成。根據(jù)業(yè)務(wù)系統(tǒng)中的數(shù)據(jù)格式,生成鏡像庫。業(yè)務(wù)系統(tǒng)與鏡像庫之間通過oracle的存儲(chǔ)過程來完成。每次抽取時(shí)都要記錄抽取數(shù)據(jù)的時(shí)間,用以標(biāo)記是那個(gè)批次的數(shù)據(jù)。眾包工作者提供了手工編碼,結(jié)果驗(yàn)證順利執(zhí)行,且與其它ETL工具抽取相比抽取速度較快,對(duì)原業(yè)務(wù)系統(tǒng)影響較小。故DMETLC系統(tǒng)最終采納了此種數(shù)據(jù)抽取方式。
3.1.3 數(shù)據(jù)抽取設(shè)計(jì)方式
由于存量抽取數(shù)據(jù)量很大,抽取轉(zhuǎn)換時(shí)不能隨[CM(22]意刪除和更改數(shù)據(jù),有可能存在很多非標(biāo)準(zhǔn)化的數(shù)據(jù)。因此,為了加快處理速度,可采用非依賴數(shù)據(jù)并行處理方法進(jìn)行存量抽取。數(shù)據(jù)倉庫系統(tǒng)運(yùn)行后,只將業(yè)務(wù)系統(tǒng)的增量數(shù)據(jù)抽取到數(shù)據(jù)倉庫,包含業(yè)務(wù)系統(tǒng)的新數(shù)據(jù)和更新數(shù)據(jù)。
3.2 數(shù)據(jù)轉(zhuǎn)換階段
數(shù)據(jù)轉(zhuǎn)換階段編寫的轉(zhuǎn)換程序,采用模塊化設(shè)計(jì)方法,相應(yīng)減少了編程工作量,僅需要配置參數(shù)表就可以實(shí)現(xiàn)。當(dāng)轉(zhuǎn)換數(shù)據(jù)時(shí),保證滿足數(shù)據(jù)倉庫數(shù)據(jù)的一致性和完整性。數(shù)據(jù)轉(zhuǎn)換過程是按照數(shù)據(jù)倉庫所需要的數(shù)據(jù)源格式,在分段區(qū)域中執(zhí)行并行轉(zhuǎn)換處理,把轉(zhuǎn)換的結(jié)果數(shù)據(jù)存儲(chǔ)在需加載的數(shù)據(jù)存儲(chǔ)區(qū)域中。同時(shí)會(huì)生成數(shù)據(jù)轉(zhuǎn)換報(bào)告,待系統(tǒng)轉(zhuǎn)換報(bào)告生成完畢后,系統(tǒng)狀態(tài)改為完成數(shù)據(jù)轉(zhuǎn)換工作。
3.3 數(shù)據(jù)加載階段
在設(shè)計(jì)數(shù)據(jù)以加載數(shù)據(jù)倉庫時(shí),本項(xiàng)目最終選擇的方案是采用oracle的存儲(chǔ)過程實(shí)現(xiàn)從中間數(shù)據(jù)庫(經(jīng)過轉(zhuǎn)換后的ODS層)到數(shù)據(jù)倉庫的數(shù)據(jù)裝載。具體原則是根據(jù)ODS數(shù)據(jù)表中的裝載日期和增量標(biāo)識(shí)DML_TYPE來處理增量問題,加載數(shù)據(jù)在數(shù)據(jù)倉庫離線時(shí),使用非依賴數(shù)據(jù)并行加載策略,把待裝載數(shù)據(jù)區(qū)數(shù)據(jù)裝入數(shù)據(jù)倉庫,若標(biāo)準(zhǔn)代碼表改變,則將標(biāo)準(zhǔn)代碼的變化采用增量方式加載到數(shù)據(jù)倉庫代碼表中。將數(shù)據(jù)加載情況記錄來并將其寫入數(shù)據(jù)倉庫數(shù)據(jù)庫參數(shù)表。
4 結(jié)束語
基于眾包的鉆井物料數(shù)據(jù)倉庫ETL系統(tǒng)采用了眾包的方式,充分利用了人力資源和智慧,實(shí)現(xiàn)了數(shù)據(jù)倉庫建設(shè)過程中對(duì)ETL過程的處理,解決了由于不同ETL工具對(duì)不同系統(tǒng)支持程度不一而引起的ETL過程效率不穩(wěn)定的問題,使傳統(tǒng)ETL過程從封閉,低效到更多元、更開放、更高效、進(jìn)一步擴(kuò)展了以往ETL方法的數(shù)據(jù)處理能力,為建立更高效的數(shù)據(jù)倉庫系統(tǒng)提供了有力的支持。
參考文獻(xiàn)
[1] 馮劍紅, 李國良, 馮建華. 眾包技術(shù)研究綜述[J]. 計(jì)算機(jī)學(xué)報(bào), 2015,38(9):1713-1726.
[2] 王凡, 方明. 基于眾包的鉆井不確定數(shù)據(jù)信息管理系統(tǒng)的研究[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2017, 34(8):54-57.