欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種糾錯重啟以及自動判斷啟動的etl調(diào)度系統(tǒng)及方法

文檔序號:6385915閱讀:290來源:國知局
專利名稱:一種糾錯重啟以及自動判斷啟動的etl調(diào)度系統(tǒng)及方法
—種糾錯重啟以及自動判斷啟動的ETL調(diào)度系統(tǒng)及方法技術(shù)領(lǐng)域
本發(fā)明屬于數(shù)據(jù)倉庫技術(shù)領(lǐng)域,特別是一種糾錯重啟以及自動判斷啟動的ETL調(diào) 度系統(tǒng)及方法。
背景技術(shù)
隨著數(shù)據(jù)倉庫技術(shù)的普及和深化,構(gòu)建數(shù)據(jù)倉庫的核心技術(shù)ETL工具也逐步地完 善且多樣化,ETL在數(shù)據(jù)倉庫構(gòu)建中主要承擔(dān)著數(shù)據(jù)抽取、加載、轉(zhuǎn)換的角色,并負(fù)責(zé)系統(tǒng)程 序調(diào)度控制和資源分配,直接關(guān)系著數(shù)據(jù)倉庫構(gòu)建實(shí)施的成敗。
目前信息價值日益體現(xiàn),尤其是具有大量數(shù)據(jù)記錄的行業(yè)。成功的數(shù)據(jù)倉庫對企 業(yè)的發(fā)展十分重要,銀行、移動電信、保險(xiǎn)、電子商務(wù)運(yùn)營商的大數(shù)據(jù)特性決定了這些行業(yè) 極為注重?cái)?shù)據(jù)倉庫的構(gòu)建及技術(shù)實(shí)施策略。目前的實(shí)施策略大體可以概括如下1、根據(jù)任務(wù)依賴關(guān)系設(shè)定調(diào)度順序,依次完成系統(tǒng)調(diào)度任務(wù);在調(diào)度過程中有管理人 員人工監(jiān)控,出現(xiàn)異常進(jìn)行人工操作重啟任務(wù)。
2、在依賴關(guān)系設(shè)定調(diào)度順序的基礎(chǔ)上,根據(jù)各獨(dú)立任務(wù)的關(guān)系設(shè)定獨(dú)立線程定時 定點(diǎn)調(diào)度,并進(jìn)行任務(wù)監(jiān)控、人工排錯及重啟調(diào)度。
以上情況,都存在完全依賴人工處理的問題,而且還存在由于異常發(fā)生不能被及 時處理而使系統(tǒng)繼續(xù)運(yùn)行產(chǎn)生錯誤結(jié)果的情況,并導(dǎo)致系統(tǒng)資源的浪費(fèi)。
專利“一種ETL調(diào)度的實(shí)現(xiàn)方法及裝置”(專利申請?zhí)?00910203276. 9),在執(zhí)行 ETL調(diào)度包含的若干任務(wù)流程時,針對任意一個任務(wù)流程,根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流 程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系,按照設(shè)定的觸發(fā) 方式觸發(fā)子任務(wù)流程,并按設(shè)定的順序執(zhí)行已觸發(fā)的子任務(wù)流程,并根據(jù)子任務(wù)流程之間 的依賴關(guān)系,執(zhí)行依賴已完成子任務(wù)并已觸發(fā)的后續(xù)子任務(wù)流程。專利“一種實(shí)現(xiàn)ETL調(diào)度 的方法及系統(tǒng)”(專利申請?zhí)?00910137527. 8),根據(jù)預(yù)設(shè)的任務(wù)配置文件確定當(dāng)前需要執(zhí) 行的任務(wù),所述任務(wù)配置文件包括需要執(zhí)行的任務(wù)及各任務(wù)之間的依賴關(guān)系,并通過獲取 應(yīng)用服務(wù)器的資源信息,選定合適的應(yīng)用服務(wù)器來執(zhí)行任務(wù)。
這2種專利所提供的方法都使各任務(wù)之間的業(yè)務(wù)邏輯清晰、業(yè)務(wù)功能明確,但對 于任務(wù)或子任務(wù)在執(zhí)行過程中異常終止后如何處理,仍是采用常用的人工重新啟動的方 法,這沒有良好的解決ETL的運(yùn)行效率和運(yùn)行損耗的問題。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種能夠解決ETL任務(wù)調(diào)度中由于前置子任務(wù)出錯時而 后續(xù)子任務(wù)依然執(zhí)行的問題,提高任務(wù)執(zhí)行效率,有利于減少人工干預(yù),減少運(yùn)行損耗的糾 錯重啟以及自動判斷啟動的ETL調(diào)度系統(tǒng)及方法。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為一種糾錯重啟以及自動判斷啟動的ETL調(diào)度系統(tǒng),包括業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服務(wù)器、數(shù)據(jù) 倉庫服務(wù)器、ETL調(diào)度監(jiān)控服務(wù)器、ETL調(diào)度平臺服務(wù)器;數(shù)據(jù)倉庫服務(wù)器包括任務(wù)配置存儲器、數(shù)據(jù)倉庫數(shù)據(jù)存儲器、ETL任務(wù)處理器、執(zhí)行記錄存儲器,ETL任務(wù)處理器與數(shù)據(jù)倉庫 數(shù)據(jù)存儲器和執(zhí)行記錄存儲器相連;ETL調(diào)度監(jiān)控服務(wù)器包括任務(wù)執(zhí)行監(jiān)控處理器、任務(wù) 異常信息存儲器、異常信息發(fā)送器,任務(wù)異常信息存儲器與任務(wù)執(zhí)行監(jiān)控處理器和異常信 息發(fā)送器相連;ETL調(diào)度平臺服務(wù)器包括啟動判斷處理器、任務(wù)啟動處理器,啟動判斷處理 器與任務(wù)啟動處理器相連;其中,數(shù)據(jù)倉庫服務(wù)器的ETL任務(wù)處理器與業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服 務(wù)器和ETL調(diào)度平臺服務(wù)器的任務(wù)啟動處理器相連,ETL調(diào)度平臺服務(wù)器的啟動判斷處理 器分別與數(shù)據(jù)倉庫服務(wù)器的任務(wù)配置存儲器、執(zhí)行記錄存儲器、以及ETL調(diào)度監(jiān)控服務(wù)器 的異常信息發(fā)送器相連,數(shù)據(jù)倉庫服務(wù)器的執(zhí)行記錄存儲器與ETL調(diào)度監(jiān)控服務(wù)器的任務(wù) 執(zhí)行監(jiān)控處理器相連。
一種糾錯重啟以及自動判斷啟動的ETL調(diào)度方法,包括以下步驟步驟一安排任務(wù)、子任務(wù)的執(zhí)行順序,配置子任務(wù)之間的關(guān)聯(lián)關(guān)系,把任務(wù)執(zhí)行的先 后順序,任務(wù)包含的子任務(wù),子任務(wù)執(zhí)行的先后順序,子任務(wù)之間的關(guān)系保存在數(shù)據(jù)倉庫服 務(wù)器的任務(wù)配置存儲器中,且每個子任務(wù)對應(yīng)數(shù)據(jù)倉庫中的一張表,根據(jù)業(yè)務(wù)需要來安排 任務(wù)在執(zhí)行時間上的先后順序,安排任務(wù)所包含的子任務(wù)的執(zhí)行順序時,子任務(wù)采用以下 原則進(jìn)行排序(1)當(dāng)一個子任務(wù)與其它子任務(wù)之間具有關(guān)聯(lián)關(guān)系時,必須在一個或者若干個前置子 任務(wù)成功執(zhí)行之后才能執(zhí)行該子任務(wù);(2)在此基礎(chǔ)上,按照子任務(wù)的重要程度進(jìn)行排序,對業(yè)務(wù)影響較大的子任務(wù)優(yōu)先執(zhí)(3)最后根據(jù)子任務(wù)執(zhí)行的時間長度進(jìn)行排序,執(zhí)行時間較短的子任務(wù)優(yōu)先執(zhí)行;步驟二 由啟動判斷處理器從任務(wù)配置存儲器讀取待執(zhí)行子任務(wù)及其前置子任務(wù)信 息;由啟動判斷處理器從執(zhí)行記錄存儲器中讀取待執(zhí)行子任務(wù)及其前置子任務(wù)最近一次成 功執(zhí)行的結(jié)束時間;根據(jù)這些信息,通過啟動判斷處理器的計(jì)算,得出待執(zhí)行子任務(wù)的執(zhí)行 標(biāo)志,待執(zhí)行子任務(wù)執(zhí)行標(biāo)志生成流程如下(1)通過任務(wù)配置信息抽取單元,從任務(wù)配置存儲器獲取任務(wù)配置信息,通過配置信息 處理單元獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置子任務(wù)的信息,將這些信息發(fā)送到任務(wù)執(zhí)行標(biāo) 志計(jì)算單元;(2)任務(wù)執(zhí)行信息抽取單元通過配置信息處理單元獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置 子任務(wù)的信息,再從執(zhí)行記錄存儲器獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置子任務(wù)最近一次成 功執(zhí)行的結(jié)束時間;若最近一次成功執(zhí)行的結(jié)束時間不存在,則表明當(dāng)前子任務(wù)是第一次執(zhí)行,直接得出 “可執(zhí)行”標(biāo)志;(3)任務(wù)執(zhí)行標(biāo)志計(jì)算單元計(jì)算出待執(zhí)行子任務(wù)所對應(yīng)的所有前置子任務(wù)中最近一次 成功執(zhí)行的結(jié)束時間中的最早值,將這個最早值與待執(zhí)行子任務(wù)的最后一次成功執(zhí)行結(jié)束 時間進(jìn)行對比,對比方法如下這個最早值若晚于待執(zhí)行子任務(wù)的最后一次成功執(zhí)行結(jié)束時間,則表明待執(zhí)行子任務(wù) 可以執(zhí)行,返回“可執(zhí)行”標(biāo)志;這個最早值若早于待執(zhí)行子任務(wù)的最后一次成功執(zhí)行結(jié)束時間,則表明待執(zhí)行子任務(wù) 的前置子任務(wù)中存在著執(zhí)行異常的情況,返回“不可執(zhí)行”標(biāo)志;步驟三將啟動判斷處理器中任務(wù)標(biāo)志發(fā)送單元的執(zhí)行標(biāo)志結(jié)果發(fā)送到任務(wù)啟動處理 器;任務(wù)啟動處理器分以下兩種情況若任務(wù)啟動處理器獲取“可執(zhí)行”標(biāo)志后,將啟動指令發(fā)送至數(shù)據(jù)倉庫服務(wù)器的ETL任 務(wù)處理器中,繼續(xù)執(zhí)行步驟四;若任務(wù)啟動處理器獲取“不可執(zhí)行”標(biāo)志后,不進(jìn)行動作,跳至步驟二 ;步驟四ETL任務(wù)處理器獲取啟動指令開始執(zhí)行相應(yīng)的子任務(wù);gETL任務(wù)處理器執(zhí)行 相應(yīng)的子任務(wù)未發(fā)生異常,繼續(xù)執(zhí)行步驟五;若ETL任務(wù)處理器執(zhí)行相應(yīng)的子任務(wù)發(fā)生異 常而被終止,直接跳到步驟八;步驟五執(zhí)行記錄存儲器在子任務(wù)開始執(zhí)行時,記錄該子任務(wù)的名稱,開始時間、把子 任務(wù)設(shè)置為“fail ”狀態(tài),表示此任務(wù)還未成功完成,執(zhí)行記錄存儲器在子任務(wù)成功執(zhí)行結(jié) 束時,記錄子任務(wù)結(jié)束時間,以及更新數(shù)據(jù)量等信息,把此任務(wù)設(shè)置為“success”狀態(tài),表示 此任務(wù)還成功完成;步驟六任務(wù)執(zhí)行監(jiān)控處理器讀取執(zhí)行記錄存儲器中的子任務(wù)執(zhí)行情況信息,以便于 系統(tǒng)管理員監(jiān)控;步驟七如果任務(wù)配置存儲器中所有任務(wù)還未全部執(zhí)行,則跳至步驟二 ;如果任務(wù)配 置存儲器中所有任務(wù)都已執(zhí)行,則跳至步驟十三;步驟八執(zhí)行記錄存儲器記錄該子任務(wù)的狀態(tài)信息,包括開始執(zhí)行時間、異常終止時 間、運(yùn)行狀態(tài)等;步驟九任務(wù)執(zhí)行監(jiān)控處理器從執(zhí)行記錄存儲器中獲取任務(wù)執(zhí)行情況信息,并把該異 常子任務(wù)的信息放置到任務(wù)異常信息存儲器中保存,同時對這個異常子任務(wù)信息的保存次 數(shù)增加一次;步驟十二由于前置任務(wù)發(fā)生異常,將不會執(zhí)行與其具有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù),跳至 步驟七;步驟十三異常信息發(fā)送器依照執(zhí)行的先后順序從任務(wù)異常信息存儲器中讀取發(fā)生異 常問題的子任務(wù)信息,并把它發(fā)送給啟動判斷處理器;步驟十四啟動判斷處理器從任務(wù)配置存儲器中讀取這個異常子任務(wù)的前置子任務(wù), 如果這個異常子任務(wù)不存在前置子任務(wù),那么發(fā)送“可執(zhí)行”指令給任務(wù)啟動處理器;如果 這個異常子任務(wù)存在前置子任務(wù),則需要從執(zhí)行記錄存儲器讀取這個前置子任務(wù)的執(zhí)行狀 態(tài),如果判斷這個前置子任務(wù)的執(zhí)行狀態(tài)是成功的,那么啟動判斷處理器發(fā)送“可執(zhí)行”指 令給任務(wù)啟動處理器;否則,啟動判斷處理器發(fā)送“不可執(zhí)行”指令給任務(wù)啟動處理器;步驟十五任務(wù)啟動處理器接收到“可執(zhí)行”執(zhí)行標(biāo)志結(jié)果,將啟動指令發(fā)送至數(shù)據(jù)倉 庫服務(wù)器的ETL任務(wù)處理器中;步驟十六ETL任務(wù)處理器開始重新執(zhí)行相應(yīng)的異常子任務(wù);步驟十七執(zhí)行記錄存儲器在異常子任務(wù)開始執(zhí)行時,記錄此異常子任務(wù)的名稱,開始 時間、把此任務(wù)設(shè)置為“fail”狀態(tài),表示此子任務(wù)還未成功完成;執(zhí)行記錄存儲器在此子 任務(wù)成功執(zhí)行結(jié)束時,記錄此子任務(wù)結(jié)束時間、把此任務(wù)設(shè)置為“success”狀態(tài),表示此此 任務(wù)還成功完成,以及更新數(shù)據(jù)量等信息;如果這個異常子任務(wù)在這次執(zhí)行過程中還是發(fā) 生了異常,則把這個異常子任務(wù)信息通過任務(wù)執(zhí)行監(jiān)控處理器仍然保存到任務(wù)異常信息存 儲器中,同時對這個異常子任務(wù)信息的保存次數(shù)加I ;步驟十八這個異常子任務(wù)成功執(zhí)行后,啟動判斷處理器從任務(wù)配置存儲器中讀取與 這個子任務(wù)有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù),由于這個子任務(wù)已經(jīng)被成功執(zhí)行,那么計(jì)算后續(xù)子 任務(wù)得到“可執(zhí)行”的執(zhí)行標(biāo)志結(jié)果,把“可執(zhí)行”的執(zhí)行標(biāo)志結(jié)果傳遞給任務(wù)啟動處理器, 進(jìn)而通過ETL任務(wù)處理器執(zhí)行這些后續(xù)子任務(wù);如果這些后續(xù)子任務(wù)在執(zhí)行過程中發(fā)生異 常,則把異常子任務(wù)信息通過任務(wù)執(zhí)行監(jiān)控處理器仍然保存到任務(wù)異常信息存儲器中,同 時對此異常子任務(wù)信息的保存次數(shù)增加I ;步驟十九當(dāng)這個異常子任務(wù)所關(guān)聯(lián)的所有后續(xù)任務(wù)都執(zhí)行后,啟動判斷處理器接收 異常信息發(fā)送器發(fā)送的異常子任務(wù),開始處理新的異常子任務(wù);步驟二十當(dāng)所有的異常子任務(wù)都處理后,異常信息發(fā)送器又開始把仍存在的子任務(wù) 信息發(fā)送給啟動判斷處理器,開始新一輪處理過程;步驟二十一如果某個異常子任務(wù)經(jīng)過3輪處理后還是發(fā)生異常,那么對這個異常子 任務(wù)不再執(zhí)行,把這個異常子任務(wù)的信息發(fā)送給系統(tǒng)管理員來進(jìn)行緊急處理。
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn)(I)本發(fā)明從將數(shù)據(jù)倉庫所有ETL任務(wù)分為若干主題任務(wù),每個主題任務(wù)包含若干子 任務(wù),在任務(wù)執(zhí)行發(fā)生異常后,只需要對對應(yīng)的異常子任務(wù)進(jìn)行處理,錯誤排查方便,減少 重新調(diào)度任務(wù)時間,提高了調(diào)度效率。
(2)本發(fā)明采用子任務(wù)關(guān)聯(lián)關(guān)系及子任務(wù)成功執(zhí)行完成時間自動判斷是否執(zhí)行后 續(xù)關(guān)聯(lián)子任務(wù),可以避免由于前置子任務(wù)出錯時而后續(xù)子任務(wù)依然執(zhí)行,帶來的系統(tǒng)消耗 及產(chǎn)生錯誤的結(jié)果問題。
(3)本發(fā)明對記錄的異常子任務(wù),以多次自動重啟的方式提高任務(wù)執(zhí)行的成功率, 減少人工干預(yù),降低維護(hù)成本。
(4)本發(fā)明在任務(wù)執(zhí)行順序的安排上,優(yōu)先執(zhí)行重要程度高,執(zhí)行時間短的子任 務(wù),保證了整個ETL調(diào)度過程效率高、故障低。
(5)每個任務(wù)對應(yīng)若干個子任務(wù),每個子任務(wù)對應(yīng)數(shù)據(jù)倉庫中的一張表,子任務(wù)與 表一對一的關(guān)系可以避免需要處理某個表的數(shù)據(jù)時對其他的表的數(shù)據(jù)進(jìn)行重復(fù)處理,節(jié)省 了系統(tǒng)資源和時間的消耗。
下面結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)描述。


圖1為本發(fā)明糾錯重啟以及自動判斷啟動的ETL調(diào)度系統(tǒng)的系統(tǒng)結(jié)構(gòu)示意圖。
圖2為本發(fā)明的子任務(wù)關(guān)系圖。
圖3為本發(fā)明的子任務(wù)成功執(zhí)行的過程示意圖。
圖4為本發(fā)明的子任務(wù)發(fā)生異常時的處理過程示意圖。
圖5為本發(fā)明的子任務(wù)執(zhí)行異常時的關(guān)聯(lián)關(guān)系子任務(wù)結(jié)果示意圖。
圖6為本發(fā)明的糾錯重啟的處理過程示意圖。
圖7為本發(fā)明的啟動判斷處理器的結(jié)構(gòu)示意圖。
圖8為本發(fā)明的實(shí)施例的ETL任務(wù)流程圖。
具體實(shí)施方式
如圖1所述本發(fā)明一種糾錯重啟以及自動判斷啟動的ETL調(diào)度系統(tǒng),包括業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服務(wù) 器、數(shù)據(jù)倉庫服務(wù)器、ETL調(diào)度監(jiān)控服務(wù)器、ETL調(diào)度平臺服務(wù)器;數(shù)據(jù)倉庫服務(wù)器包括任 務(wù)配置存儲器、數(shù)據(jù)倉庫數(shù)據(jù)存儲器、ETL任務(wù)處理器、執(zhí)行記錄存儲器,ETL任務(wù)處理器與 數(shù)據(jù)倉庫數(shù)據(jù)存儲器和執(zhí)行記錄存儲器相連;ETL調(diào)度監(jiān)控服務(wù)器包括任務(wù)執(zhí)行監(jiān)控處理 器、任務(wù)異常信息存儲器、異常信息發(fā)送器,任務(wù)異常信息存儲器與任務(wù)執(zhí)行監(jiān)控處理器和 異常信息發(fā)送器相連;ETL調(diào)度平臺服務(wù)器包括啟動判斷處理器、任務(wù)啟動處理器,啟動判 斷處理器與任務(wù)啟動處理器相連;其中,數(shù)據(jù)倉庫服務(wù)器的ETL任務(wù)處理器與業(yè)務(wù)系統(tǒng)數(shù) 據(jù)庫服務(wù)器和ETL調(diào)度平臺服務(wù)器的任務(wù)啟動處理器相連,ETL調(diào)度平臺服務(wù)器的啟動判 斷處理器分別與數(shù)據(jù)倉庫服務(wù)器的任務(wù)配置存儲器、執(zhí)行記錄存儲器、以及ETL調(diào)度監(jiān)控 服務(wù)器的異常信息發(fā)送器相連,數(shù)據(jù)倉庫服務(wù)器的執(zhí)行記錄存儲器與ETL調(diào)度監(jiān)控服務(wù)器 的任務(wù)執(zhí)行監(jiān)控處理器相連。
如圖7所述所述的啟動判斷處理器包括任務(wù)配置信息抽取單元、配置信息處理單元、任務(wù)執(zhí)行信 息抽取單元、任務(wù)執(zhí)行標(biāo)志計(jì)算單元、任務(wù)標(biāo)志發(fā)送單元,其中任務(wù)配置信息抽取單元與配 置信息處理單元和任務(wù)執(zhí)行信息抽取單元相連,任務(wù)執(zhí)行標(biāo)志計(jì)算單元分別與配置信息處 理單元、任務(wù)執(zhí)行信息抽取單元相連、任務(wù)標(biāo)志發(fā)送單元相連。
如圖3和4以及如圖6所述一種糾錯重啟以及自動判斷啟動的ETL調(diào)度方法,其特征在于,包括以下步驟步驟一安排任務(wù)、子任務(wù)的執(zhí)行順序,配置子任務(wù)之間的關(guān)聯(lián)關(guān)系,把任務(wù)執(zhí)行的先 后順序,任務(wù)包含的子任務(wù),子任務(wù)執(zhí)行的先后順序,子任務(wù)之間的關(guān)系保存在數(shù)據(jù)倉庫服 務(wù)器的任務(wù)配置存儲器中,根據(jù)業(yè)務(wù)需要來安排任務(wù)在執(zhí)行時間上的先后順序,安排任務(wù) 所包含的子任務(wù)的執(zhí)行順序時,子任務(wù)采用以下原則進(jìn)行排序(1)當(dāng)一個子任務(wù)與其它子任務(wù)之間具有關(guān)聯(lián)關(guān)系時,必須在一個或者若干個前置子 任務(wù)成功執(zhí)行之后才能執(zhí)行該子任務(wù);(2)在此基礎(chǔ)上,按照子任務(wù)的重要程度進(jìn)行排序,對業(yè)務(wù)影響較大的子任務(wù)優(yōu)先執(zhí)(3)最后根據(jù)子任務(wù)執(zhí)行的時間長度進(jìn)行排序,執(zhí)行時間較短的子任務(wù)優(yōu)先執(zhí)行;步驟二 由啟動判斷處理器從任務(wù)配置存儲器讀取待執(zhí)行子任務(wù)及其前置子任務(wù)信 息;由啟動判斷處理器從執(zhí)行記錄存儲器中讀取待執(zhí)行子任務(wù)及其前置子任務(wù)最近一次成 功執(zhí)行的結(jié)束時間;根據(jù)這些信息,通過啟動判斷處理器的計(jì)算,得出待執(zhí)行子任務(wù)的執(zhí)行 標(biāo)志,待執(zhí)行子任務(wù)執(zhí)行標(biāo)志生成流程如下(1)通過任務(wù)配置信息抽取單元,從任務(wù)配置存儲器獲取任務(wù)配置信息,通過配置信息 處理單元獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置子任務(wù)的信息,將這些信息發(fā)送到任務(wù)執(zhí)行標(biāo) 志計(jì)算單元;(2)任務(wù)執(zhí)行信息抽取單元通過配置信息處理單元獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置 子任務(wù)的信息,再從執(zhí)行記錄存儲器獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置子任務(wù)最近一次成 功執(zhí)行的結(jié)束時間;若最近一次成功執(zhí)行的結(jié)束時間不存在,則表明當(dāng)前子任務(wù)是第一次執(zhí)行,直接得出“可執(zhí)行”標(biāo)志;(3)任務(wù)執(zhí)行標(biāo)志計(jì)算單元計(jì)算出待執(zhí)行子任務(wù)所對應(yīng)的所有前置子任務(wù)中最近一次 成功執(zhí)行的結(jié)束時間中的最早值,將這個最早值與待執(zhí)行子任務(wù)的最后一次成功執(zhí)行結(jié)束 時間進(jìn)行對比,對比方法如下這個最早值若晚于待執(zhí)行子任務(wù)的最后一次成功執(zhí)行結(jié)束時間,則表明待執(zhí)行子任務(wù) 可以執(zhí)行,返回“可執(zhí)行”標(biāo)志;這個最早值若早于待執(zhí)行子任務(wù)的最后一次成功執(zhí)行結(jié)束時間,則表明待執(zhí)行子任務(wù) 的前置子任務(wù)中存在著執(zhí)行異常的情況,返回“不可執(zhí)行”標(biāo)志;步驟三將啟動判斷處理器中任務(wù)標(biāo)志發(fā)送單元的執(zhí)行標(biāo)志結(jié)果發(fā)送到任務(wù)啟動處理 器;任務(wù)啟動處理器分以下兩種情況若任務(wù)啟動處理器獲取“可執(zhí)行”標(biāo)志后,將啟動指令發(fā)送至數(shù)據(jù)倉庫服務(wù)器的ETL任 務(wù)處理器中,繼續(xù)執(zhí)行步驟四;若任務(wù)啟動處理器獲取“不可執(zhí)行”標(biāo)志后,不進(jìn)行動作,跳至步驟二 ;步驟四ETL任務(wù)處理器獲取啟動指令開始執(zhí)行相應(yīng)的子任務(wù);gETL任務(wù)處理器執(zhí)行 相應(yīng)的子任務(wù)未發(fā)生異常,繼續(xù)執(zhí)行步驟五;若ETL任務(wù)處理器執(zhí)行相應(yīng)的子任務(wù)發(fā)生異 常而被終止,直接跳到步驟八;步驟五執(zhí)行記錄存儲器在子任務(wù)開始執(zhí)行時,記錄該子任務(wù)的名稱,開始時間、把子 任務(wù)設(shè)置為“fail”狀態(tài),表示此任務(wù)還未成功完成,執(zhí)行記錄存儲器在子任務(wù)成功執(zhí)行結(jié) 束時,記錄子任務(wù)結(jié)束時間,以及更新數(shù)據(jù)量等信息,把此任務(wù)設(shè)置為“success”狀態(tài),表示 此任務(wù)還成功完成;步驟六任務(wù)執(zhí)行監(jiān)控處理器讀取執(zhí)行記錄存儲器中的子任務(wù)執(zhí)行情況信息,以便于 系統(tǒng)管理員監(jiān)控;步驟七如果任務(wù)配置存儲器中所有子任務(wù)未全部執(zhí)行,則跳至步驟二 ;如果任務(wù)配 置存儲器中所有子任務(wù)都已執(zhí)行,則跳至步驟十三;步驟八執(zhí)行記錄存儲器記錄該子任務(wù)的狀態(tài)信息,包括開始執(zhí)行時間、異常終止時 間、運(yùn)行狀態(tài)等;步驟九任務(wù)執(zhí)行監(jiān)控處理器從執(zhí)行記錄存儲器中獲取任務(wù)執(zhí)行情況信息,并把該異 常子任務(wù)的信息放置到任務(wù)異常信息存儲器中保存,同時對這個異常子任務(wù)信息的保存次 數(shù)增加一次;步驟十二由于前置子任務(wù)發(fā)生異常,將不會執(zhí)行與其具有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù),跳 至步驟七;步驟十三異常信息發(fā)送器依照執(zhí)行的先后順序從任務(wù)異常信息存儲器中讀取發(fā)生異 常問題的子任務(wù)信息,并把它發(fā)送給啟動判斷處理器;步驟十四啟動判斷處理器從任務(wù)配置存儲器中讀取這個異常子任務(wù)的前置子任務(wù), 如果這個異常子任務(wù)不存在前置子任務(wù),那么發(fā)送“可執(zhí)行”指令給任務(wù)啟動處理器;如果 這個異常子任務(wù)存在前置子任務(wù),則需要從執(zhí)行記錄存儲器讀取這個前置子任務(wù)的執(zhí)行狀 態(tài),如果判斷這個前置子任務(wù)的執(zhí)行狀態(tài)是成功的,那么啟動判斷處理器發(fā)送“可執(zhí)行”指 令給任務(wù)啟動處理器;否則,啟動判斷處理器發(fā)送“不可執(zhí)行”指令給任務(wù)啟動處理器; 步驟十五任務(wù)啟動處理器接收到“可執(zhí)行”執(zhí)行標(biāo)志結(jié)果,將啟動指令發(fā)送至數(shù)據(jù)倉庫服務(wù)器的ETL任務(wù)處理器中;步驟十六ETL任務(wù)處理器開始重新執(zhí)行相應(yīng)的異常子任務(wù);步驟十七執(zhí)行記錄存儲器在異常子任務(wù)開始執(zhí)行時,記錄異常子任務(wù)的名稱,開始時 間、把此子任務(wù)設(shè)置為“fail”狀態(tài),表示此子任務(wù)還未成功完成;執(zhí)行記錄存儲器在子任 務(wù)成功執(zhí)行結(jié)束時,記錄子任務(wù)結(jié)束時間、把此任務(wù)設(shè)置為“success”狀態(tài),表示此子任務(wù) 還成功完成,以及更新數(shù)據(jù)量等信息;如果這個異常子任務(wù)在這次執(zhí)行過程中還是發(fā)生了 異常,則把這個異常子任務(wù)信息通過任務(wù)執(zhí)行監(jiān)控處理器仍然保存到任務(wù)異常信息存儲器 中,同時對這個異常子任務(wù)信息的保存次數(shù)加I ;步驟十八這個異常子任務(wù)成功執(zhí)行后,啟動判斷處理器從任務(wù)配置存儲器中讀取與 這個子任務(wù)有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù),由于這個子任務(wù)已經(jīng)被成功執(zhí)行,那么計(jì)算后續(xù)子 任務(wù)得到“可執(zhí)行”的執(zhí)行標(biāo)志結(jié)果,把“可執(zhí)行”傳遞給任務(wù)啟動處理器,進(jìn)而通過ETL任 務(wù)處理器執(zhí)行這些后續(xù)子任務(wù);如果這些后續(xù)子任務(wù)在執(zhí)行過程中發(fā)生異常,則把異常子 任務(wù)信息通過任務(wù)執(zhí)行監(jiān)控處理器仍然保存到任務(wù)異常信息存儲器中,同時對異常子任務(wù) 信息的保存次數(shù)增加I ;步驟十九當(dāng)這個異常子任務(wù)所關(guān)聯(lián)的所有后續(xù)任務(wù)都成功執(zhí)行后,啟動判斷處理器 接收異常信息發(fā)送器發(fā)送的異常子任務(wù),又開始處理新的異常子任務(wù);步驟二十當(dāng)所有的異常子任務(wù)都處理后,異常信息發(fā)送器又開始把仍存在異常的子 任務(wù)信息發(fā)送給啟動判斷處理器,開始新一輪處理過程;步驟二十一如果某個異常子任務(wù)經(jīng)過3輪處理后還是發(fā)生異常,那么對這個異常子 任務(wù)不再執(zhí)行,把這個異常子任務(wù)的信息發(fā)送給系統(tǒng)管理員來進(jìn)行緊急處理。
如圖1所示,本發(fā)明的系統(tǒng)結(jié)構(gòu)包括業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服務(wù)器、數(shù)據(jù)倉庫服務(wù)器、 ETL調(diào)度監(jiān)控服務(wù)器、ETL調(diào)度平臺服務(wù)器。
業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服務(wù)器,用于存儲業(yè)務(wù)系統(tǒng)用戶使用業(yè)務(wù)系統(tǒng)操作生成的數(shù)據(jù), 業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服務(wù)器是數(shù)據(jù)倉庫數(shù)據(jù)的主要來源,是ETL任務(wù)數(shù)據(jù)的源頭。
數(shù)據(jù)倉庫服務(wù)器,用于執(zhí)行ETL任務(wù),存儲數(shù)據(jù)倉庫的數(shù)據(jù),存儲ETL任務(wù)的相關(guān) 配置信息,存儲ETL任務(wù)執(zhí)行的相關(guān)記錄信息。
數(shù)據(jù)倉庫服務(wù)器包括任務(wù)配置存儲器、數(shù)據(jù)倉庫數(shù)據(jù)存儲器、ETL任務(wù)處理器、執(zhí) 行記錄存儲器。
任務(wù)配置存儲器,用于存儲ETL任務(wù)的執(zhí)行順序,每個任務(wù)所包含的子任務(wù),以及 子任務(wù)與子任務(wù)的關(guān)聯(lián)關(guān)系等配置信息,以供ETL調(diào)度平臺服務(wù)器使用。
數(shù)據(jù)倉庫數(shù)據(jù)存儲器,用于存儲數(shù)據(jù)倉庫表的數(shù)據(jù),存儲每個ETL任務(wù)完成后生 成的結(jié)果數(shù)據(jù)。
ETL任務(wù)處理器,根據(jù)任務(wù)配置存儲器中的配置信息執(zhí)行預(yù)設(shè)的ETL任務(wù),處理來 自業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù),生成數(shù)據(jù)倉庫數(shù)據(jù)。
執(zhí)行記錄存儲器,記錄每個ETL任務(wù)執(zhí)行的初始狀態(tài)和結(jié)束狀態(tài),包括子任務(wù)名 稱、子任務(wù)開始時間、子任務(wù)結(jié)束時間、子任務(wù)執(zhí)行狀態(tài)、更新的數(shù)據(jù)量等信息。
ETL調(diào)度監(jiān)控服務(wù)器,用于對ETL任務(wù)所包含的子任務(wù)執(zhí)行進(jìn)行監(jiān)控,捕獲子任務(wù) 的異常信息,向維護(hù)人員發(fā)送異常信息提示,用于維護(hù)人員查看任務(wù)執(zhí)行狀況。ETL調(diào)度監(jiān) 控服務(wù)器包括任務(wù)執(zhí)行監(jiān)控處理器、任務(wù)異常信息存儲器、異常信息發(fā)送器。
任務(wù)執(zhí)行監(jiān)控處理器,監(jiān)控?cái)?shù)據(jù)倉庫服務(wù)器中的ETL任務(wù)執(zhí)行情況,獲取任務(wù)及 各個子任務(wù)執(zhí)行信息,并將子任務(wù)異常信息發(fā)送到任務(wù)異常信息存儲器。
任務(wù)異常信息存儲器,從任務(wù)執(zhí)行監(jiān)控處理器獲取子任務(wù)異常信息,將異常信息 進(jìn)行存儲。
異常信息發(fā)送器,從任務(wù)異常信息存儲器獲取子任務(wù)異常信息,將子任務(wù)異常信 息發(fā)送到維護(hù)人員和ETL調(diào)度平臺服務(wù)器。
ETL調(diào)度平臺服務(wù)器,用于判斷各個子任務(wù)的順序,判斷子任務(wù)是否可以執(zhí)行,在 子任務(wù)到可執(zhí)行狀態(tài)時啟動;WETL調(diào)度監(jiān)控服務(wù)器獲取異常子任務(wù)信息,當(dāng)子任務(wù)由于 執(zhí)行異常而失敗后,準(zhǔn)備重新執(zhí)行該子任務(wù)。ETL調(diào)度平臺服務(wù)器包括啟動判斷處理器、任 務(wù)啟動處理器。
啟動判斷處理器,從數(shù)據(jù)倉庫服務(wù)器獲取ETL任務(wù)以及子任務(wù)配置信息,通過計(jì) 算處理,判斷子任務(wù)是否符合執(zhí)行的條件,并將執(zhí)行標(biāo)志結(jié)果發(fā)送到任務(wù)啟動處理器。
任務(wù)啟動處理器,獲取任務(wù)判斷處理器處理結(jié)果后,將啟動任務(wù)指令發(fā)送至數(shù)據(jù) 倉庫服務(wù)器,啟動對應(yīng)ETL任務(wù)。
本專利提供的方法具體實(shí)現(xiàn),包括1、安排任務(wù)、子任務(wù)的執(zhí)行順序,配置子任務(wù)之間的關(guān)聯(lián)關(guān)系按照業(yè)務(wù)工作的范圍,將業(yè)務(wù)工作需求分成若干個不同的主題,每個主題對應(yīng)一個任 務(wù)。每個任務(wù)被劃分為若干個子任務(wù),子任務(wù)為最小的執(zhí)行單元,不能再進(jìn)行劃分,每個子 任務(wù)對應(yīng)數(shù)據(jù)倉庫中的一張數(shù)據(jù)表。
在任務(wù)內(nèi)的子任務(wù)之間,存在著2種關(guān)系(I)獨(dú)立關(guān)系。子任務(wù)之間不存在必要的因果關(guān)系。
( 2 )關(guān)聯(lián)關(guān)系。子任務(wù)之間存在著必要的因果關(guān)系,一個子任務(wù)必須在一個或者若 干個前置子任務(wù)成功執(zhí)行之后才能開始執(zhí)行。
如圖2所不,子任務(wù)I和子任務(wù)之間是獨(dú)立關(guān)系。子任務(wù)I和子任務(wù)3、子任務(wù)4 之間是關(guān)聯(lián)關(guān)系。子任務(wù)2和子任務(wù)3、子任務(wù)4之間是關(guān)聯(lián)關(guān)系。
子任務(wù)I和子任務(wù)2是子任務(wù)3的前置任務(wù),子任務(wù)3必須在子任務(wù)I和子任務(wù)2 全部成功執(zhí)行結(jié)束后才能執(zhí)行。子任務(wù)3是子任務(wù)4的前置任務(wù),子任務(wù)4必須在子任務(wù) 3成功執(zhí)行結(jié)束后才能執(zhí)行。
子任務(wù)5與子任務(wù)1、子任務(wù)2、子任務(wù)3、子任務(wù)4是獨(dú)立關(guān)系。子任務(wù)6與子任 務(wù)1、子任務(wù)2、子任務(wù)3、子任務(wù)4是獨(dú)立關(guān)系。子任務(wù)5和子任務(wù)6是關(guān)聯(lián)關(guān)系,子任務(wù)5 是子任務(wù)6的前置任務(wù),子任務(wù)6必須在子任務(wù)5成功執(zhí)行結(jié)束后才能執(zhí)行。
子任務(wù)7與其他所有的子任務(wù)之間是獨(dú)立關(guān)系。
根據(jù)業(yè)務(wù)需要來安排任務(wù)在執(zhí)行時間上的先后順序。安排任務(wù)所包含的子任務(wù)的 執(zhí)行順序時,子任務(wù)采用以下原則進(jìn)行排序(I)當(dāng)一個子任務(wù)與其它子任務(wù)之間具有關(guān)聯(lián)關(guān)系時,必須在一個或者若干個前置子 任務(wù)成功執(zhí)行之后才能執(zhí)行該子任務(wù)。
(2)在此基礎(chǔ)上,按照子任務(wù)的重要程度進(jìn)行排序,對業(yè)務(wù)影響較大的子任務(wù)優(yōu)先 執(zhí)行。
(3)最后根據(jù)子任務(wù)執(zhí)行的時間長度進(jìn)行排序,執(zhí)行時間較短的子任務(wù)優(yōu)先執(zhí)行。
把任務(wù)執(zhí)行的先后順序,任務(wù)包含的子任務(wù),子任務(wù)執(zhí)行的先后順序,子任務(wù)之間 的關(guān)系保存在任務(wù)配置存儲器中。
2、子任務(wù)執(zhí)行異常時,記錄異常子任務(wù)信息,并且當(dāng)異常子任務(wù)與其它子任務(wù)有 關(guān)聯(lián)關(guān)系時,將不執(zhí)行此異常子任務(wù)的后續(xù)子任務(wù)。
如圖3所示,子任務(wù)正常執(zhí)行過程(O由啟動判斷處理器從任務(wù)配置存儲器讀取待執(zhí)行子任務(wù)及其前置子任務(wù)信息。
(2)由啟動判斷處理器從執(zhí)行記錄存儲器中讀取待執(zhí)行子任務(wù)及其前置子任務(wù)最 近一次成功執(zhí)行的結(jié)束時間。
(3)根據(jù)這些信息,通過啟動判斷處理器的計(jì)算,得出子任務(wù)的執(zhí)行標(biāo)志,相關(guān)各 前置子任務(wù)成功執(zhí)行時得到的執(zhí)行標(biāo)志結(jié)果是“可執(zhí)行”。
(4)將執(zhí)行標(biāo)志結(jié)果發(fā)送到任務(wù)啟動處理器。
(5)任務(wù)啟動處理器獲取“可執(zhí)行”標(biāo)志后,將啟動指令發(fā)送至數(shù)據(jù)倉庫服務(wù)器的 ETL任務(wù)處理器中。
(6) ETL任務(wù)處理器開始執(zhí)行相應(yīng)的子任務(wù)。
(7)執(zhí)行記錄存儲器在子任務(wù)開始執(zhí)行時,記錄該子任務(wù)的名稱,開始時間、把子 任務(wù)設(shè)置為“fail”狀態(tài),表示此子任務(wù)還未成功完成。執(zhí)行記錄存儲器在子任務(wù)成功執(zhí)行 結(jié)束時,記錄子任務(wù)結(jié)束時間、以及更新數(shù)據(jù)量等信息,把此任務(wù)設(shè)置為“success”狀態(tài),表 示此任務(wù)還成功完成。
(8)任務(wù)執(zhí)行監(jiān)控處理器讀取執(zhí)行記錄存儲器中的子任務(wù)執(zhí)行情況信息,以便于 系統(tǒng)管理員監(jiān)控。
如圖4所示。子任務(wù)執(zhí)行發(fā)生異常時,與該子任務(wù)有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù)將不 會被執(zhí)行,其處理過程如下(I)ETL任務(wù)處理器開始執(zhí)行子任務(wù),該子任務(wù)執(zhí)行時發(fā)生異常而被終止。
(2)執(zhí)行記錄存儲器記錄該子任務(wù)的狀態(tài)信息,包括開始執(zhí)行時間、異常終止時 間、運(yùn)行狀態(tài)等。
( 3 )任務(wù)執(zhí)行監(jiān)控處理器獲取任務(wù)執(zhí)行情況信息。
(4)把該異常子任務(wù)的信息放置到任務(wù)異常信息存儲器中保存,同時對這個異常 子任務(wù)信息的保存次數(shù)增加一次。
(5)由啟動判斷處理器從任務(wù)配置存儲器讀取待執(zhí)行子任務(wù)及其前置子任務(wù)信 息。此處所述前置子任務(wù)為上述執(zhí)行時發(fā)生異常的子任務(wù)。
( 6 )由啟動判斷處理器從執(zhí)行記錄存儲器中讀取待執(zhí)行子任務(wù)及其前置子任務(wù)最 近一次成功執(zhí)行的結(jié)束時間。
(7)啟動判斷處理器通過計(jì)算,由于前置任務(wù)發(fā)生異常,得出待執(zhí)行子任務(wù)的執(zhí)行 標(biāo)志是“不可執(zhí)行”。
(8)將執(zhí)行標(biāo)志即結(jié)果發(fā)送到任務(wù)啟動處理器。任務(wù)啟動處理器接到這個執(zhí)行標(biāo) 志,不進(jìn)行動作。
如圖5所示,其中執(zhí)行順序?yàn)樽尤蝿?wù)1、子任務(wù)2、子任務(wù)3、子任務(wù)4。其中,子任 務(wù)I與子任務(wù)3關(guān)聯(lián),子任務(wù)2與子任務(wù)3關(guān)聯(lián),子任務(wù)3與子任務(wù)4關(guān)聯(lián),子任務(wù)I與子 任務(wù)2是獨(dú)立關(guān)系。
如果子任務(wù)I發(fā)生異常錯誤,子任務(wù)3與子任務(wù)4將不會被執(zhí)行,而子任務(wù)2不受 影響,將按順序執(zhí)行。
3、當(dāng)任務(wù)配置存儲器中的所有任務(wù)都已執(zhí)行后,進(jìn)入到糾錯重啟階段。依次執(zhí)行 被記錄的異常子任務(wù),當(dāng)異常子任務(wù)與其它子任務(wù)有關(guān)聯(lián)關(guān)系時,成功執(zhí)行異常子任務(wù)后, 需要依次執(zhí)行與其有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù)。在此過程中有子任務(wù)在執(zhí)行時發(fā)生異常,仍 被記錄,用于新一輪的處理,如圖6所示。
(I)異常信息發(fā)送器依照執(zhí)行的先后順序從任務(wù)異常信息存儲器中讀取發(fā)生異常 問題的子任務(wù)信息,并把它發(fā)送給啟動判斷處理器。
(2)啟動判斷處理器從任務(wù)配置存儲器中讀取這個異常子任務(wù)的前置子任務(wù),如 果這個異常子任務(wù)不存在前置子任務(wù),那么發(fā)送“可執(zhí)行”指令給任務(wù)啟動處理器。如果 這個異常子任務(wù)存在前置子任務(wù),則需要從執(zhí)行記錄存儲器讀取這個前置子任務(wù)的執(zhí)行狀 態(tài),如果判斷這個前置子任務(wù)的執(zhí)行狀態(tài)是成功的,那么啟動判斷處理器發(fā)送“可執(zhí)行”指 令給任務(wù)啟動處理器;否則,啟動判斷處理器發(fā)送“不可執(zhí)行”指令給任務(wù)啟動處理器。
(3)任務(wù)啟動處理器接收到“可執(zhí)行”執(zhí)行標(biāo)志結(jié)果,將啟動指令發(fā)送至數(shù)據(jù)倉庫 服務(wù)器的ETL任務(wù)處理器中。
(4) ETL任務(wù)處理器開始重新執(zhí)行相應(yīng)的異常子任務(wù)。
(5)執(zhí)行記錄存儲器在異常子任務(wù)開始執(zhí)行時,記錄異常子任務(wù)的名稱,開始時 間、把此子任務(wù)設(shè)置為“ fai I ”狀態(tài),表示此子任務(wù)還未成功完成。執(zhí)行記錄存儲器在子任務(wù) 成功執(zhí)行結(jié)束時,記錄子任務(wù)結(jié)束時間、把此子任務(wù)設(shè)置為“success”狀態(tài),表示此子任務(wù) 還成功完成,以及更新數(shù)據(jù)量等信息。如果這個異常子任務(wù)在這次執(zhí)行過程中還是發(fā)生了 異常,則把這個異常子任務(wù)信息通過任務(wù)監(jiān)控處理器仍然保存到任務(wù)異常信息存儲器中, 同時對這個異常子任務(wù)信息的保存次數(shù)加I。
(6)這個異常子任務(wù)成功執(zhí)行后,啟動判斷處理器從任務(wù)配置存儲器中讀取與這 個子任務(wù)有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù),由于這個子任務(wù)已經(jīng)被成功執(zhí)行,那么計(jì)算后續(xù)子任 務(wù)的是否可執(zhí)行,得到“可執(zhí)行”的執(zhí)行標(biāo)志結(jié)果,把“可執(zhí)行”傳遞給任務(wù)啟動處理器,進(jìn)而 通過ETL任務(wù)處理器執(zhí)行這些后續(xù)子任務(wù)。如果這些后續(xù)子任務(wù)在執(zhí)行過程中發(fā)生異常, 則把異常子任務(wù)信息通過任務(wù)監(jiān)控處理器仍然保存到任務(wù)異常信息存儲器中,同時對此異 常子任務(wù)信息的保存次數(shù)增加I。
(7)當(dāng)這個異常子任務(wù)所關(guān)聯(lián)的所有后續(xù)任務(wù)都成功執(zhí)行后,啟動判斷處理器接 收異常信息發(fā)送器發(fā)送的下一個異常子任務(wù),開始處理。
(8)當(dāng)所有的異常子任務(wù)都處理后,異常信息發(fā)送器又開始把仍存在的子任務(wù)信 息發(fā)送給啟動判斷處理器,開始新一輪處理過程。
(9)如果某個異常子任務(wù)經(jīng)過連續(xù)3輪處理后還是發(fā)生異常,那么對這個異常子 任務(wù)不再執(zhí)行,把這個異常子任務(wù)的信息發(fā)送給系統(tǒng)管理員來進(jìn)行緊急處理。
如圖7所示本發(fā)明中的啟動判斷處理器用于計(jì)算和判斷待執(zhí)行子任務(wù)是否滿足執(zhí)行條件,并向任 務(wù)啟動處理器發(fā)出是否執(zhí)行的標(biāo)志,保證任務(wù)流程中的子任務(wù)按序自動啟動執(zhí)行。其結(jié)構(gòu) 包括任務(wù)配置信息抽取單元、配置信息處理單元、任務(wù)執(zhí)行信息抽取單元、任務(wù)執(zhí)行標(biāo)志計(jì) 算單元、任務(wù)標(biāo)志發(fā)送單元。
任務(wù)配置信息抽取單元,用于抽取任務(wù)配置信息存儲器中預(yù)先設(shè)置好的子任務(wù)執(zhí) 行順序、子任務(wù)與子任務(wù)的關(guān)聯(lián)關(guān)系等信息。
配置信息處理單元,處理任務(wù)配置信息抽取單元的信息,計(jì)算出待執(zhí)行的子任務(wù), 并將結(jié)果信息發(fā)送到任務(wù)執(zhí)行標(biāo)志計(jì)算單元。
任務(wù)執(zhí)行信息抽取單元,從配置信息處理單元獲得待執(zhí)行子任務(wù)及其前置子任 務(wù),從執(zhí)行記錄存儲器獲取待執(zhí)行子任務(wù)最近一次成功執(zhí)行的結(jié)束時間,以及其前置子任 務(wù)最近一次成功執(zhí)行的結(jié)束時間等信息,將信息發(fā)送到任務(wù)執(zhí)行標(biāo)志計(jì)算單元。
任務(wù)執(zhí)行標(biāo)志計(jì)算單元,從配置信息處理單元獲取待執(zhí)行的子任務(wù)及其前置子任 務(wù),再從任務(wù)執(zhí)行信息抽取單元獲取待執(zhí)行子任務(wù)其前置子任務(wù)相關(guān)成功執(zhí)行的信息,計(jì) 算出待執(zhí)行子任務(wù)執(zhí)行的標(biāo)志。
任務(wù)標(biāo)志發(fā)送單元,從任務(wù)執(zhí)行標(biāo)志計(jì)算單元獲取任務(wù)可執(zhí)行標(biāo)志后,將是否可 執(zhí)行的指令發(fā)送到任務(wù)啟動處理器,以啟動待執(zhí)行子任務(wù)。
待執(zhí)行子任務(wù)執(zhí)行標(biāo)志生成流程如下(I)通過任務(wù)配置信息抽取單元,獲取任務(wù)配置信息,通過配置信息處理單元獲取當(dāng)前 待執(zhí)行的子任務(wù)及其前置子任務(wù)的信息,將這些信息發(fā)送到任務(wù)執(zhí)行標(biāo)志計(jì)算單元。
(2)任務(wù)執(zhí)行信息抽取單元通過配置信息處理單元獲取待執(zhí)行的子任務(wù)及其前置 子任務(wù)的信息,并從執(zhí)行記錄存儲器獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置子任務(wù)最近一次成 功執(zhí)行的結(jié)束時間。
若最近一次成功執(zhí)行的結(jié)束時間不存在,則表明當(dāng)前子任務(wù)是第一次執(zhí)行,直接 得出“可執(zhí)行”標(biāo)志。
(3)任務(wù)執(zhí)行標(biāo)志計(jì)算單元計(jì)算出待執(zhí)行子任務(wù)所對應(yīng)的所有前置子任務(wù)中最近 一次成功執(zhí)行的結(jié)束時間中的最早值,將這個最早值與待執(zhí)行子任務(wù)的最后一次成功執(zhí)行 結(jié)束時間進(jìn)行對比。
這個最早值若晚于待執(zhí)行任務(wù)的最后一次成功執(zhí)行結(jié)束時間,則表明待執(zhí)行子任 務(wù)可以執(zhí)行,返回“可執(zhí)行”標(biāo)志。
這個最早值若早于待執(zhí)行任務(wù)的最后一次成功執(zhí)行結(jié)束時間,則表明待執(zhí)行任務(wù) 的前置任務(wù)中存在著執(zhí)行異常的情況,返回“不可執(zhí)行”標(biāo)志。
實(shí)施例對于一個ETL任務(wù)流程,如圖8所示。
本ETL任務(wù)流程分成4個任務(wù),依次執(zhí)行順序是任務(wù)1、任務(wù)2、任務(wù)3、任務(wù)4。
其中任務(wù)I包括5個子任務(wù),依次執(zhí)行順序是1、2、3、4、5。
任務(wù)2包括6個子任務(wù),依次執(zhí)行順序是6、7、8、9、10、11。
任務(wù)3包括5個子任務(wù),依次執(zhí)行順序是12、13、14、15、16。
任務(wù)4包括6個子任務(wù),依次執(zhí)行順序是17、18、19、20、21、22。
并且,在圖中有連線直接連接的子任務(wù)具有關(guān)聯(lián)關(guān)系,無連線直接連接的子任務(wù) 無關(guān)聯(lián)關(guān)系,是獨(dú)立關(guān)系。
如果子任務(wù)2發(fā)生異常,則子任務(wù)3、4、5將不會被執(zhí)行。
子任務(wù)7發(fā)生異常,則子任務(wù)9、11將不會被執(zhí)行。
子任務(wù)13發(fā)生異常,則子任務(wù)14、16將不會被執(zhí)行。
子任務(wù)19發(fā)生異常,則子任務(wù)20、21、22將不會被執(zhí)行。
ETL任務(wù)流程結(jié)束后,子任務(wù)2、7、13、19的異常信息將會被保存在任務(wù)異常信息 存儲器中。當(dāng)進(jìn)入到糾錯重啟階段時,將依次重新啟動子任務(wù)2、7、13、19。
當(dāng)成功執(zhí)行子任務(wù)2后,將會依次執(zhí)行與其具有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù)3、4、5。當(dāng) 成功執(zhí)行子任務(wù)7后,將會依次執(zhí)行與其具有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù)9、11。當(dāng)成功執(zhí)行子 任務(wù)13后,將會依次執(zhí)行與其具有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù)14、16。當(dāng)成功執(zhí)行子任務(wù)19 后,將會依次執(zhí)行與其具有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù)20、21、22。
如果某個子任務(wù)連續(xù)3次執(zhí)行時都發(fā)生異常,將通知系統(tǒng)管理員進(jìn)行處理。
這種方式可以最大程度的減少人工操作,提高運(yùn)行效率,并且由于只對發(fā)生異常 的子任務(wù)進(jìn)行重新執(zhí)行,減少了正常子任務(wù)的重復(fù)運(yùn)行,減少系統(tǒng)運(yùn)行損耗。
權(quán)利要求
1.一種糾錯重啟以及自動判斷啟動的ETL調(diào)度系統(tǒng),其特征在于,包括業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服務(wù)器、數(shù)據(jù)倉庫服務(wù)器、ETL調(diào)度監(jiān)控服務(wù)器、ETL調(diào)度平臺服務(wù)器;數(shù)據(jù)倉庫服務(wù)器包括任務(wù)配置存儲器、數(shù)據(jù)倉庫數(shù)據(jù)存儲器、ETL任務(wù)處理器、執(zhí)行記錄存儲器,ETL任務(wù)處理器與數(shù)據(jù)倉庫數(shù)據(jù)存儲器和執(zhí)行記錄存儲器相連;ETL調(diào)度監(jiān)控服務(wù)器包括任務(wù)執(zhí)行監(jiān)控處理器、任務(wù)異常信息存儲器、異常信息發(fā)送器,任務(wù)異常信息存儲器與任務(wù)執(zhí)行監(jiān)控處理器和異常信息發(fā)送器相連;ETL調(diào)度平臺服務(wù)器包括啟動判斷處理器、任務(wù)啟動處理器,啟動判斷處理器與任務(wù)啟動處理器相連;其中,數(shù)據(jù)倉庫服務(wù)器的ETL任務(wù)處理器與業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服務(wù)器和ETL調(diào)度平臺服務(wù)器的任務(wù)啟動處理器相連,ETL調(diào)度平臺服務(wù)器的啟動判斷處理器分別與數(shù)據(jù)倉庫服務(wù)器的任務(wù)配置存儲器、執(zhí)行記錄存儲器、以及ETL調(diào)度監(jiān)控服務(wù)器的異常信息發(fā)送器相連,數(shù)據(jù)倉庫服務(wù)器的執(zhí)行記錄存儲器與ETL調(diào)度監(jiān)控服務(wù)器的任務(wù)執(zhí)行監(jiān)控處理器相連。
2.根據(jù)權(quán)利要求1所述的一種糾錯重啟以及自動判斷啟動的ETL調(diào)度系統(tǒng),其特征在于,所述的啟動判斷處理器包括任務(wù)配置信息抽取單元、配置信息處理單元、任務(wù)執(zhí)行信息抽取單元、任務(wù)執(zhí)行標(biāo)志計(jì)算單元、任務(wù)標(biāo)志發(fā)送單元,其中配置信息處理單元與任務(wù)配置信息抽取單元、任務(wù)執(zhí)行信息抽取單元、任務(wù)執(zhí)行標(biāo)志計(jì)算單元相連,任務(wù)執(zhí)行標(biāo)志計(jì)算單元分別與配置信息處理單元、任務(wù)執(zhí)行信息抽取單元、任務(wù)標(biāo)志發(fā)送單元相連。
3.一種糾錯重啟以及自動判斷啟動的ETL調(diào)度方法,其特征在于,包括以下步驟 步驟一安排任務(wù)、子任務(wù)的執(zhí)行順序,配置子任務(wù)之間的關(guān)聯(lián)關(guān)系,把任務(wù)執(zhí)行的先后順序,任務(wù)包含的子任務(wù),子任務(wù)執(zhí)行的先后順序,子任務(wù)之間的關(guān)系保存在數(shù)據(jù)倉庫服務(wù)器的任務(wù)配置存儲器中,且每個子任務(wù)對應(yīng)數(shù)據(jù)倉庫中的一張表,根據(jù)業(yè)務(wù)需要來安排任務(wù)在執(zhí)行時間上的先后順序,安排任務(wù)所包含的子任務(wù)的執(zhí)行順序時,子任務(wù)采用以下原則進(jìn)行排序 (O當(dāng)一個子任務(wù)與其它子任務(wù)之間具有關(guān)聯(lián)關(guān)系時,必須在一個或者若干個前置子任務(wù)成功執(zhí)行之后才能執(zhí)行該子任務(wù); (2)在此基礎(chǔ)上,按照子任務(wù)的重要程度進(jìn)行排序,對業(yè)務(wù)影響較大的子任務(wù)優(yōu)先執(zhí)行; (3)最后根據(jù)子任務(wù)執(zhí)行的時間長度進(jìn)行排序,執(zhí)行時間較短的子任務(wù)優(yōu)先執(zhí)行; 步驟二 由啟動判斷處理器從任務(wù)配置存儲器讀取待執(zhí)行子任務(wù)及其前置子任務(wù)信息;由啟動判斷處理器從執(zhí)行記錄存儲器中讀取待執(zhí)行子任務(wù)及其前置子任務(wù)最近一次成功執(zhí)行的結(jié)束時間;根據(jù)這些信息,通過啟動判斷處理器的計(jì)算,得出待執(zhí)行子任務(wù)的執(zhí)行標(biāo)志,待執(zhí)行子任務(wù)執(zhí)行標(biāo)志生成流程如下 (1)通過任務(wù)配置信息抽取單元,從任務(wù)配置存儲器獲取任務(wù)配置信息,通過配置信息處理單元獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置子任務(wù)的信息,將這些信息發(fā)送到任務(wù)執(zhí)行標(biāo)志計(jì)算單元; (2)任務(wù)執(zhí)行信息抽取單元通過配置信息處理單元獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置子任務(wù)的信息,再從執(zhí)行記錄存儲器獲取當(dāng)前待執(zhí)行的子任務(wù)及其前置子任務(wù)最近一次成功執(zhí)行的結(jié)束時間; 若最近一次成功執(zhí)行的結(jié)束時間不存在,則表明當(dāng)前子任務(wù)是第一次執(zhí)行,直接得出“可執(zhí)行”標(biāo)志;(3)任務(wù)執(zhí)行標(biāo)志計(jì)算單元計(jì)算出待執(zhí)行子任務(wù)所對應(yīng)的所有前置子任務(wù)中最近一次成功執(zhí)行的結(jié)束時間中的最早值,將這個最早值與待執(zhí)行子任務(wù)的最后一次成功執(zhí)行結(jié)束時間進(jìn)行對比,對比方法如下 這個最早值若晚于待執(zhí)行子任務(wù)的最后一次成功執(zhí)行結(jié)束時間,則表明待執(zhí)行子任務(wù)可以執(zhí)行,返回“可執(zhí)行”標(biāo)志; 這個最早值若早于待執(zhí)行子任務(wù)的最后一次成功執(zhí)行結(jié)束時間,則表明待執(zhí)行子任務(wù)的前置子任務(wù)中存在著執(zhí)行異常的情況,返回“不可執(zhí)行”標(biāo)志; 步驟三將啟動判斷處理器中任務(wù)標(biāo)志發(fā)送單元的執(zhí)行標(biāo)志結(jié)果發(fā)送到任務(wù)啟動處理器;任務(wù)啟動處理器分以下兩種情況 若任務(wù)啟動處理器獲取“可執(zhí)行”標(biāo)志后,將啟動指令發(fā)送至數(shù)據(jù)倉庫服務(wù)器的ETL任務(wù)處理器中,繼續(xù)執(zhí)行步驟四; 若任務(wù)啟動處理器獲取“不可執(zhí)行”標(biāo)志后,不進(jìn)行動作,跳至步驟二 ; 步驟四ETL任務(wù)處理器獲取啟動指令開始執(zhí)行相應(yīng)的子任務(wù);SETL任務(wù)處理器執(zhí)行相應(yīng)的子任務(wù)未發(fā)生異常,繼續(xù)執(zhí)行步驟五;若ETL任務(wù)處理器執(zhí)行相應(yīng)的子任務(wù)發(fā)生異常而被終止,直接跳到步驟八; 步驟五執(zhí)行記錄存儲器在子任務(wù)開始執(zhí)行時,記錄該子任務(wù)的名稱,開始時間、把子任務(wù)設(shè)置為“fail ”狀態(tài),表示此任務(wù)還未成功完成,執(zhí)行記錄存儲器在子任務(wù)成功執(zhí)行結(jié)束時,記錄子任務(wù)結(jié)束時間,以及更新數(shù)據(jù)量等信息,把此任務(wù)設(shè)置為“success”狀態(tài),表示此任務(wù)還成功完成; 步驟六任務(wù)執(zhí)行監(jiān)控處理器讀取執(zhí)行記錄存儲器中的子任務(wù)執(zhí)行情況信息,以便于系統(tǒng)管理員監(jiān)控; 步驟七如果任務(wù)配置存儲器中所有任務(wù)還未全部執(zhí)行,則跳至步驟二 ;如果任務(wù)配置存儲器中所有任務(wù)都已執(zhí)行,則跳至步驟十三; 步驟八執(zhí)行記錄存儲器記錄該子任務(wù)的狀態(tài)信息,包括開始執(zhí)行時間、異常終止時間、運(yùn)行狀態(tài)等; 步驟九任務(wù)執(zhí)行監(jiān)控處理器從執(zhí)行記錄存儲器中獲取任務(wù)執(zhí)行情況信息,并把該異常子任務(wù)的信息放置到任務(wù)異常信息存儲器中保存,同時對這個異常子任務(wù)信息的保存次數(shù)增加一次; 步驟十二由于前置任務(wù)發(fā)生異常,將不執(zhí)行與其具有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù),跳至步驟七; 步驟十三異常信息發(fā)送器依照執(zhí)行的先后順序從任務(wù)異常信息 存儲器中讀取發(fā)生異常問題的子任務(wù)信息,并把它發(fā)送給啟動判斷處理器; 步驟十四啟動判斷處理器從任務(wù)配置存儲器中讀取這個異常子任務(wù)的前置子任務(wù),如果這個異常子任務(wù)不存在前置子任務(wù),那么發(fā)送“可執(zhí)行”指令給任務(wù)啟動處理器;如果這個異常子任務(wù)存在前置子任務(wù),則需要從執(zhí)行記錄存儲器讀取這個前置子任務(wù)的執(zhí)行狀態(tài),如果判斷這個前置子任務(wù)的執(zhí)行狀態(tài)是成功的,那么啟動判斷處理器發(fā)送“可執(zhí)行”指令給任務(wù)啟動處理器;否則,啟動判斷處理器發(fā)送“不可執(zhí)行”指令給任務(wù)啟動處理器;步驟十五任務(wù)啟動處理器接收到“可執(zhí)行”執(zhí)行標(biāo)志結(jié)果,將啟動指令發(fā)送至數(shù)據(jù)倉庫服務(wù)器的ETL任務(wù)處理器中;步驟十六ETL任務(wù)處理器開始重新執(zhí)行相應(yīng)的異常子任務(wù); 步驟十七執(zhí)行記錄存儲器在此異常子任務(wù)開始執(zhí)行時,記錄此異常子任務(wù)的名稱,開始時間、把此任務(wù)設(shè)置為“fail”狀態(tài),表示此子任務(wù)還未成功完成;執(zhí)行記錄存儲器在此子任務(wù)成功執(zhí)行結(jié)束時,記錄此子任務(wù)結(jié)束時間、把此子任務(wù)設(shè)置為“success”狀態(tài),表示此子任務(wù)成功完成,以及更新數(shù)據(jù)量等信息;如果這個異常子任務(wù)在這次執(zhí)行過程中還是發(fā)生了異常,則把這個異常子任務(wù)信息通過任務(wù)執(zhí)行監(jiān)控處理器仍然保存到任務(wù)異常信息存儲器中,同時對這個異常子任務(wù)信息的保存次數(shù)加I ; 步驟十八這個異常子任務(wù)成功執(zhí)行后,啟動判斷處理器從任務(wù)配置存儲器中讀取與這個子任務(wù)有關(guān)聯(lián)關(guān)系的后續(xù)子任務(wù),由于這個子任務(wù)已經(jīng)被成功執(zhí)行,那么計(jì)算后續(xù)子任務(wù)得到“可執(zhí)行”的執(zhí)行標(biāo)志結(jié)果,把“可執(zhí)行”的執(zhí)行標(biāo)志結(jié)果傳遞給任務(wù)啟動處理器,進(jìn)而通過ETL任務(wù)處理器執(zhí)行這些后續(xù)子任務(wù);如果這些后續(xù)子任務(wù)在執(zhí)行過程中發(fā)生異常,則把異常子任務(wù)信息通過任務(wù)執(zhí)行監(jiān)控處理器仍然保存到任務(wù)異常信息存儲器中,同時對此異常子任務(wù)信息的保存次數(shù)增加I ; 步驟十九當(dāng)這個異常子任務(wù)所關(guān)聯(lián)的所有后續(xù)任務(wù)都執(zhí)行后,啟動判斷處理器接收異常信息發(fā)送器發(fā)送的異常子任務(wù),開始處理新的異常子任務(wù); 步驟二十當(dāng)所有的異常子任務(wù)都處理后,異常信息發(fā)送器開始把仍存在的異常子任務(wù)信息發(fā)送給啟動判斷處理器,開始新一輪處理過程; 步驟二十一如果某個異常子任務(wù)經(jīng)過3輪處理后還 是發(fā)生異常,那么對這個異常子任務(wù)不再執(zhí)行,把這個異常子任務(wù)的信息發(fā)送給系統(tǒng)管理員來進(jìn)行緊急處理。
全文摘要
本發(fā)明公開了一種糾錯重啟以及自動判斷啟動的ETL調(diào)度方法及系統(tǒng),本發(fā)明的系統(tǒng)結(jié)構(gòu)包括業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫服務(wù)器、數(shù)據(jù)倉庫服務(wù)器、ETL調(diào)度監(jiān)控服務(wù)器、ETL調(diào)度平臺服務(wù)器,本發(fā)明的方法是將數(shù)據(jù)倉庫ETL任務(wù)分為若干主題任務(wù),每個主題任務(wù)包含若干子任務(wù),按預(yù)設(shè)執(zhí)行順序配置信息以及前置關(guān)聯(lián)子任務(wù)成功執(zhí)行完成時間自動判斷,執(zhí)行后續(xù)子任務(wù),當(dāng)子任務(wù)執(zhí)行發(fā)生異常后,根據(jù)子任務(wù)關(guān)聯(lián)關(guān)系停止后續(xù)關(guān)聯(lián)子任務(wù)的執(zhí)行,并記錄異常子任務(wù),以多次自動重啟的方式,只對異常子任務(wù)及相關(guān)聯(lián)后續(xù)子任務(wù)進(jìn)行處理;本發(fā)明解決ETL任務(wù)調(diào)度中由于前置子任務(wù)出錯時而后續(xù)子任務(wù)依然執(zhí)行的問題,提高任務(wù)執(zhí)行效率,減少人工干預(yù),減少運(yùn)行損耗。
文檔編號G06F9/48GK103034554SQ20121058514
公開日2013年4月10日 申請日期2012年12月30日 優(yōu)先權(quán)日2012年12月30日
發(fā)明者何昌桃, 黃建鵬, 徐曉冬, 陳靜 申請人:焦點(diǎn)科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
竹北市| 德惠市| 吉安县| 北宁市| 栾城县| 新巴尔虎右旗| 个旧市| 蕲春县| 连城县| 罗定市| 泗阳县| 蕲春县| 三门峡市| 凤山县| 石首市| 桓仁| 蒙阴县| 莎车县| 都江堰市| 茂名市| 阿尔山市| 合江县| 莱西市| 襄城县| 申扎县| 左权县| 边坝县| 冀州市| 贺兰县| 咸宁市| 新昌县| 呼图壁县| 奉节县| 肇源县| 饶平县| 甘泉县| 新田县| 衡南县| 建昌县| 新野县| 莒南县|