午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種etl調(diào)度的實現(xiàn)方法及裝置的制作方法

文檔序號:6582409閱讀:225來源:國知局
專利名稱:一種etl調(diào)度的實現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域
本申請涉及計算機領(lǐng)域,特別涉及一種流程控制方法及裝置。
背景技術(shù)
數(shù)據(jù)倉庫(DataWarehouse, DW)是一個面向主題的、集成的、相對穩(wěn)定 的、反映歷史變化的數(shù)據(jù)集合,用于支持管理決策。數(shù)據(jù)倉庫是一個獨立的數(shù) 才居多不境,而數(shù)才居抽取、壽爭4吳和力口載(Extraction國Transformation-Loading, ETL) 是構(gòu)建數(shù)據(jù)倉庫的重要一環(huán)。
ETL用于將分布的、異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)(例如,關(guān)系數(shù)據(jù)、平面數(shù)據(jù)文 件等)抽取到臨時中間層后進行清洗、轉(zhuǎn)換和集成,最后按照預(yù)先定義好的數(shù)
據(jù)倉庫模型,將數(shù)據(jù)加載到數(shù)據(jù)倉庫中,使構(gòu)建的數(shù)據(jù)倉庫成為聯(lián)機分析處理 和數(shù)據(jù)挖掘的;S^。在技術(shù)上,ETL主要涉及到關(guān)聯(lián)、轉(zhuǎn)換、增量、調(diào)度和監(jiān) 控等幾個方面。通常,數(shù)據(jù)倉庫中的數(shù)據(jù)不要求與聯(lián)機事務(wù)處理系統(tǒng)中的數(shù)據(jù) 實時同步,因此,ETL可以定時進行,^旦多個ETL的才喿作時間、順序和成敗 對數(shù)據(jù)倉庫中數(shù)據(jù)的有效性有著至關(guān)重要的影響,從而直接影響到聯(lián)機分析處 理結(jié)果和數(shù)據(jù)挖掘結(jié)果的質(zhì)量。
目前,構(gòu)建數(shù)據(jù)倉庫時所執(zhí)行的ETL大多使用基于Java程序語言的事 務(wù)管理系統(tǒng)(Java Business Process Management, JBPM)引擎實現(xiàn)程序代碼的 流程化控制,所謂JBPM引擎,是一種基于J2EE的輕量級工作流管理系統(tǒng), 它作為企業(yè)級的流程引擎,在外部還拓展了如身份組件、兼容性數(shù)據(jù)包、任務(wù) 管理等模塊。JBPM引擎在運行時,以令牌(即認證權(quán)限,如用戶名、密碼等) 作為媒介在節(jié)點之間依次傳遞,令牌到達哪個節(jié)點,哪個節(jié)點所映射的程序就 開始執(zhí)行,程序執(zhí)行完成后再將令牌向下傳遞。令牌在傳遞過程中可以被克隆 成兩份分別傳送給兩個具有獨立任務(wù)程序的節(jié)點,這兩個節(jié)點即可并行執(zhí)行相應(yīng)的任務(wù)程序;如果有一節(jié)點執(zhí)行的任務(wù)程序依賴于上述兩個任務(wù)程序的執(zhí)行 結(jié)果,則該節(jié)點需要收集到用于分別表示上述兩個任務(wù)程序執(zhí)行完畢的兩個令 牌后,才能開始執(zhí)4于相應(yīng)的任務(wù)程序。
JBPM引擎并不是針對ETL的流程調(diào)度所設(shè)計的流程引擎,因此,使用 JBPM引擎對ETL進行流程調(diào)度管理,會降低ETL的執(zhí)行效率,例如
現(xiàn)有的JBPM引擎是一個開放式的流程引擎,其不僅僅應(yīng)用于ETL領(lǐng)域,也 應(yīng)用于OA-辦公自動化、CRM-客戶關(guān)系管理等系統(tǒng),因此,JBPM引擎中嵌 套了許多與ETL的流程調(diào)度管理無關(guān)的功能,如swimlane-泳道、安全認證管 理、消息服務(wù)等功能。并且JBPM引擎內(nèi)核采用令牌式依次傳遞方式,不能適 應(yīng)'任務(wù)回退,、'任務(wù)跳躍前進,等ETL流程調(diào)度中的實際應(yīng)用需求。
另一方面,JBPM引擎所采用的流程描述語言(JPDL)不能描述父子流程 間的依賴關(guān)系,只能靠程序員對JAVA程序中的節(jié)點類進行擴展來實現(xiàn)相似的功 能,這樣,在任務(wù)程序執(zhí)行過程中便需要反復(fù)通過擴展類來創(chuàng)建子流程,從而 嚴重降低了父流程的執(zhí)行效率。同時在JBPM流程設(shè)計器中也不提供整體ETL 調(diào)度流程的可視化管理,從而增加了流程設(shè)計和后期維護的技術(shù)難度。
本申請實施例中,在執(zhí)行ETL調(diào)度包含的若干任務(wù)流程時,針對任意一個 任務(wù)流程,根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方 式、執(zhí)行順序和相互之間的依賴關(guān)系;按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子 任務(wù)流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少 一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí) 行依賴所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。這樣,便使 各任務(wù)流程內(nèi)的子任務(wù)流程之間的業(yè)務(wù)邏輯清晰、業(yè)務(wù)功能明確,從而有效提 升了 ETL調(diào)度流程的執(zhí)行效率。

發(fā)明內(nèi)容
本申請實施例提供一種ETL的流程調(diào)度方法及裝置,用于提高ETL調(diào)度流程的執(zhí)行效率。
本申請實施例提供的具體技術(shù)方案如下
一種ETL調(diào)度的實現(xiàn)方法,ETL調(diào)度包含若干任務(wù)流程,每一任務(wù)流程 包含若干子任務(wù)流程,其中,針對一個任務(wù)流程,包括
根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí) 行順序和相互之間的依賴關(guān)系;
按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按照設(shè)定順序執(zhí)行 已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根 據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并 且已被觸發(fā)的其他子任務(wù)流程。
一種用于執(zhí)行ETL調(diào)度的裝置,包括
存儲單元,用于保存配置文件,該配置文件至少包含歸屬于ETL調(diào)度的 若干任務(wù)流程內(nèi)各子任務(wù)流程的觸發(fā)方式和相互之間的依賴關(guān)系;
確定單元,用于根據(jù)所述配置文件,確定某一任務(wù)流程內(nèi)包含的各子任務(wù) 流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;
處理單元,用于按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按 照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已 執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一 個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
本發(fā)明實施例中,提供了嵌套式ETL調(diào)度實現(xiàn)方法,即在執(zhí)行ETL調(diào)度 包含的若干任務(wù)流程時,針對任意一個任務(wù)流程,根據(jù)預(yù)設(shè)的配置文件確定任 務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系; 按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按照設(shè)定順序執(zhí)行已被 觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所 述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并且已 被觸發(fā)的其他子任務(wù)流程。這樣,便使各任務(wù)流程內(nèi)的子任務(wù)流程之間的業(yè)務(wù)邏輯清晰、業(yè)務(wù)功能明確,從而有效提升了 ETL調(diào)度流程的執(zhí)行效率。本發(fā) 明同時公開了 一種用于執(zhí)行ETL調(diào)度的裝置。


圖1為本申請實施例中ETL調(diào)度所包含的任務(wù)流程示意圖2為本申請實施例中任務(wù)流程組成結(jié)構(gòu)示意圖3A為本申請實施例中ETL調(diào)度服務(wù)器功能結(jié)構(gòu)圖3B和圖3C為本申請實施例中ETL調(diào)度服務(wù)器內(nèi)處理單元功能結(jié)構(gòu)圖4為本申請實施例中任務(wù)流程1設(shè)置方式示意圖5為本申請實施例中ETL調(diào)度服務(wù)器執(zhí)行任務(wù)流程的第 一種方式流程
圖6為本申請實施例中ETL調(diào)度服務(wù)器執(zhí)行任務(wù)流程的第二種方式流程
圖7為本申請實施例中ETL調(diào)度服務(wù)器。
具體實施例方式
在構(gòu)建數(shù)據(jù)倉庫時,為了提高數(shù)據(jù)抽取、轉(zhuǎn)換和加載 (Extraction-Transformation-Loading, ETL)調(diào)度流程的執(zhí)行效率,本發(fā)明實施 例中,針對ETL調(diào)度包含的若干任務(wù)流程內(nèi)任意一個任務(wù)流程,執(zhí)行以下操 作根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí) 行順序和相互之間的依賴關(guān)系;按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流 程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子 任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴 所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
本申請實施例中,ETL調(diào)度模型中定義了任務(wù)流程、子任務(wù)流程和程序流 程的概念。參閱圖l所示,ETL調(diào)度工作是由若干任務(wù)流程組成,其中,各任務(wù)流程 按照設(shè)定的依賴關(guān)系運行,任務(wù)流程之間可以串行,也可以并行。
參閱圖2所示,任務(wù)流程是ETL調(diào)度的基本單元,由一個或多個子任務(wù) 流程(以下稱為任務(wù)塊)組成,任務(wù)塊用于描述一個業(yè)務(wù)的執(zhí)行目的, 一個獨 立的任務(wù)塊包含一個或多個程序流程(圖2中僅以一個任務(wù)塊包含一個程序流 程為例),多個任務(wù)塊以邏輯依賴關(guān)系組成的流程就是任務(wù)流程。例如,參閱 圖2所示,任務(wù)l、任務(wù)2、任務(wù)3和任務(wù)4這四個任務(wù)塊組成了任務(wù)流程1。
如圖2所示,程序流程由 一個或多個獨立的程序塊以邏輯依賴的形式組成, 每一個程序塊必須確保事務(wù)的原子性、獨立性、 一致性和持續(xù)性,即每一個程 度塊為一個原子級進程。程序塊可以是shdl腳本、java程序、omcle存儲過程、 SQL塊等等; 一個任務(wù)塊內(nèi)的一個或多個程序流程是完成一個任務(wù)的具體實現(xiàn) 方法和步驟。例如,參閱圖l所示,程序ll、程序12、程序13和程序14這四個 程序塊組成一個程序流程以完成任務(wù)1 。
本實施例中,以一個任務(wù)塊內(nèi)包含一個程序流程為例進行具體i兌明。
任務(wù)塊內(nèi)包含的程序流程中第一個程序塊的開始運行表示任務(wù)塊開始執(zhí) 行,而最后一個程序塊的結(jié)束運行則表示任務(wù)塊結(jié)束執(zhí)行。例如,如圖2所示, 程序11開始運行則表示任務(wù)1開始執(zhí)行,而程序14結(jié)束執(zhí)行則表示任務(wù)1結(jié) 束執(zhí)行。
本實施例中,各任務(wù)塊的執(zhí)行過程分為觸發(fā)和運行兩個階段,任務(wù)的觸發(fā) 包含時間觸發(fā)和事件觸發(fā)兩種,觸發(fā)階段只是生成任務(wù)實例,但當(dāng)前任務(wù)實例 必須等待其前置任務(wù)運行完成后才能運行。
下面以任務(wù)塊由時間觸發(fā)為例進行說明。本實施例中,ETL調(diào)度流程中的 各任務(wù)塊可以按照-沒定的時間點自行觸發(fā),例如,每天上午8: 00、每周周一 中午12: 00、或者每月第一天的下午13: 00;也可以按照設(shè)定的循環(huán)周期自行 觸發(fā),例如,每隔24小時觸發(fā)一次,每隔一周觸發(fā)一次,或者每隔一個月觸發(fā) 一次等等。在同一任務(wù)流程中可以包含執(zhí)4亍間隔周期不同的兩個4壬務(wù),例如,如圖l
所示,任務(wù)1為任務(wù)2和任務(wù)3的前置任務(wù)且設(shè)定每月執(zhí)行一次,而任務(wù)2和任務(wù) 3則設(shè)定為每天執(zhí)行一次,那么,任務(wù)2和任務(wù)3在每次執(zhí)行之前都需要判斷任 務(wù)l在當(dāng)月是否已執(zhí)行完成,確定任務(wù)l已在當(dāng)月執(zhí)行完成后,再執(zhí)行后續(xù)的操 作。這樣設(shè)計的好處是減小了任務(wù)和任務(wù)流程的緊耦合, 一個任務(wù)既能表示任 務(wù)流程中的某一環(huán)節(jié)也可以獨立重復(fù)調(diào)用,而循環(huán)周期的定義可以令整個任務(wù) 流程跳過不需要重復(fù)執(zhí)行的任務(wù),提高執(zhí)行性能。
下面結(jié)合附圖對本申請優(yōu)選的實施方式進行詳細說明。
參閱圖3A所示,本實施例,用于執(zhí)行ETL調(diào)度流程的ETL調(diào)度服務(wù)器包括 存儲單元300、確定單元301和處理單元302,其中,
存儲單元300,用于保存配置文件,該配置文件至少包含歸屬于ETL調(diào)度 的若千任務(wù)流程內(nèi)各子任務(wù)流程的觸發(fā)方式和相互之間的依賴關(guān)系;
確定單元301,用于根據(jù)所述配置文件,確定某一任務(wù)流程內(nèi)包含的各子 任務(wù)流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;
處理單元302,用于按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并 且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流 程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至 少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
在上述ETL調(diào)度服務(wù)器內(nèi),存儲單元300還用于保存任務(wù)流程包含的各 任務(wù)塊的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系,以及程序流程包含的各 程序塊的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;如圖3所示,本申請實 施例中,ETL調(diào)度服務(wù)器內(nèi)還包括一監(jiān)測單元303,用于對各任務(wù)流程、各子 任務(wù)流程、各程序流程和各程序塊的執(zhí)行情況進行監(jiān)測,并將監(jiān)測結(jié)果以郵件 或短信方式通知有斥又用戶。
參閱圖3B所示,處理單元302進一步包括第一處理子單元3020、第二處 理子單元3021和第三處理子單元3022,其中,第一處理子單元3020,用于在執(zhí)行某任務(wù)流程時,按照設(shè)定的觸發(fā)方式依 次觸發(fā)相應(yīng)的任務(wù)塊(即相應(yīng)的子任務(wù)流程),并且按照設(shè)定順序執(zhí)行已被觸 發(fā)的任務(wù)塊,其中,在確定至少一個任務(wù)塊已執(zhí)行完畢時,根據(jù)所述任務(wù)塊之 間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個任務(wù)塊并且已被觸發(fā)的其他任務(wù) 塊。
第二處理子單元3021,用于在執(zhí)行某任務(wù)塊(即某一子任務(wù)流程)時,按 照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的程序流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā) 的程序流程,其中,在確定至少一個程序流程已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程 序流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序流程并且已被觸發(fā)的 其他程序流程。
第三處理子單元3022,用于在執(zhí)行某程序流程時,按照設(shè)定的觸發(fā)方式依 次觸發(fā)相應(yīng)的程序塊,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序塊,其中,在確 定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系,開始 執(zhí)行依賴所述至少一個程序塊并且已被觸發(fā)的其他程序塊,所迷程序塊為原子 級進程。
或者,
參閱圖3C所示,若某一任務(wù)流程由單一程序流程組成,即可以看作直接 由若干程序塊組成,則處理單元302可以通過內(nèi)部設(shè)置的處理子單元對上述任 務(wù)流程包含的若干程序塊進行處理,該處理子單元用于在執(zhí)行某程序流程時,
行已被觸發(fā)的程序塊,其中,在確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè) 的各程序塊之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序塊并且已被觸發(fā) 的其他程序塊,所述程序塊為原子級進程。
基于上述ETL調(diào)度服務(wù)器,本實施例中,以圖l所示的任務(wù)流程l為例進行 說明。參閱圖2所示,在任務(wù)流程l中包括四個待執(zhí)行的任務(wù),分別為任務(wù)l、 任務(wù)2、任務(wù)3和任務(wù)4,其依賴關(guān)系為任務(wù)2和任務(wù)3的觸發(fā)均依賴于任務(wù)1的運行結(jié)果,任務(wù)2和任務(wù)3為并行關(guān)系,任務(wù)4的觸發(fā)依賴于任務(wù)2和任務(wù)3的運 行結(jié)果;如圖4所示,假設(shè)任務(wù)1設(shè)定在每天03: OO觸發(fā),任務(wù)2設(shè)定在每月13 號的4: OO觸發(fā),任務(wù)3設(shè)定在每天04: OO觸發(fā)、任務(wù)4設(shè)定在每天05: OO觸發(fā), 那么,參閱圖4和圖5所示,假設(shè)執(zhí)行日期為某月12日,則ETL調(diào)度服務(wù)器執(zhí)行 任務(wù)流程l的第一種方式的詳細流程如下
步驟500:在時間到達03: OO時,觸發(fā)任務(wù)l并開始運行,任務(wù)l的運行標 志著任務(wù)流程l的啟動。
假設(shè)本申請涉及的內(nèi)容是關(guān)于一個網(wǎng)絡(luò)支付系統(tǒng),在實際應(yīng)用中,用戶在 使用網(wǎng)絡(luò)支付系統(tǒng)時可能會存在使用信用卡進行違法套現(xiàn)的情形,本實施例可 以用于統(tǒng)計使用網(wǎng)絡(luò)支付系統(tǒng)的用戶行為,以便對用戶違法套現(xiàn)的行為加以識 別,其中,任務(wù)流程l所執(zhí)行的內(nèi)容可以有很多種,例如任務(wù)流程l為"套 現(xiàn)數(shù)據(jù)提取",而任務(wù)l為"統(tǒng)計前一個月卡信息,,,任務(wù)2為"統(tǒng)計簽約商戶 列表"、任務(wù)3為"統(tǒng)計白名單列表",任務(wù)4為"統(tǒng)計過濾后貨記卡用戶數(shù)" 等等,具體任務(wù)流程的內(nèi)容可以根據(jù)具體環(huán)境而設(shè)定,上述內(nèi)容僅為舉例。
步驟510:在時間到達04: OO時,確定當(dāng)天日期不是本月13號后,跳過任 務(wù)2不運行,同時,觸發(fā)任務(wù)3但并不運行,因為任務(wù)3是任務(wù)1的后置任務(wù),任 務(wù)l的運行結(jié)果尚未獲得,任務(wù)3觸發(fā)后不能夠馬上運行。
步驟520:在時間到達04: 35時,任務(wù)l運行完畢,獲得任務(wù)l的運行結(jié)果, 并開始運行任務(wù)3。
步驟530:在時間到達04: 50時,任務(wù)3運行完畢,獲得任務(wù)3的運行結(jié)果。 步驟540:在時間到達05: OO時,觸發(fā)任務(wù)4并開始運行。 本實施例中,由于任務(wù)3在任務(wù)4觸發(fā)之前便已運行完畢,因此任務(wù)4在觸 發(fā)后可以馬上運行,并且由于任務(wù)2在當(dāng)前流程中被跳過,所以任務(wù)4雖然為任 務(wù)2的后置任務(wù),但在當(dāng)前流程中可以忽略任務(wù)2的運行結(jié)果,僅根據(jù)任務(wù)3的 運行結(jié)果即可開始運行。另一方面,如何任務(wù)4觸發(fā)后,任務(wù)3尚未運行完畢,則任務(wù)4需要等到任 務(wù)3運行完畢,獲得任務(wù)3的運行結(jié)果后才能夠開始運行。
步驟550:在時間到達06: 15時,任務(wù)4運行完畢,這表示任務(wù)流程l已結(jié)束。
在上述步驟500-步驟550中,各任務(wù)是依靠設(shè)定的時間點觸發(fā)的,在實際 應(yīng)用中,還可以將各任務(wù)設(shè)置為依靠事件觸發(fā),例如在步驟500-550記載的 流程中,任意一任務(wù)流程發(fā)生異常時,ETL調(diào)度服務(wù)器內(nèi)設(shè)置的錯誤收集器會 自動調(diào)用綁定該異常情況,并調(diào)用處理該異常事件的任務(wù)。
另一種情況下,假設(shè)執(zhí)行日期為某月13號,那么,參閱圖6所示,ETL調(diào) 度服務(wù)器執(zhí)行任務(wù)流程1的第二種方式的詳細流程如下
步驟600:在時間到達03: OO時,觸發(fā)任務(wù)l并開始運行,任務(wù)l的運行標 志著任務(wù)流程l的啟動。
步驟610:在時間到達04: OO時,確定當(dāng)天日期是本月13號后,觸發(fā)任務(wù)2 和任務(wù)3但不運行,同時,觸發(fā)任務(wù)3但并不運行,因為任務(wù)2和任務(wù)3是任務(wù)1 的后置任務(wù),任務(wù)l的運行結(jié)杲尚未獲得,任務(wù)1和任務(wù)3觸發(fā)后不能夠馬上運 行。
步驟620:在時間到達04: 35時,任務(wù)l運行完畢,獲得任務(wù)l的運行結(jié)果, 并開始運行任務(wù)2和任務(wù)3。
步驟630:在時間到達04: 50時,任務(wù)2和任務(wù)3運行完畢,獲得任務(wù)2和任 務(wù)3的運行結(jié)果。
本實施例中,為了便于說明,假設(shè)任務(wù)2和任務(wù)3在同一時間點運行完畢。 步驟640:在時間到達05: OO時,觸發(fā)任務(wù)4并開始運行。 本實施例中,由于任務(wù)2和任務(wù)3在任務(wù)4觸發(fā)之前已運行完畢,因此任務(wù)4 觸發(fā)后可直4妄運4亍。
步驟650:在時間到達06: 15時,任務(wù)4運行完畢,這表示任務(wù)流程l已結(jié)束。同理,在上述步驟600-步驟650中,各任務(wù)是依靠設(shè)定的時間點觸發(fā)的, 在實際應(yīng)用中,同樣可以將各任務(wù)設(shè)置為依靠事件觸發(fā),在此不再贅述。
在上述實施例中,每個任務(wù)塊內(nèi)包含的各程序流程也需要按照設(shè)定的依賴 關(guān)系逐個運行,如,在執(zhí)行某個包含若干程序流程的任務(wù)塊時,按照設(shè)定的觸 發(fā)方式依次觸發(fā)相應(yīng)的程序流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序流 程,其中,在確定至少一個程序流程已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序流程之 間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序流程并且已被觸發(fā)的其他程序 流程;而彼此間不存在依賴關(guān)系的程序流程可以并行觸發(fā),在此亦不再贅述。
進一步地,在執(zhí)行某個包含若干程序塊的程序流程時,按照設(shè)定的觸發(fā)方 式依次觸發(fā)相應(yīng)的程序塊,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序塊,其中, 在確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系, 開始執(zhí)行依賴所述至少 一個程序塊并且已被觸發(fā)的其他程序塊,而彼此間不存 在依賴關(guān)系的程序塊可以并行觸發(fā),所述程序塊為原子級進程,在此亦不再贅 述。下面仍以任務(wù)1為例進行說明。如圖1所示,假設(shè)任務(wù)1內(nèi)包含有四個程 序塊,分別為程序11、程序12、程序13和程序14,其依賴關(guān)系為程序2 和程序3的觸發(fā)均依賴于程序1的運行結(jié)杲,程序2和程序3為并行關(guān)系,程 序4的觸發(fā)依賴于程序2和程序3的運行結(jié)果;那么,參閱圖1所示,在任務(wù) 1開始運行后,首先觸發(fā)程序1,程序1運行結(jié)束后,程序2和程序3若已#皮 觸發(fā),則根據(jù)程序1的運行結(jié)果同步啟動運行,而程序4在程序2和程序3運 行完畢后,若已被觸發(fā),則根據(jù)程序2和程序3的運行結(jié)果開始運行直至運行 完畢,程序4的結(jié)束運行也表示任務(wù)1的結(jié)束。
基于上述技術(shù)方案,本申請實施例中,通過ETL調(diào)度服務(wù)器對外提供用戶 接口 ,維護人員可以遠程訪問ETL調(diào)度服務(wù)器,并通過ETL調(diào)度服務(wù)器提供的 基于WEB頁面的操作界面對ETL調(diào)度流程進行定義和日志管理。參閱圖7所示, 圖7中記栽了ETL調(diào)度流程運行狀態(tài)日志管理,維護人員可以通過可視的操作 界面對運行的程序塊、任務(wù)塊或整個任務(wù)流程進行重試、跳過、掛起等操作。也可以根據(jù)程序執(zhí);f亍的開始/結(jié)束/間隔時間判斷程序執(zhí)行性能,利用流程設(shè)計
器對程序流程進行不斷優(yōu)化調(diào)整。進一步地,可以在ETL調(diào)度服務(wù)器上配置消 息通知模式,在維護人員不在場的情況下,可以通過將程序塊、任務(wù)塊和整個 任務(wù)流程的運^f亍狀況通過短信、郵件等形式通知相關(guān)的維護人員。
綜上所述,本申請實施例采用嵌套式的ETL調(diào)度流程實現(xiàn)方法式,使各任 務(wù)流程內(nèi)的子任務(wù)流程之間、各任務(wù)塊之間、程序流程之間以及各程序塊之間 的業(yè)務(wù)邏輯清晰、業(yè)務(wù)功能明確,從而有效提升了ETL調(diào)度流程的執(zhí)行效率; 并且,由于采用了基于Web頁面的操作界面對ETL調(diào)度內(nèi)各任務(wù)流程、各子任 務(wù)流,各程序流程和各程序塊進行單獨的重做、掛起等操作,減小了各任務(wù)流 程、各子任務(wù)流,各程序流程和各程序塊之間的耦合性,從而降低了后期維護 管理工作的學(xué)習(xí)難度,節(jié)省了學(xué)習(xí)和維護成本。
顯然,本領(lǐng)域的技術(shù)人員可以對本申請中的實施例進行各種改動和變型而 不脫離本申請的精神和范圍。這樣,倘若本申請實施例中的這些修改和變型屬 于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請中的實施例也意圖包含 這些改動和變型在內(nèi)。
權(quán)利要求
1、一種ETL調(diào)度的實現(xiàn)方法,ETL調(diào)度包含若干任務(wù)流程,每一任務(wù)流程包含若干子任務(wù)流程,其特征在于,針對一個任務(wù)流程,包括根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
2、 如權(quán)利要求1所述的方法,其特征在于, 一個子任務(wù)流程包含至少一個程序流程。
3、 如權(quán)利要求2所述的方法,其特征在于,若一個子任務(wù)流程包含至少兩個程序流程,則在執(zhí)行該子任務(wù)流程時,按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的程序流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序流程,其中,在確定至少一個程序流程已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少 一個程序流程并且已被觸發(fā)的其他程序流程。
4、 如權(quán)利要求2或3所述的方法,其特征在于, 一個程序流程中包含至少一個程序塊,若一個程序流程中包含若干程序塊,則執(zhí)行一個程序流程時,按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的程序塊,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的程序塊,其中,在確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序塊并且已被觸發(fā)的其他程序塊,所述程序塊為原子級進程。
5、 如權(quán)利要求4所述的方法,其特征在于,通過基于Web頁面的操作界面對各任務(wù)流程、各子任務(wù)流程、各程序流程和各程序塊進行管理操作。
6、 如權(quán)利要求4所述的方法,其特征在于,對各任務(wù)流程、各子任務(wù)流程、各程序流程和各程序塊的執(zhí)行情況進行監(jiān)測,并將監(jiān)測結(jié)果以郵件或短信 方式通知有權(quán)用戶。
7、 一種用于執(zhí)行ETL調(diào)度的裝置,其特征在于,包括存儲單元,用于保存配置文件,該配置文件至少包含歸屬于ETL調(diào)度的 若干任務(wù)流程內(nèi)各子任務(wù)流程的觸發(fā)方式和相互之間的依賴關(guān)系;確定單元,用于根據(jù)所述配置文件,確定某一任務(wù)流程內(nèi)包含的各子任務(wù) 流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;處理單元,用于按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按 照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已 執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一 個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。
8、 如權(quán)利要求7所述的裝置,其特征在于,所述存儲單元還用于保存各 子任務(wù)流程包含的各程序流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系、 以及所述存儲單元進一步用于保存各程序流程包含的各程序塊的觸發(fā)方式、執(zhí) 行順序和相互之間的依賴關(guān)系,所述程序塊為原子級進程。
9、 如權(quán)利要求8所述的裝置,其特征在于,所述處理單元進一步包括 第一處理子單元,用于在執(zhí)行某任務(wù)流程時,按照存儲單元中所保存的觸發(fā)方式及順序依次觸發(fā)相應(yīng)的子任務(wù)流程,并且執(zhí)行已被觸發(fā)的子任務(wù)流程, 其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的 依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù) 流程;第二處理子單元,用于在執(zhí)行某一子任務(wù)流程時,^接照存儲單元中所保存 的觸發(fā)方式及順序依次觸發(fā)相應(yīng)的程序流程,并且執(zhí)行已被觸發(fā)的程序流程, 其中,在確定至少一個程序流程已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序流程之間的 依賴關(guān)系,開始執(zhí)行依賴所述至少一個程序流程并且已被觸發(fā)的其他程序流 程;第三處理子單元,用于在執(zhí)行某程序流程時,按照存儲單元中所保存的觸 發(fā)方式及順序依次觸發(fā)相應(yīng)的程序塊,并且執(zhí)行已被觸發(fā)的程序塊,其中,在 確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系,開 始執(zhí)行依賴所述至少 一個程序塊并且已被觸發(fā)的其他程序塊。
10、 如權(quán)利要求8所述的裝置,其特征在于,所述處理單元進一步包括處 理子單元,該處理子單元用于在執(zhí)行某程序流程時,按照存儲單元中所保存的 觸發(fā)方式及順序依次觸發(fā)相應(yīng)的程序塊,并且執(zhí)行已被觸發(fā)的程序塊,其中, 在確定至少一個程序塊已執(zhí)行完畢時,根據(jù)預(yù)設(shè)的各程序塊之間的依賴關(guān)系, 開始執(zhí)行依賴所述至少 一個程序塊并且已被觸發(fā)的其他程序塊。
11、 如權(quán)利要求7-IO所述的裝置,其特征在于,所述裝置還包括 用戶接口單元,用于向用戶提供基于Web頁面的操作界面,并通過該操作界面接收用戶對各任務(wù)流程、各子任務(wù)流程、各程序流程和各程序塊的管理操 作。
12、 如權(quán)利要求IO所述的裝置,其特征在于,所述裝置進一步包括 監(jiān)測單元,用于對各任務(wù)流程、各子任務(wù)流程、各程序流程和各程序塊的執(zhí)行情況進行監(jiān)測,并將監(jiān)測結(jié)果以郵件或短信方式通知有權(quán)用戶。
全文摘要
本申請公開了一種ETL調(diào)度的實現(xiàn)方法,該方法為在執(zhí)行ETL調(diào)度包含的若干任務(wù)流程時,針對任意一個任務(wù)流程,根據(jù)預(yù)設(shè)的配置文件確定任務(wù)流程內(nèi)包含的各子任務(wù)流程的觸發(fā)方式、執(zhí)行順序和相互之間的依賴關(guān)系;按照設(shè)定的觸發(fā)方式依次觸發(fā)相應(yīng)的子任務(wù)流程,并且按照設(shè)定順序執(zhí)行已被觸發(fā)的子任務(wù)流程,其中,在確定至少一個子任務(wù)流程已執(zhí)行完畢時,根據(jù)所述子任務(wù)流程之間的依賴關(guān)系,開始執(zhí)行依賴所述至少一個子任務(wù)流程并且已被觸發(fā)的其他子任務(wù)流程。這樣,便使各任務(wù)流程內(nèi)的子任務(wù)流程之間的業(yè)務(wù)邏輯清晰、業(yè)務(wù)功能明確,從而有效提升了ETL調(diào)度流程的執(zhí)行效率。本發(fā)明同時公開了一種用于執(zhí)行ETL調(diào)度的裝置。
文檔編號G06F17/30GK101567013SQ20091020327
公開日2009年10月28日 申請日期2009年6月2日 優(yōu)先權(quán)日2009年6月2日
發(fā)明者杰 蔣, 蔣萃林, 陳榮松 申請人:阿里巴巴集團控股有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1