專利名稱:一種基于etl的數(shù)據(jù)優(yōu)化方法及設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明關(guān)于數(shù)據(jù)處理技術(shù),特別是關(guān)于數(shù)據(jù)遷移轉(zhuǎn)換過(guò)程中的處理技術(shù),具體的講是一種基于ETL的數(shù)據(jù)優(yōu)化方法及設(shè)備。
背景技術(shù):
在企業(yè)信息化建設(shè)過(guò)程中,經(jīng)常涉及到對(duì)大量、分散、異構(gòu)的數(shù)據(jù)進(jìn)行處理,數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程(Extract-Transform-Load, ETL)是該過(guò)程中必不可少的一部分?,F(xiàn)有技術(shù)中主要有如下幾種方式來(lái)實(shí)現(xiàn)ETL過(guò)程 I、硬編碼硬編碼是通過(guò)高級(jí)語(yǔ)言(如C、C++)或腳本等編譯出的一個(gè)獨(dú)立運(yùn)行的程序或嵌入ETL框架運(yùn)行的動(dòng)態(tài)鏈接庫(kù)。這種方式的優(yōu)點(diǎn)是靈活,只要是采用的編程語(yǔ)言能支持的數(shù)據(jù)類型和處理邏輯,在ETL過(guò)程中,都能得以實(shí)現(xiàn)。相對(duì)其“靈活”的優(yōu)點(diǎn)來(lái)說(shuō),“硬編碼”方式的缺點(diǎn)也十分顯著由于該方式將所有ETL過(guò)程的實(shí)現(xiàn)邏輯,都封裝到了一個(gè)硬編碼程序中,ETL過(guò)程中的處理邏輯是不可見(jiàn)的,一旦要維護(hù)該ETL過(guò)程中的某個(gè)邏輯,則需要開(kāi)發(fā)人員來(lái)進(jìn)行。其可重用性、可移植性、可維護(hù)性差,難以文檔化,而且工作量較大,開(kāi)發(fā)周期一般較長(zhǎng)。不適用與環(huán)境復(fù)雜多樣、變化頻繁的數(shù)據(jù)處理場(chǎng)景。2、存儲(chǔ)過(guò)程數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程,是一組為了完成特定功能的SQL語(yǔ)句集,與程序中的函數(shù)類似,存儲(chǔ)過(guò)程是在數(shù)據(jù)庫(kù)中創(chuàng)建的。當(dāng)要對(duì)數(shù)據(jù)庫(kù)做一個(gè)較為復(fù)雜的操作時(shí),可以通過(guò)存儲(chǔ)過(guò)程將操作封裝起來(lái),并可以與事務(wù)處理等結(jié)合使用。存儲(chǔ)過(guò)程實(shí)現(xiàn)ETL過(guò)程,將所有數(shù)據(jù)處理單元都存儲(chǔ)在數(shù)據(jù)庫(kù)中,隨著需求的變動(dòng)與添加,存儲(chǔ)過(guò)程的數(shù)量會(huì)越來(lái)越大,導(dǎo)致該ETL過(guò)程的維護(hù)越來(lái)越困難。存儲(chǔ)過(guò)程是腳本形式,不利于理解與工作交接,維護(hù)與調(diào)試難度大。同時(shí),存儲(chǔ)過(guò)程依賴與數(shù)據(jù)庫(kù)系統(tǒng),基本不具可移植性,比如=Oracle中的存儲(chǔ)過(guò)程無(wú)法遷移到SQL Server中存儲(chǔ)運(yùn)行。3、批量序列處理根據(jù)ETL過(guò)程的需求,將數(shù)據(jù)以“數(shù)據(jù)包”的形式,按順序在各數(shù)據(jù)處理單元之間傳遞,數(shù)據(jù)包內(nèi)的所有數(shù)據(jù),在一個(gè)數(shù)據(jù)處理單元內(nèi)處理完成,形成新的數(shù)據(jù)包后,才傳遞給下一個(gè)數(shù)據(jù)單元處理。這種做法層次分明、結(jié)構(gòu)簡(jiǎn)單、易理解,是ETL過(guò)程中最常用的實(shí)現(xiàn)方式。需要將所有數(shù)據(jù)以數(shù)據(jù)包形式,全部加載到內(nèi)存,內(nèi)存資源消耗情況依賴于所處理的數(shù)據(jù)包的大小,當(dāng)數(shù)據(jù)包較大的時(shí)候,其處理效率呈加速下降的趨勢(shì)。綜上所述,上述三種處理方式主要存在如下缺陷I、無(wú)可復(fù)用性、可移植性 這些實(shí)現(xiàn)方式,通常是針對(duì)特定的外部數(shù)據(jù)和加載目標(biāo),有特定的數(shù)據(jù)處理邏輯,這些邏輯固化在了一個(gè)ETL程序中;所以這樣的實(shí)現(xiàn)方式只能用于特定的ETL場(chǎng)景,在其他場(chǎng)景中,無(wú)法將之前的成果一直到新的場(chǎng)景、或重復(fù)利用起來(lái),只能再針對(duì)新的特定場(chǎng)景完成一個(gè)新的實(shí)現(xiàn);
2、維護(hù)性、易用性差有些技術(shù)方案是通過(guò)“腳本”或“代碼”的方式,描述從外部數(shù)據(jù)到加載目標(biāo)的ETL過(guò)程。維護(hù)這樣的ETL過(guò)程,涉及到對(duì)大量的“腳本”或“代碼”的管理,非常混亂,而且這對(duì)實(shí)施人員的技術(shù)水平提出了相當(dāng)高的要求,否則難以實(shí)現(xiàn)。3、無(wú)元數(shù)據(jù)管理有些技術(shù)方案比如“硬編碼”和“存儲(chǔ)過(guò)程”,缺乏了對(duì)元數(shù)據(jù)進(jìn)行存儲(chǔ)和管理的過(guò)程,導(dǎo)致對(duì)ETL過(guò)程的運(yùn)行、跟蹤 和分析,以及后期的維護(hù)調(diào)整,都非常難以進(jìn)行。4、效率低下這類技術(shù)方案通常采用分布串行處理方式,這種方式能夠滿足小量數(shù)據(jù)簡(jiǎn)單的ETL過(guò)程需求。隨著發(fā)展,各行業(yè)系統(tǒng)中的數(shù)據(jù)量越來(lái)越大,ETL過(guò)程通常要面對(duì)海量數(shù)據(jù)進(jìn)行處理,對(duì)實(shí)時(shí)性要求越來(lái)越高,因此對(duì)ETL過(guò)程的效率就提出了越來(lái)越高的要求,傳統(tǒng)的處理方式已經(jīng)不能滿足要求。5、資源占用大這類技術(shù)方案通過(guò)將要處理的各種異構(gòu)數(shù)據(jù),抽取到內(nèi)存塊中;甚至在轉(zhuǎn)換過(guò)程中,需要實(shí)時(shí)連接外部數(shù)據(jù)如關(guān)系數(shù)據(jù)庫(kù)。這就導(dǎo)致了大量的內(nèi)存、CPU、帶寬資源被占用。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種基于ETL的數(shù)據(jù)優(yōu)化方法及設(shè)備,通過(guò)預(yù)先設(shè)置數(shù)據(jù)處理單元以及通信機(jī)制,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的簡(jiǎn)化優(yōu)化、分支并行優(yōu)化以及記錄間并行優(yōu)化,提高了數(shù)據(jù)優(yōu)化的處理效率,節(jié)約硬件資源。本發(fā)明的目的之一是,提供一種基于ETL的數(shù)據(jù)優(yōu)化方法,所述的方法包括根據(jù)數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程ETL預(yù)先設(shè)置多個(gè)數(shù)據(jù)處理單元;對(duì)所述的數(shù)據(jù)處理單元預(yù)先設(shè)置通信機(jī)制;采集用戶輸入的包括來(lái)源數(shù)據(jù)的指令信息;根據(jù)所述的來(lái)源數(shù)據(jù)構(gòu)建與所述的指令信息對(duì)應(yīng)的數(shù)據(jù)處理流程;根據(jù)所述的數(shù)據(jù)處理單元以及預(yù)設(shè)的通信機(jī)制對(duì)所述的數(shù)據(jù)處理流程進(jìn)行優(yōu)化。本發(fā)明的目的之一是,提供一種基于ETL的數(shù)據(jù)優(yōu)化設(shè)備,所述的設(shè)備包括數(shù)據(jù)單元設(shè)置裝置,用于根據(jù)數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程ETL預(yù)先設(shè)置多個(gè)數(shù)據(jù)處理單元;通信機(jī)制設(shè)置裝置,用于對(duì)所述的數(shù)據(jù)處理單元預(yù)先設(shè)置通信機(jī)制;指令信息采集裝置,用于采集用戶輸入的包括來(lái)源數(shù)據(jù)的指令信息;數(shù)據(jù)流程構(gòu)建裝置,用于根據(jù)所述的來(lái)源數(shù)據(jù)構(gòu)建與所述的指令信息對(duì)應(yīng)的數(shù)據(jù)處理流程;數(shù)據(jù)優(yōu)化裝置,用于根據(jù)所述的數(shù)據(jù)處理單元以及預(yù)設(shè)的通信機(jī)制對(duì)所述的數(shù)據(jù)處理流程進(jìn)行優(yōu)化。本發(fā)明的有益效果在于,通過(guò)預(yù)先設(shè)置數(shù)據(jù)處理單元以及通信機(jī)制,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的簡(jiǎn)化優(yōu)化、分支并行優(yōu)化以及記錄間并行優(yōu)化,提高了數(shù)據(jù)優(yōu)化的處理效率,節(jié)約硬件資源、網(wǎng)絡(luò)資源,提高了系統(tǒng)的穩(wěn)定性,以及優(yōu)化設(shè)備的易用性、可復(fù)用性和可移植性。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化方法的流程圖;圖2為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化方法的實(shí)施方式二的流程圖;圖3為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化方法的實(shí)施方式三的流程圖;圖4為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化方法的實(shí)施方式四的流程圖;圖5為圖I中的步驟S105的具體流程圖; 圖6為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化設(shè)備的結(jié)構(gòu)框圖;圖7為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化設(shè)備的實(shí)施方式二的結(jié)構(gòu)框圖;圖8為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化設(shè)備的實(shí)施方式三的結(jié)構(gòu)框圖;圖9為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化設(shè)備的實(shí)施方式四的結(jié)構(gòu)框圖;圖10為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化設(shè)備的實(shí)施方式五的結(jié)構(gòu)框圖;圖11為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理單元的組合示意圖;圖12為步驟S3065中將多個(gè)數(shù)據(jù)處理單元轉(zhuǎn)化為單步數(shù)據(jù)進(jìn)行處理的示意圖;圖13是本發(fā)明實(shí)施例中根據(jù)某學(xué)校的指令信息生成的數(shù)據(jù)處理流程圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。在企業(yè)信息化建設(shè)過(guò)程中,特別是面向分析與挖掘的商業(yè)智能業(yè)務(wù)過(guò)程,經(jīng)常涉及到對(duì)大量、分散、異構(gòu)的數(shù)據(jù)進(jìn)行處理,ETL是這個(gè)過(guò)程中必不可少的一部分。下面首先介紹與本發(fā)明相關(guān)的縮略語(yǔ)與關(guān)鍵術(shù)語(yǔ)。ETL Extract-Transform-Load的縮寫,即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程。其負(fù)責(zé)將分布的、異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)如關(guān)系數(shù)據(jù)、平面數(shù)據(jù)文件等抽取到臨時(shí)中間層后進(jìn)行清洗、轉(zhuǎn)換、集成,最后加載到數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)集市中,成為聯(lián)機(jī)分析處理、數(shù)據(jù)挖掘的基礎(chǔ)。SQL :結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language),是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。同時(shí)也是數(shù)據(jù)庫(kù)腳本文件的擴(kuò)展名。外部數(shù)據(jù)ETL處理數(shù)據(jù)的來(lái)源,一般包括各個(gè)廠商的數(shù)據(jù)庫(kù)及版本、平面數(shù)據(jù)文件、Excel、及其他數(shù)據(jù)文件;數(shù)據(jù)處理單元ETL中定義的一條對(duì)數(shù)據(jù)進(jìn)行處理的,可劃分的最小邏輯單元;如查詢、過(guò)濾、排序等。數(shù)據(jù)處理單元序列ETL對(duì)數(shù)據(jù)的處理過(guò)程,可以被認(rèn)為是由若干個(gè)數(shù)據(jù)處理單元組成的,一條帶有分支的,有序的流程;數(shù)據(jù)處理單元序列,就是從此流程中任意截取的一段有序流程;例如A->B->C->D是ETL過(guò)程,那么A->B、B_>C、B->D都是數(shù)據(jù)處理單元序列??蓛?yōu)化的數(shù)據(jù)處理單元有些數(shù)據(jù)處理單元在某些情況下可以被優(yōu)化,或者其參與的數(shù)據(jù)處理單元序列,在某些情況下可以被優(yōu)化。則這種數(shù)據(jù)處理單元被稱為可優(yōu)化的數(shù)據(jù)處理單元;如本方案中,可優(yōu)化的數(shù)據(jù)處 理單元有查詢、過(guò)濾、分組統(tǒng)計(jì)、排序、表關(guān)聯(lián)、表合并、字段計(jì)算??蓛?yōu)化序列可優(yōu)化的數(shù)據(jù)處理單元序列,以數(shù)據(jù)處理單元序列的方式參與優(yōu)化,可以將該序列的多個(gè)數(shù)據(jù)處理步驟統(tǒng)一優(yōu)化為單步數(shù)據(jù)處理,這種序列被稱為可優(yōu)化序列。例如可優(yōu)化為一條SQL語(yǔ)句的數(shù)據(jù)處理單元序列。元數(shù)據(jù)管理元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),其對(duì)于ETL來(lái)說(shuō)尤其重要。ETL中大量的數(shù)據(jù)源定義、映射規(guī)則、轉(zhuǎn)換規(guī)則、裝載策略等都屬于元數(shù)據(jù)范疇,這些信息不僅關(guān)系到ETL過(guò)程能否順利完成,而且影響到后期的使用和維護(hù)。硬編碼硬編碼是指使用高級(jí)語(yǔ)言或腳本將整個(gè)數(shù)據(jù)處理流程固化與特定的ETL場(chǎng)景中。這樣的好處是考慮的場(chǎng)景和邏輯少,便于開(kāi)發(fā),但是犧牲了代碼的可重用性和可移植性。標(biāo)準(zhǔn)化為在一定的范圍內(nèi)獲得最佳秩序,對(duì)實(shí)際的或潛在的問(wèn)題制定共同的和重復(fù)使用的規(guī)則的活動(dòng),稱為標(biāo)準(zhǔn)化。ETL中的很多數(shù)據(jù)處理邏輯,是常用并可重復(fù)使用的,可以抽象出來(lái)作為一個(gè)標(biāo)準(zhǔn)數(shù)據(jù)處理單元。關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)?,F(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來(lái)表示。關(guān)系模型就是指二維表格模型,因而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的聯(lián)系組成的一個(gè)數(shù)據(jù)組織。當(dāng)前主流的關(guān)系型數(shù)據(jù)庫(kù)有Oracle、DB2、Microsoft SQL Server、Microsoft Access、My SQL 等。異構(gòu)數(shù)據(jù)庫(kù)不同體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng),如Oracle與SQL Server。數(shù)據(jù)集數(shù)據(jù)的集合,通常以表格形式出現(xiàn),每行表示數(shù)據(jù)集的一個(gè)成員,每列表示了成員的一個(gè)屬性,一個(gè)數(shù)據(jù)集通常有多個(gè)成員構(gòu)成。數(shù)據(jù)記錄數(shù)據(jù)集的一個(gè)成員或一行數(shù)據(jù),被稱為一條數(shù)據(jù)記錄。圖I為本發(fā)明實(shí)施例提供的一種基于ETL的數(shù)據(jù)優(yōu)化方法的流程圖,由圖I可知,所述的方法包括SlOl :根據(jù)數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程ETL預(yù)先設(shè)置多個(gè)數(shù)據(jù)處理單元,數(shù)據(jù)處理單元包括抽取類、加載類以及轉(zhuǎn)換類三種類型。表I即為本發(fā)明預(yù)先設(shè)置的多個(gè)標(biāo)準(zhǔn)化的數(shù)據(jù)處理單元。
抽取加載轉(zhuǎn)換
文本輸入文本輸出字段計(jì)算
權(quán)利要求
1.一種基于數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程ETL的數(shù)據(jù)優(yōu)化方法,其特征是,所述的方法包括 根據(jù)數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程ETL預(yù)先設(shè)置多個(gè)數(shù)據(jù)處理單元; 對(duì)所述的數(shù)據(jù)處理單元預(yù)先設(shè)置通信機(jī)制; 采集用戶輸入的包括來(lái)源數(shù)據(jù)的指令信息; 根據(jù)所述的來(lái)源數(shù)據(jù)構(gòu)建與所述的指令信息對(duì)應(yīng)的數(shù)據(jù)處理流程; 根據(jù)所述的數(shù)據(jù)處理單元以及預(yù)設(shè)的通信機(jī)制對(duì)所述的數(shù)據(jù)處理流程進(jìn)行優(yōu)化。
2.根據(jù)權(quán)利要求I所述的方法,其特征是,所述的數(shù)據(jù)處理單元包括抽取類、加載類以及轉(zhuǎn)換類三種類型。
3.根據(jù)權(quán)利要求2所述的方法,其特征是,對(duì)所述的數(shù)據(jù)處理單元預(yù)先設(shè)置通信機(jī)制具體包括 當(dāng)所述的數(shù)據(jù)處理單元為抽取類時(shí),在所述的數(shù)據(jù)處理單元上加載輸出接口 ; 當(dāng)所述的數(shù)據(jù)處理單元為加載類時(shí),在所述的數(shù)據(jù)處理單元上加載輸入接口 ; 當(dāng)所述的數(shù)據(jù)處理單元為轉(zhuǎn)換類時(shí),在所述的數(shù)據(jù)處理單元上加載輸入接口、輸出接□。
4.根據(jù)權(quán)利要求I所述的方法,其特征是,根據(jù)所述的數(shù)據(jù)處理單元以及預(yù)設(shè)的通信機(jī)制對(duì)所述的數(shù)據(jù)處理流程進(jìn)行優(yōu)化具體包括 當(dāng)所述的數(shù)據(jù)處理流程中第一個(gè)數(shù)據(jù)處理單元處理的數(shù)據(jù)不是數(shù)據(jù)庫(kù)數(shù)據(jù)源時(shí),對(duì)所述的數(shù)據(jù)處理流程進(jìn)行并行處理。
5.根據(jù)權(quán)利要求4所述的方法,其特征是,對(duì)所述的數(shù)據(jù)處理流程進(jìn)行并行處理具體包括 篩選所述的數(shù)據(jù)處理流程中的多條分支; 采用多線程方式對(duì)所述的多條分支進(jìn)行并行處理。
6.根據(jù)權(quán)利要求4所述的方法,其特征是,對(duì)所述的數(shù)據(jù)處理流程進(jìn)行并行處理具體包括 篩選所述的數(shù)據(jù)處理流程中的串行數(shù)據(jù)處理單元; 將輸入至所述的串行數(shù)據(jù)處理單元的數(shù)據(jù)分解為多條數(shù)據(jù)記錄; 對(duì)每條數(shù)據(jù)記錄分配單線程以處理所述的數(shù)據(jù)記錄。
7.根據(jù)權(quán)利要求I所述的方法,其特征是,根據(jù)所述的數(shù)據(jù)處理單元以及預(yù)設(shè)的通信機(jī)制對(duì)所述的數(shù)據(jù)處理流程進(jìn)行優(yōu)化具體包括 當(dāng)所述的數(shù)據(jù)處理流程中第一個(gè)數(shù)據(jù)處理單元處理的數(shù)據(jù)為數(shù)據(jù)庫(kù)數(shù)據(jù)源時(shí),將所述的第一個(gè)數(shù)據(jù)處理單元添加至可優(yōu)化序列; 依次判斷所述的數(shù)據(jù)處理流程中的下一個(gè)數(shù)據(jù)處理單元是否屬于“查詢、過(guò)濾、分組、統(tǒng)計(jì)、排序、計(jì)算”集合中的一個(gè); 當(dāng)判斷為是時(shí),將所述的數(shù)據(jù)處理單元添加至可優(yōu)化序列; 當(dāng)判斷為否時(shí),繼續(xù)判斷所述的數(shù)據(jù)處理單元是否帶分支; 當(dāng)判斷為是時(shí),繼續(xù)判斷所述的數(shù)據(jù)處理單元相關(guān)聯(lián)的分支上的數(shù)據(jù)處理單元處理的數(shù)據(jù)是否為數(shù)據(jù)庫(kù)數(shù)據(jù)源; 當(dāng)判斷為是時(shí),將所述的數(shù)據(jù)處理單元以及相關(guān)聯(lián)的分支上的數(shù)據(jù)處理單元添加至可優(yōu)化序列; 將所述的可優(yōu)化序列中的數(shù)據(jù)處理單元轉(zhuǎn)化為單步進(jìn)行處理。
8.一種基于ETL的數(shù)據(jù)優(yōu)化設(shè)備,其特征是,所述的設(shè)備包括 數(shù)據(jù)單元設(shè)置裝置,用于根據(jù)數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程ETL預(yù)先設(shè)置多個(gè)數(shù)據(jù)處理單元; 通信機(jī)制設(shè)置裝置,用于對(duì)所述的數(shù)據(jù)處理單元預(yù)先設(shè)置通信機(jī)制; 指令信息采集裝置,用于采集用戶輸入的包括來(lái)源數(shù)據(jù)的指令信息; 數(shù)據(jù)流程構(gòu)建裝置,用于根據(jù)所述的來(lái)源數(shù)據(jù)構(gòu)建與所述的指令信息對(duì)應(yīng)的數(shù)據(jù)處理流程; 數(shù)據(jù)優(yōu)化裝置,用于根據(jù)所述的數(shù)據(jù)處理單元以及預(yù)設(shè)的通信機(jī)制對(duì)所述的數(shù)據(jù)處理流程進(jìn)行優(yōu)化。
9.根據(jù)權(quán)利要求8所述的設(shè)備,其特征是,所述的數(shù)據(jù)處理單元包括抽取類、加載類以及轉(zhuǎn)換類三種類型。
10.根據(jù)權(quán)利要求9所述的設(shè)備,其特征是,所述的通信機(jī)制設(shè)置裝置具體包括 第一設(shè)置單元,用于當(dāng)所述的數(shù)據(jù)處理單元為抽取類時(shí),在所述的數(shù)據(jù)處理單元上加載輸出接口; 第二設(shè)置單元,用于當(dāng)所述的數(shù)據(jù)處理單元為加載類時(shí),在所述的數(shù)據(jù)處理單元上加載輸入接口; 第三設(shè)置單元,用于當(dāng)所述的數(shù)據(jù)處理單元為轉(zhuǎn)換類時(shí),在所述的數(shù)據(jù)處理單元上加載輸入接口、輸出接口。
11.根據(jù)權(quán)利要求8所述的設(shè)備,其特征是,所述的數(shù)據(jù)優(yōu)化裝置具體包括 并行處理裝置,用于當(dāng)所述的數(shù)據(jù)處理流程中第一個(gè)數(shù)據(jù)處理單元處理的數(shù)據(jù)不是數(shù)據(jù)庫(kù)數(shù)據(jù)源時(shí),對(duì)所述的數(shù)據(jù)處理流程進(jìn)行并行處理。
12.根據(jù)權(quán)利要求11所述的設(shè)備,其特征是,所述的并行處理裝置具體包括 第一篩選單元,用于篩選所述的數(shù)據(jù)處理流程中的多條分支; 并行處理單元,用于采用多線程方式對(duì)所述的多條分支進(jìn)行并行處理。
13.根據(jù)權(quán)利要求11所述的設(shè)備,其特征是,所述的并行處理裝置具體包括 第二篩選單元,用于篩選所述的數(shù)據(jù)處理流程中的串行數(shù)據(jù)處理單元; 分解單元,用于將輸入至所述的串行數(shù)據(jù)處理單元的數(shù)據(jù)分解為多條數(shù)據(jù)記錄; 單線程分配單元,用于對(duì)每條數(shù)據(jù)記錄分配單線程以處理所述的數(shù)據(jù)記錄。
14.根據(jù)權(quán)利要求8所述的設(shè)備,其特征是,所述的數(shù)據(jù)優(yōu)化裝置具體包括 第一判斷單元,用于判斷所述的數(shù)據(jù)處理流程里第一個(gè)數(shù)據(jù)處理單元處理的數(shù)據(jù)是否為數(shù)據(jù)庫(kù)數(shù)據(jù)源,當(dāng)判斷為是時(shí),執(zhí)行添加單元,否則執(zhí)行第二判斷單元; 所述的添加單元,用于將所述的數(shù)據(jù)處理單元添加至可優(yōu)化序列; 所述的第二判斷單元,用于依次判斷所述的數(shù)據(jù)處理流程中的下一個(gè)數(shù)據(jù)處理單元是否屬于“查詢、過(guò)濾、分組、統(tǒng)計(jì)、排序、計(jì)算”集合中的一個(gè),當(dāng)判斷為是時(shí),執(zhí)行所述的添加單元,否則執(zhí)行第三判斷單元; 所述的第三判斷單元,用于繼續(xù)判斷所述的數(shù)據(jù)處理單元是否帶分支,當(dāng)判斷為是時(shí),執(zhí)行第四判斷單元;所述的第四判斷單元,用于繼續(xù)判斷所述的數(shù)據(jù)處理單元相關(guān)聯(lián)的分支上的數(shù)據(jù)處理單元處理的數(shù)據(jù)是否為數(shù)據(jù)庫(kù)數(shù)據(jù)源,當(dāng)判斷為是時(shí),執(zhí)行所述的添加單元; 處理單元,用于將所述的可優(yōu)化序列中的數(shù)據(jù)處理單元轉(zhuǎn)化為單步進(jìn)行處理。
全文摘要
本發(fā)明實(shí)施例提供了提供一種基于ETL的數(shù)據(jù)優(yōu)化方法及設(shè)備,所述的方法包括根據(jù)數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程ETL預(yù)先設(shè)置多個(gè)數(shù)據(jù)處理單元;對(duì)所述的數(shù)據(jù)處理單元預(yù)先設(shè)置通信機(jī)制;采集用戶輸入的包括來(lái)源數(shù)據(jù)的指令信息;根據(jù)所述的來(lái)源數(shù)據(jù)構(gòu)建與所述的指令信息對(duì)應(yīng)的數(shù)據(jù)處理流程;根據(jù)所述的數(shù)據(jù)處理單元以及預(yù)設(shè)的通信機(jī)制對(duì)所述的數(shù)據(jù)處理流程進(jìn)行優(yōu)化。通過(guò)預(yù)先設(shè)置數(shù)據(jù)處理單元以及通信機(jī)制,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的簡(jiǎn)化優(yōu)化、分支并行優(yōu)化以及記錄間并行優(yōu)化,提高了數(shù)據(jù)優(yōu)化的處理效率,節(jié)約硬件資源。
文檔編號(hào)G06F17/30GK102819589SQ20121027709
公開(kāi)日2012年12月12日 申請(qǐng)日期2012年8月6日 優(yōu)先權(quán)日2012年8月6日
發(fā)明者李紀(jì)洲, 周徐波, 王星宇 申請(qǐng)人:北京久其軟件股份有限公司