專(zhuān)利名稱:基于etl的多線程數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種基于ETL的多線程數(shù)據(jù)處理方法。
背景技術(shù):
數(shù)據(jù)倉(cāng)庫(kù)是企業(yè)目前應(yīng)用非常廣泛的一種綜合數(shù)據(jù)平臺(tái),它是一個(gè)獨(dú)立的數(shù)據(jù)環(huán) 境,相對(duì)于關(guān)系數(shù)據(jù)庫(kù),數(shù)據(jù)倉(cāng)庫(kù)技術(shù)沒(méi)有嚴(yán)格的數(shù)學(xué)理論基礎(chǔ),它更面向?qū)嶋H工程應(yīng)用, 需要通過(guò)數(shù)據(jù)抽取機(jī)制將數(shù)據(jù)從聯(lián)機(jī)事務(wù)處理環(huán)境、外部數(shù)據(jù)源和脫機(jī)的數(shù)據(jù)存儲(chǔ)介質(zhì)導(dǎo) 入到數(shù)據(jù)倉(cāng)庫(kù)中。因此,數(shù)據(jù)抽取、轉(zhuǎn)換和裝載(ETL,Extraction-Transformation-Loadin g)是數(shù)據(jù)倉(cāng)庫(kù)中的非常重要的一環(huán),它是承前啟后的必要的一步。ETL負(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ǔ)?,F(xiàn)有技術(shù)的ETL工具進(jìn)行數(shù)據(jù)處理時(shí),數(shù)據(jù)抽取過(guò)程采用的是單線程處理機(jī)制, 因此存在硬件資源利用率低、數(shù)據(jù)吞吐量小和抽取速率低的問(wèn)題。此外,如果數(shù)據(jù)抽取過(guò)程中產(chǎn)生錯(cuò)誤,將導(dǎo)致整個(gè)ETL癱瘓。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種基于ETL的多線程數(shù)據(jù)處理方法,以解決現(xiàn)有技術(shù)存 在的硬件資源利用率低、數(shù)據(jù)吞吐量小和速率低的問(wèn)題,技術(shù)方案如下一種基于ETL的多線程數(shù)據(jù)處理方法,包括將ETL的數(shù)據(jù)抽取過(guò)程分為明顯的三 個(gè)階段,即抽取、發(fā)送和同步,并且使用各自獨(dú)立的線程并行執(zhí)行以下四個(gè)步驟步驟10 由數(shù)據(jù)抽取單元啟動(dòng)一個(gè)抽取線程,通過(guò)規(guī)則實(shí)時(shí)抽取源表數(shù)據(jù),并將 數(shù)據(jù)封裝后存放到待發(fā)送消息隊(duì)列,如果抽取數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送到 出錯(cuò)數(shù)據(jù)消息隊(duì)列;步驟11 由數(shù)據(jù)發(fā)送單元啟動(dòng)一個(gè)發(fā)送線程,循環(huán)檢測(cè)待發(fā)送消息隊(duì)列,當(dāng)該隊(duì) 列中有需要發(fā)送的數(shù)據(jù)時(shí),則將該數(shù)據(jù)發(fā)送到待同步消息隊(duì)列,如果發(fā)送數(shù)據(jù)過(guò)程發(fā)生錯(cuò) 誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送到出錯(cuò)數(shù)據(jù)消息隊(duì)列;步驟12 由數(shù)據(jù)同步單元啟動(dòng)一個(gè)同步線程,循環(huán)檢測(cè)待同步消息隊(duì)列,當(dāng)該隊(duì) 列中有需要同步的數(shù)據(jù)時(shí),則解析該數(shù)據(jù)并同步目的表數(shù)據(jù),如果同步數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤, 則將出錯(cuò)的數(shù)據(jù)發(fā)送到出錯(cuò)數(shù)據(jù)消息隊(duì)列;步驟13 由出錯(cuò)數(shù)據(jù)持久化單元啟動(dòng)一個(gè)持久化線程,循環(huán)檢測(cè)出錯(cuò)數(shù)據(jù)消息隊(duì) 列,當(dāng)隊(duì)列中有出錯(cuò)的數(shù)據(jù)時(shí),將出錯(cuò)數(shù)據(jù)按照引起錯(cuò)誤原因,即抽取數(shù)據(jù)錯(cuò)誤、發(fā)送數(shù)據(jù) 錯(cuò)誤和同步數(shù)據(jù)錯(cuò)誤進(jìn)行保存。優(yōu)選的,上述方法中,步驟10中,所述通過(guò)規(guī)則實(shí)時(shí)抽取源表數(shù)據(jù)具體為通過(guò)結(jié)構(gòu)化查詢語(yǔ)言(SQL,Structured Query Language)批處理查詢語(yǔ)句實(shí)時(shí)抽 取源表數(shù)據(jù)。
3
優(yōu)選的,上述方法中,步驟11中,所述將需要發(fā)送的數(shù)據(jù)發(fā)送到待同步消息隊(duì)列 具體為將需要發(fā)送的數(shù)據(jù)通過(guò)HTTP協(xié)議或傳輸控制協(xié)議(TCP,Transmission Control Protocol)發(fā)送到待同步消息隊(duì)列。優(yōu)選的,上述方法中,步驟12中,所述解析需要同步的數(shù)據(jù)并同步目的表數(shù)據(jù)具 體為通過(guò)SQL批處理方式解析需要同步的數(shù)據(jù)并同步目的表數(shù)據(jù)。優(yōu)選的,上述方法中,所述同步目的表數(shù)據(jù)的具體操作包括插入、更新和刪除數(shù)據(jù)。優(yōu)選的,上述方法中,步驟13中,所述將出錯(cuò)數(shù)據(jù)按照引起錯(cuò)誤原因,即抽取數(shù)據(jù) 錯(cuò)誤、發(fā)送數(shù)據(jù)錯(cuò)誤和同步數(shù)據(jù)錯(cuò)誤進(jìn)行保存后還包括按照預(yù)設(shè)數(shù)據(jù)同步方式對(duì)所述出錯(cuò)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。通過(guò)以上技術(shù)方案可知,本發(fā)明通過(guò)將ETL數(shù)據(jù)抽取過(guò)程分為明顯的三個(gè)階段, 即抽取、發(fā)送和同步,并且使用各自獨(dú)立的線程并行執(zhí)行數(shù)據(jù)的抽取、發(fā)送和同步,以及出 錯(cuò)數(shù)據(jù)的處理,大幅提高了數(shù)據(jù)的吞吐量和抽取速率,以及硬件資源的利用率;還通過(guò)對(duì)數(shù) 據(jù)的抽取、發(fā)送和同步過(guò)程中產(chǎn)生的出錯(cuò)數(shù)據(jù)的處理,提高了數(shù)據(jù)的容錯(cuò)性,降低了由于數(shù) 據(jù)抽取過(guò)程中產(chǎn)生錯(cuò)誤而導(dǎo)致整個(gè)ETL癱瘓的概率。
為了更清楚地說(shuō)明本發(fā)明的技術(shù)方案,下面將對(duì)本發(fā)明描述中所需要使用的附圖 作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普 通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明提供的基于ETL的多線程數(shù)據(jù)處理方法的框架示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例公開(kāi)了一種基于ETL的多線程數(shù)據(jù)處理方法,包括將ETL的數(shù)據(jù)抽 取過(guò)程分為明顯的三個(gè)階段,即抽取、發(fā)送和同步,并且使用各自獨(dú)立的線程并行執(zhí)行以下 四個(gè)步驟步驟10 由數(shù)據(jù)抽取單元啟動(dòng)一個(gè)抽取線程,通過(guò)規(guī)則實(shí)時(shí)抽取源表數(shù)據(jù),并將 數(shù)據(jù)封裝后存放到待發(fā)送消息隊(duì)列,如果抽取數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送到 出錯(cuò)數(shù)據(jù)消息隊(duì)列;步驟11 由數(shù)據(jù)發(fā)送單元啟動(dòng)一個(gè)發(fā)送線程,循環(huán)檢測(cè)待發(fā)送消息隊(duì)列,當(dāng)該隊(duì) 列中有需要發(fā)送的數(shù)據(jù)時(shí),則將該數(shù)據(jù)發(fā)送到待同步消息隊(duì)列,如果發(fā)送數(shù)據(jù)過(guò)程發(fā)生錯(cuò) 誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送到出錯(cuò)數(shù)據(jù)消息隊(duì)列;步驟12 由數(shù)據(jù)同步單元啟動(dòng)一個(gè)同步線程,循環(huán)檢測(cè)待同步消息隊(duì)列,當(dāng)該隊(duì) 列中有需要同步的數(shù)據(jù)時(shí),則解析該數(shù)據(jù)并同步目的表數(shù)據(jù),如果同步數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤, 則將出錯(cuò)的數(shù)據(jù)發(fā)送到出錯(cuò)數(shù)據(jù)消息隊(duì)列;步驟13 由出錯(cuò)數(shù)據(jù)持久化單元啟動(dòng)一個(gè)持久化線程,循環(huán)檢測(cè)出錯(cuò)數(shù)據(jù)消息隊(duì) 列,當(dāng)隊(duì)列中有出錯(cuò)的數(shù)據(jù)時(shí),將出錯(cuò)數(shù)據(jù)按照引起錯(cuò)誤原因,即抽取數(shù)據(jù)錯(cuò)誤、發(fā)送數(shù)據(jù)錯(cuò)誤和同步數(shù)據(jù)錯(cuò)誤進(jìn)行保存。本發(fā)明通過(guò)將ETL數(shù)據(jù)抽取過(guò)程分為明顯的三個(gè)階段,即抽取、發(fā)送和同步,并且 使用各自獨(dú)立的線程并行執(zhí)行數(shù)據(jù)的抽取、發(fā)送和同步,以及出錯(cuò)數(shù)據(jù)的保存,大幅提高了 數(shù)據(jù)的吞吐量和抽取速率,以及硬件資源的利用率;還通過(guò)對(duì)數(shù)據(jù)的抽取、發(fā)送和同步過(guò)程 中產(chǎn)生的出錯(cuò)數(shù)據(jù)的處理,提高了數(shù)據(jù)的容錯(cuò)性,降低了由于數(shù)據(jù)抽取過(guò)程中產(chǎn)生錯(cuò)誤而 導(dǎo)致整個(gè)ETL癱瘓的概率。為了使本領(lǐng)域技術(shù)人員更好的理解和實(shí)施本發(fā)明,以下將結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā) 明實(shí)施例的技術(shù)方案進(jìn)行詳細(xì)描述。圖1為本發(fā)明提供的基于ETL的多線程數(shù)據(jù)處理方法的框架示意圖。本發(fā)明通過(guò) 框架中的數(shù)據(jù)抽取單元、數(shù)據(jù)發(fā)送單元、數(shù)據(jù)同步單元和出錯(cuò)數(shù)據(jù)持久化單元,將ETL數(shù)據(jù) 抽取過(guò)程并行化,具體過(guò)程如下將ETL的數(shù)據(jù)抽取過(guò)程分為明顯的三個(gè)階段,即抽取、發(fā)送和同步,并且使用各自 獨(dú)立的線程并行執(zhí)行以下四個(gè)步驟步驟10 由數(shù)據(jù)抽取單元啟動(dòng)一個(gè)抽取線程,通過(guò)規(guī)則實(shí)時(shí)抽取源表數(shù)據(jù),并將 數(shù)據(jù)封裝后存放到待發(fā)送消息隊(duì)列,如果抽取數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送到 出錯(cuò)數(shù)據(jù)消息隊(duì)列。數(shù)據(jù)抽取單元循環(huán)的讀取源數(shù)據(jù)表中符合規(guī)則的數(shù)據(jù),并將這些數(shù)據(jù)封裝成數(shù)據(jù) 包,然后將該數(shù)據(jù)包發(fā)送到待發(fā)送消息隊(duì)列中,如果在數(shù)據(jù)封裝過(guò)程中出現(xiàn)錯(cuò)誤,則將改數(shù) 據(jù)包存儲(chǔ)到出錯(cuò)數(shù)據(jù)消息隊(duì)列。其中,具體的可利用SQL批處理查詢語(yǔ)句讀取源數(shù)據(jù)表中 符合規(guī)則的數(shù)據(jù)。數(shù)據(jù)抽取單元能夠確保數(shù)據(jù)抽取實(shí)時(shí)性,即實(shí)時(shí)的將需要抽取的數(shù)據(jù)進(jìn)行封裝并 保存到消息隊(duì)列中,且抽取過(guò)程不受到發(fā)送和同步過(guò)程影響。步驟11 由數(shù)據(jù)發(fā)送單元啟動(dòng)一個(gè)發(fā)送線程,循環(huán)檢測(cè)待發(fā)送消息隊(duì)列,當(dāng)該隊(duì) 列中有需要發(fā)送的數(shù)據(jù)時(shí),則將該數(shù)據(jù)發(fā)送到待同步消息隊(duì)列,如果發(fā)送數(shù)據(jù)過(guò)程發(fā)生錯(cuò) 誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送到出錯(cuò)數(shù)據(jù)消息隊(duì)列。數(shù)據(jù)發(fā)送單元循環(huán)的讀取待發(fā)送消息隊(duì)列中的數(shù)據(jù),并將該數(shù)據(jù)傳輸?shù)酱较?息隊(duì)列中,如果發(fā)送過(guò)程中出現(xiàn)錯(cuò)誤,則將出錯(cuò)的數(shù)據(jù)存儲(chǔ)到出錯(cuò)數(shù)據(jù)消息隊(duì)列。其中,具 體的可通過(guò)HTTP協(xié)議或TCP協(xié)議將需要發(fā)送的數(shù)據(jù)發(fā)送到待同步消息隊(duì)列。數(shù)據(jù)發(fā)送單元僅僅需要將待發(fā)送消息隊(duì)列中的數(shù)據(jù)發(fā)送到待同步消息隊(duì)列中去, 能夠確保數(shù)據(jù)傳送的實(shí)時(shí)性。步驟12 由數(shù)據(jù)同步單元啟動(dòng)一個(gè)同步線程,循環(huán)檢測(cè)待同步消息隊(duì)列,當(dāng)該隊(duì) 列中有需要同步的數(shù)據(jù)時(shí),則解析該數(shù)據(jù)并同步目的表數(shù)據(jù),如果同步數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤, 則將出錯(cuò)的數(shù)據(jù)發(fā)送到出錯(cuò)數(shù)據(jù)消息隊(duì)列。數(shù)據(jù)同步單元循環(huán)的讀取待同步消息隊(duì)列中的數(shù)據(jù),當(dāng)該隊(duì)列中有需要同步的數(shù) 據(jù)時(shí),則解析該數(shù)據(jù)并同步目的表數(shù)據(jù),如果同步數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送 到出錯(cuò)數(shù)據(jù)消息隊(duì)列。具體的,可通過(guò)SQL批處理方式解析需要同步的數(shù)據(jù)并同步目的表 數(shù)據(jù);同步目的表數(shù)據(jù)的具體操作包括插入、更新和刪除數(shù)據(jù)等。數(shù)據(jù)同步單元將需要同步數(shù)據(jù)同步到目的數(shù)據(jù)庫(kù)數(shù)據(jù)表中,能夠確保數(shù)據(jù)同步的 實(shí)時(shí)性。
步驟13 由出錯(cuò)數(shù)據(jù)持久化單元啟動(dòng)一個(gè)持久化線程,循環(huán)檢測(cè)出錯(cuò)數(shù)據(jù)消息隊(duì) 列,當(dāng)隊(duì)列中有出錯(cuò)的數(shù)據(jù)時(shí),將出錯(cuò)數(shù)據(jù)按照引起錯(cuò)誤原因,即抽取數(shù)據(jù)錯(cuò)誤、發(fā)送數(shù)據(jù) 錯(cuò)誤和同步數(shù)據(jù)錯(cuò)誤進(jìn)行保存。出錯(cuò)數(shù)據(jù)持久化單元循環(huán)的讀取出錯(cuò)數(shù)據(jù)消息隊(duì)列中數(shù)據(jù),按照出錯(cuò)數(shù)據(jù)的類(lèi)型 分別保存。具體的,可以以文件形式或數(shù)據(jù)庫(kù)的形式保存。在出錯(cuò)數(shù)據(jù)保存之后,還可以按 照預(yù)設(shè)數(shù)據(jù)同步方式,例如人工方式,對(duì)出錯(cuò)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。出錯(cuò)數(shù)據(jù)持久化單元能夠?qū)o(wú)法使用多線程同步的出錯(cuò)數(shù)據(jù),通過(guò)其他方式進(jìn)行 同步,確保ETL數(shù)據(jù)轉(zhuǎn)換的安全性和數(shù)據(jù)的完整性。從以上實(shí)施例可以看出,本發(fā)明實(shí)施例使用了多線程處理框架,并行化了 ETL數(shù) 據(jù)抽取的過(guò)程,具體的,將ETL數(shù)據(jù)抽取過(guò)程分為明顯的三個(gè)階段,即抽取、發(fā)送和同步,并 且使用各自獨(dú)立的線程并行執(zhí)行數(shù)據(jù)的抽取、發(fā)送和同步,以及出錯(cuò)數(shù)據(jù)的處理,大幅提高 了數(shù)據(jù)的吞吐量和抽取速率,以及硬件資源的利用率;還通過(guò)對(duì)數(shù)據(jù)的抽取、發(fā)送和同步過(guò) 程中產(chǎn)生的出錯(cuò)數(shù)據(jù)的處理,提高了數(shù)據(jù)的容錯(cuò)性,降低了由于數(shù)據(jù)抽取過(guò)程中產(chǎn)生錯(cuò)誤 而導(dǎo)致整個(gè)ETL癱瘓的概率。通過(guò)以上的方法實(shí)施例的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可 借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者 是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢 獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包 括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí) 行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括只讀存儲(chǔ)器 (ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。 對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的 一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明 將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一 致的最寬的范圍。
權(quán)利要求
一種基于ETL的多線程數(shù)據(jù)處理方法,其特征在于,包括將ETL的數(shù)據(jù)抽取過(guò)程分為明顯的三個(gè)階段,即抽取、發(fā)送和同步,并且使用各自獨(dú)立的線程并行執(zhí)行以下四個(gè)步驟步驟10由數(shù)據(jù)抽取單元啟動(dòng)一個(gè)抽取線程,通過(guò)規(guī)則實(shí)時(shí)抽取源表數(shù)據(jù),并將數(shù)據(jù)封裝后存放到待發(fā)送消息隊(duì)列,如果抽取數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送到出錯(cuò)數(shù)據(jù)消息隊(duì)列;步驟11由數(shù)據(jù)發(fā)送單元啟動(dòng)一個(gè)發(fā)送線程,循環(huán)檢測(cè)待發(fā)送消息隊(duì)列,當(dāng)該隊(duì)列中有需要發(fā)送的數(shù)據(jù)時(shí),則將該數(shù)據(jù)發(fā)送到待同步消息隊(duì)列,如果發(fā)送數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送到出錯(cuò)數(shù)據(jù)消息隊(duì)列;步驟12由數(shù)據(jù)同步單元啟動(dòng)一個(gè)同步線程,循環(huán)檢測(cè)待同步消息隊(duì)列,當(dāng)該隊(duì)列中有需要同步的數(shù)據(jù)時(shí),則解析該數(shù)據(jù)并同步目的表數(shù)據(jù),如果同步數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤,則將出錯(cuò)的數(shù)據(jù)發(fā)送到出錯(cuò)數(shù)據(jù)消息隊(duì)列;步驟13由出錯(cuò)數(shù)據(jù)持久化單元啟動(dòng)一個(gè)持久化線程,循環(huán)檢測(cè)出錯(cuò)數(shù)據(jù)消息隊(duì)列,當(dāng)隊(duì)列中有出錯(cuò)的數(shù)據(jù)時(shí),將出錯(cuò)數(shù)據(jù)按照引起錯(cuò)誤原因,即抽取數(shù)據(jù)錯(cuò)誤、發(fā)送數(shù)據(jù)錯(cuò)誤和同步數(shù)據(jù)錯(cuò)誤進(jìn)行保存。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟10中,所述通過(guò)規(guī)則實(shí)時(shí)抽取源表數(shù) 據(jù)具體為通過(guò)SQL批處理查詢語(yǔ)句實(shí)時(shí)抽取源表數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟11中,所述將需要發(fā)送的數(shù)據(jù)發(fā)送到 待同步消息隊(duì)列具體為將需要發(fā)送的數(shù)據(jù)通過(guò)HTTP協(xié)議或TCP協(xié)議發(fā)送到待同步消息隊(duì)列。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟12中,所述解析需要同步的數(shù)據(jù)并同 步目的表數(shù)據(jù)具體為通過(guò)SQL批處理方式解析需要同步的數(shù)據(jù)并同步目的表數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述同步目的表數(shù)據(jù)的具體操作包括插入、更新和刪除數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟13中,所述將出錯(cuò)數(shù)據(jù)按照引起錯(cuò)誤 原因,即抽取數(shù)據(jù)錯(cuò)誤、發(fā)送數(shù)據(jù)錯(cuò)誤和同步數(shù)據(jù)錯(cuò)誤進(jìn)行保存后還包括按照預(yù)設(shè)數(shù)據(jù)同步方式對(duì)所述出錯(cuò)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。
全文摘要
本發(fā)明公開(kāi)了一種基于ETL的多線程數(shù)據(jù)處理方法,包括將ETL的數(shù)據(jù)抽取過(guò)程分為明顯的三個(gè)階段,即抽取、發(fā)送和同步,并且使用各自獨(dú)立的線程并行執(zhí)行數(shù)據(jù)的抽取、發(fā)送和同步,以及出錯(cuò)數(shù)據(jù)的持久化步驟。本發(fā)明通過(guò)使用多線程處理框架,并行化了ETL數(shù)據(jù)抽取的過(guò)程,大幅提高了數(shù)據(jù)的吞吐量和抽取速率,以及硬件資源的利用率;還通過(guò)對(duì)數(shù)據(jù)的抽取、發(fā)送和同步過(guò)程中產(chǎn)生的出錯(cuò)數(shù)據(jù)的處理,提高了數(shù)據(jù)的容錯(cuò)性,降低了由于數(shù)據(jù)抽取過(guò)程中產(chǎn)生錯(cuò)誤而導(dǎo)致整個(gè)ETL癱瘓的概率。
文檔編號(hào)G06F17/30GK101882165SQ20101024178
公開(kāi)日2010年11月10日 申請(qǐng)日期2010年8月2日 優(yōu)先權(quán)日2010年8月2日
發(fā)明者周鋼, 陳俊 申請(qǐng)人:山東中創(chuàng)軟件工程股份有限公司;山東中創(chuàng)軟件商用中間件股份有限公司