本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)遷移系統(tǒng)和方法,其中的系統(tǒng)具體包括:配置讀取模塊,用于讀取數(shù)據(jù)遷移任務(wù)的配置文件,所述配置文件中包括有數(shù)據(jù)讀取信息和數(shù)據(jù)寫(xiě)入信息;讀取模塊,用于依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀取,并在將讀取的數(shù)據(jù)轉(zhuǎn)換為中間格式后,寫(xiě)入數(shù)據(jù)交換緩沖模塊;數(shù)據(jù)交換緩沖模塊,用于臨時(shí)存儲(chǔ)寫(xiě)入的中間格式的數(shù)據(jù);及寫(xiě)入模塊,用于從所述數(shù)據(jù)交換緩沖模塊中讀取所述中間格式的數(shù)據(jù),并在依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息將所述中間格式的數(shù)據(jù)轉(zhuǎn)換為目標(biāo)格式后,寫(xiě)入目標(biāo)地址。本申請(qǐng)能夠提高數(shù)據(jù)遷移的性能,降低數(shù)據(jù)遷移所花費(fèi)的運(yùn)維成本和開(kāi)發(fā)成本。
【技術(shù)實(shí)現(xiàn)步驟摘要】
一種數(shù)據(jù)遷移系統(tǒng)和方法
本申請(qǐng)涉及計(jì)算機(jī)系統(tǒng)數(shù)據(jù)處理
,特別是涉及一種數(shù)據(jù)遷移系統(tǒng)和方法。
技術(shù)介紹
目前,隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和信息量的增加,網(wǎng)絡(luò)上形成了數(shù)量巨大的分布的異構(gòu)信息源。各企事業(yè)內(nèi)部由于地理位置的不同或新需求的增加也形成了一個(gè)分布式的、異構(gòu)的且數(shù)量巨大的數(shù)據(jù)集合。異構(gòu)的數(shù)據(jù)源出現(xiàn)的一個(gè)很重要的原因是由于多種商業(yè)數(shù)據(jù)庫(kù)的同時(shí)存在。異構(gòu)數(shù)據(jù)源形式多樣,從結(jié)構(gòu)上來(lái)區(qū)分,其不僅可以包括數(shù)據(jù)庫(kù)(如關(guān)系數(shù)據(jù)庫(kù))中結(jié)構(gòu)化數(shù)據(jù),而且還可以包括文件系統(tǒng)中非結(jié)構(gòu)化的數(shù)據(jù),如一般的文本文件、電子郵件、演示文稿和各種文檔等。這些數(shù)據(jù)源往往分布在地理位置上,數(shù)據(jù)格式和代碼不同一,這些都直接推動(dòng)了對(duì)異構(gòu)數(shù)據(jù)源的數(shù)據(jù)共享和透明訪問(wèn)的需求的產(chǎn)生。因此,如何將數(shù)據(jù)在這些異構(gòu)數(shù)據(jù)源之間進(jìn)行遷移,從而維持一個(gè)一致、完整的全局模式,具有重要的意義。在現(xiàn)有技術(shù)中,常用的數(shù)據(jù)遷移方法主要采用導(dǎo)出/導(dǎo)入方式。假設(shè)欲將數(shù)據(jù)從Oracle數(shù)據(jù)庫(kù)遷移至HDFS(分布式文件系統(tǒng),HadoopDistributedFileSystem)系統(tǒng),則現(xiàn)有技術(shù)首先采用Oracle的數(shù)據(jù)導(dǎo)出命令或工具將源數(shù)據(jù)導(dǎo)出為文件,然后利用工具將文件格式、編碼進(jìn)行轉(zhuǎn)化后拷貝到HDFS系統(tǒng)中?,F(xiàn)有技術(shù)具有如下缺點(diǎn):1、數(shù)據(jù)的導(dǎo)出和轉(zhuǎn)碼過(guò)程都需要磁盤(pán)轉(zhuǎn)儲(chǔ),由于磁盤(pán)轉(zhuǎn)儲(chǔ)需要大量的磁盤(pán)I/O(輸入/輸出,input/output),而磁盤(pán)是慢速設(shè)備,這就導(dǎo)致數(shù)據(jù)遷移的流程比較長(zhǎng),數(shù)據(jù)遷移的性能低下;另外,在長(zhǎng)的數(shù)據(jù)遷移流程中,用戶不僅需要自己銜接上下游過(guò)程,對(duì)每個(gè)過(guò)程進(jìn)行監(jiān)控,而且還要監(jiān)控磁盤(pán)空間,這大大提高了運(yùn)維成本;2、雖然,目前成熟的數(shù)據(jù)導(dǎo)入導(dǎo)出工具比較多,但是一般都只能支持一個(gè)或者幾個(gè)特定類(lèi)型的數(shù)據(jù)庫(kù);一旦擁有很多異構(gòu)數(shù)據(jù)源,如Mysql、Oracle、Rac、Hive等數(shù)據(jù)庫(kù)/文件系統(tǒng),并且需要經(jīng)常在這些異構(gòu)數(shù)據(jù)源之間導(dǎo)入導(dǎo)出數(shù)據(jù),那么需要開(kāi)發(fā)/維護(hù)/學(xué)習(xí)使用一批這樣的工具,并且隨著數(shù)據(jù)源類(lèi)型的增加,需要的導(dǎo)入導(dǎo)出工具數(shù)目會(huì)呈線性增長(zhǎng)趨勢(shì),而導(dǎo)入導(dǎo)出工具的開(kāi)發(fā)會(huì)花費(fèi)大量的開(kāi)發(fā)成本。
技術(shù)實(shí)現(xiàn)思路
本申請(qǐng)所要解決的技術(shù)問(wèn)題是,提供一種數(shù)據(jù)遷移系統(tǒng)和方法,以提高數(shù)據(jù)遷移的性能,降低數(shù)據(jù)遷移所花費(fèi)的運(yùn)維成本和開(kāi)發(fā)成本。為了解決上述問(wèn)題,本申請(qǐng)公開(kāi)了一種數(shù)據(jù)遷移系統(tǒng),包括:配置讀取模塊,用于讀取數(shù)據(jù)遷移任務(wù)的配置文件,所述配置文件中包括有數(shù)據(jù)讀取信息和數(shù)據(jù)寫(xiě)入信息;讀取模塊,用于依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀取,并在將讀取的數(shù)據(jù)轉(zhuǎn)換為中間格式后,寫(xiě)入數(shù)據(jù)交換緩沖模塊;數(shù)據(jù)交換緩沖模塊,用于臨時(shí)存儲(chǔ)寫(xiě)入的中間格式的數(shù)據(jù);及寫(xiě)入模塊,用于從所述數(shù)據(jù)交換緩沖模塊中讀取所述中間格式的數(shù)據(jù),并在依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息將所述中間格式的數(shù)據(jù)轉(zhuǎn)換為目標(biāo)格式后,寫(xiě)入目標(biāo)地址。另一方面,本申請(qǐng)還公開(kāi)了一種數(shù)據(jù)遷移方法,包括:讀取數(shù)據(jù)遷移任務(wù)的配置文件,所述配置文件中包括有數(shù)據(jù)讀取信息和數(shù)據(jù)寫(xiě)入信息;依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀取;將讀取的數(shù)據(jù)轉(zhuǎn)換為中間格式,并寫(xiě)入數(shù)據(jù)交換緩沖模塊,其中,所述數(shù)據(jù)交換緩沖模塊用于臨時(shí)存儲(chǔ)寫(xiě)入的中間格式的數(shù)據(jù);從所述數(shù)據(jù)交換緩沖模塊中讀取所述中間格式的數(shù)據(jù);依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息將所述中間格式的數(shù)據(jù)轉(zhuǎn)換為目標(biāo)格式,并寫(xiě)入目標(biāo)地址。優(yōu)選的,所述方法還包括:依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,裝載相應(yīng)的讀取插件和數(shù)據(jù)交換緩沖插件,并向所述讀取插件提供相應(yīng)的運(yùn)行環(huán)境,由所述讀取插件依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀取,并在將讀取的數(shù)據(jù)轉(zhuǎn)換為中間格式后寫(xiě)入數(shù)據(jù)交換緩沖插件,由所述數(shù)據(jù)交換緩沖插件臨時(shí)存儲(chǔ)讀取插件寫(xiě)入的中間格式的數(shù)據(jù);依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息,裝載相應(yīng)的寫(xiě)入插件,并向所述寫(xiě)入插件提供相應(yīng)的運(yùn)行環(huán)境,由所述寫(xiě)入插件從所述數(shù)據(jù)交換緩沖插件中讀取所述中間格式的數(shù)據(jù),并在依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息將所述中間格式的數(shù)據(jù)轉(zhuǎn)換為目標(biāo)格式后,寫(xiě)入目標(biāo)地址。優(yōu)選的,所述方法還包括:在進(jìn)行數(shù)據(jù)的讀取前,將一個(gè)數(shù)據(jù)遷移任務(wù)分解成多個(gè)讀取子任務(wù);所述依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀取的步驟為,在多線程池的讀取運(yùn)行環(huán)境下,進(jìn)行所述多個(gè)讀取子任務(wù)的讀取優(yōu)選的,所述方法還包括:在所述寫(xiě)入模塊將目標(biāo)格式的數(shù)據(jù)寫(xiě)入目標(biāo)地址前,將一個(gè)數(shù)據(jù)遷移任務(wù)分解成多個(gè)寫(xiě)入子任務(wù);所述寫(xiě)入目標(biāo)地址的步驟為,在所述多線程池的寫(xiě)入運(yùn)行環(huán)境下,將與所述多個(gè)寫(xiě)入子任務(wù)相應(yīng)的目標(biāo)格式的數(shù)據(jù)寫(xiě)入目標(biāo)地址。優(yōu)選的,所述數(shù)據(jù)交換緩沖模塊為基于雙緩沖隊(duì)列的內(nèi)存緩沖區(qū)。優(yōu)選的,所述方法還包括:在所述讀取模塊和/或數(shù)據(jù)交換緩沖模塊和/或?qū)懭肽K的運(yùn)行過(guò)程中,監(jiān)控相應(yīng)的運(yùn)行參數(shù),所述運(yùn)行參數(shù)包括讀取和/或臨時(shí)存儲(chǔ)和/或?qū)懭霐?shù)據(jù)的行數(shù)和/或字節(jié)數(shù)。優(yōu)選的,所述數(shù)據(jù)讀取信息包括如下信息中的一種或多種:源數(shù)據(jù)庫(kù)的IP地址、端口號(hào)、庫(kù)名、登錄用戶名、登錄密碼、數(shù)據(jù)庫(kù)表名、過(guò)濾條件;所述數(shù)據(jù)寫(xiě)入信息包括如下信息中的一種或多種:數(shù)據(jù)寫(xiě)入路徑、數(shù)據(jù)目標(biāo)格式。優(yōu)選的,所述配置文件為可擴(kuò)展標(biāo)記語(yǔ)言文件,所述可擴(kuò)展標(biāo)記語(yǔ)言文件的命名規(guī)則為源表名_目的表名_源數(shù)據(jù)庫(kù)類(lèi)型_目的數(shù)據(jù)庫(kù)類(lèi)型.xml。優(yōu)選的,所述方法還包括:存放插件的插件描述文件;依據(jù)所述插件描述文件中存儲(chǔ)的裝載插件所需信息,對(duì)相應(yīng)的插件進(jìn)行注冊(cè),并存儲(chǔ)相應(yīng)的插件注冊(cè)信息;所述裝載相應(yīng)的讀取插件和數(shù)據(jù)交換緩沖插件的步驟,包括:將所述配置文件中的數(shù)據(jù)讀取信息,與所述插件注冊(cè)模塊中存儲(chǔ)的插件注冊(cè)信息進(jìn)行匹配,如果匹配成功,則裝載與所述插件注冊(cè)信息相應(yīng)的插件,所述裝載過(guò)程包括:依據(jù)所述插件描述文件生成相應(yīng)的插件實(shí)例,并根據(jù)所述插件實(shí)例進(jìn)行插件的初始化;所述裝載相應(yīng)的寫(xiě)入插件的步驟,包括:將所述配置文件中的數(shù)據(jù)寫(xiě)入信息,與所述插件注冊(cè)模塊中存儲(chǔ)的插件注冊(cè)信息進(jìn)行匹配,如果匹配成功,則裝載與所述插件注冊(cè)信息相應(yīng)的插件,所述裝載過(guò)程包括:依據(jù)所述插件描述文件生成相應(yīng)的插件實(shí)例,并根據(jù)所述插件實(shí)例進(jìn)行插件的初始化。與現(xiàn)有技術(shù)相比,本申請(qǐng)具有以下優(yōu)點(diǎn):首先,本申請(qǐng)依據(jù)配置文件進(jìn)行數(shù)據(jù)遷移,并且,在數(shù)據(jù)遷移過(guò)程中,利用數(shù)據(jù)交換緩沖模塊臨時(shí)存儲(chǔ)從源地址讀取的數(shù)據(jù),由于數(shù)據(jù)交換緩沖模塊中的數(shù)據(jù)立即被取走并寫(xiě)入至目標(biāo)地址,故整個(gè)數(shù)據(jù)遷移過(guò)程無(wú)需磁盤(pán)中轉(zhuǎn)。因此,相對(duì)于現(xiàn)有技術(shù),能夠縮短數(shù)據(jù)遷移的流程,提高數(shù)據(jù)遷移的性能;另外,在數(shù)據(jù)遷移流程中,用戶無(wú)需監(jiān)控磁盤(pán)空間,故也可以減少運(yùn)維成本。其次,無(wú)論數(shù)據(jù)的源格式如何,本申請(qǐng)都會(huì)將讀取的數(shù)據(jù)轉(zhuǎn)換為預(yù)先規(guī)定的、寫(xiě)入模塊能夠識(shí)別的中間格式,并進(jìn)行臨時(shí)存儲(chǔ),從而能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的通用緩沖管理,以便寫(xiě)入模塊能夠依據(jù)數(shù)據(jù)寫(xiě)入信息將該中間格式的數(shù)據(jù)轉(zhuǎn)換為目標(biāo)格式,并寫(xiě)入目標(biāo)地址;所述中間格式使得讀取模塊和寫(xiě)入模塊的功能獨(dú)立,這樣,讀取模塊和寫(xiě)入模塊的開(kāi)發(fā)能夠單獨(dú)進(jìn)行,既能夠快速支持新的異構(gòu)數(shù)據(jù)源,又能夠降低開(kāi)發(fā)難度和開(kāi)發(fā)成本。再者,本申請(qǐng)還可以采用線程池進(jìn)行所述多個(gè)讀取子任務(wù)的讀取,和/或,多個(gè)寫(xiě)入子任務(wù)的寫(xiě)入,而任意兩個(gè)讀取/寫(xiě)入子任務(wù)之間互不影響,因此能夠?qū)崿F(xiàn)并行讀取和/或并行寫(xiě)入,從而能夠大大縮短數(shù)據(jù)遷移流程,同時(shí)進(jìn)一步提高數(shù)據(jù)遷移性能。進(jìn)一步,相對(duì)于現(xiàn)有技術(shù),在長(zhǎng)的數(shù)據(jù)本文檔來(lái)自技高網(wǎng)...

【技術(shù)保護(hù)點(diǎn)】
一種數(shù)據(jù)遷移系統(tǒng),其特征在于,包括:配置讀取模塊,用于讀取數(shù)據(jù)遷移任務(wù)的配置文件,所述配置文件中包括有數(shù)據(jù)讀取信息和數(shù)據(jù)寫(xiě)入信息;讀取模塊,用于依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀取,并在將讀取的數(shù)據(jù)轉(zhuǎn)換為中間格式后,寫(xiě)入數(shù)據(jù)交換緩沖模塊;數(shù)據(jù)交換緩沖模塊,用于臨時(shí)存儲(chǔ)寫(xiě)入的中間格式的數(shù)據(jù);及寫(xiě)入模塊,用于從所述數(shù)據(jù)交換緩沖模塊中讀取所述中間格式的數(shù)據(jù),并在依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息將所述中間格式的數(shù)據(jù)轉(zhuǎn)換為目標(biāo)格式后,寫(xiě)入目標(biāo)地址。
【技術(shù)特征摘要】
1.一種數(shù)據(jù)遷移系統(tǒng),其特征在于,包括:配置讀取模塊,用于讀取數(shù)據(jù)遷移任務(wù)的配置文件,所述配置文件中包括有數(shù)據(jù)讀取信息和數(shù)據(jù)寫(xiě)入信息;讀取模塊,用于依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀取,并在將讀取的數(shù)據(jù)轉(zhuǎn)換為中間格式后,寫(xiě)入數(shù)據(jù)交換緩沖模塊;數(shù)據(jù)交換緩沖模塊,用于臨時(shí)存儲(chǔ)寫(xiě)入的中間格式的數(shù)據(jù);及寫(xiě)入模塊,用于從所述數(shù)據(jù)交換緩沖模塊中讀取所述中間格式的數(shù)據(jù),并在依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息將所述中間格式的數(shù)據(jù)轉(zhuǎn)換為目標(biāo)格式后,寫(xiě)入目標(biāo)地址;所述系統(tǒng)還包括:保存模塊,用于將所述數(shù)據(jù)讀取信息和/或所述數(shù)據(jù)寫(xiě)入信息所包括的變化參數(shù),作為變量保存在一個(gè)通用的配置文件中。2.一種數(shù)據(jù)遷移方法,其特征在于,包括:讀取數(shù)據(jù)遷移任務(wù)的配置文件,所述配置文件中包括有數(shù)據(jù)讀取信息和數(shù)據(jù)寫(xiě)入信息;依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀??;將讀取的數(shù)據(jù)轉(zhuǎn)換為中間格式,并寫(xiě)入數(shù)據(jù)交換緩沖模塊,其中,所述數(shù)據(jù)交換緩沖模塊用于臨時(shí)存儲(chǔ)寫(xiě)入的中間格式的數(shù)據(jù);從所述數(shù)據(jù)交換緩沖模塊中讀取所述中間格式的數(shù)據(jù);依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息將所述中間格式的數(shù)據(jù)轉(zhuǎn)換為目標(biāo)格式,并寫(xiě)入目標(biāo)地址;所述方法還包括:將所述數(shù)據(jù)讀取信息和/或所述數(shù)據(jù)寫(xiě)入信息所包括的變化參數(shù),作為變量保存在一個(gè)通用的配置文件中。3.如權(quán)利要求2所述的方法,其特征在于,還包括:依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,裝載相應(yīng)的讀取插件和數(shù)據(jù)交換緩沖插件,并向所述讀取插件提供相應(yīng)的運(yùn)行環(huán)境,由所述讀取插件依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀取,并在將讀取的數(shù)據(jù)轉(zhuǎn)換為中間格式后寫(xiě)入數(shù)據(jù)交換緩沖插件,由所述數(shù)據(jù)交換緩沖插件臨時(shí)存儲(chǔ)讀取插件寫(xiě)入的中間格式的數(shù)據(jù);依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息,裝載相應(yīng)的寫(xiě)入插件,并向所述寫(xiě)入插件提供相應(yīng)的運(yùn)行環(huán)境,由所述寫(xiě)入插件從所述數(shù)據(jù)交換緩沖插件中讀取所述中間格式的數(shù)據(jù),并在依據(jù)所述配置文件中的數(shù)據(jù)寫(xiě)入信息將所述中間格式的數(shù)據(jù)轉(zhuǎn)換為目標(biāo)格式后,寫(xiě)入目標(biāo)地址。4.如權(quán)利要求2所述的方法,其特征在于,還包括:在進(jìn)行數(shù)據(jù)的讀取前,將一個(gè)數(shù)據(jù)遷移任務(wù)分解成多個(gè)讀取子任務(wù);所述依據(jù)所述配置文件中的數(shù)據(jù)讀取信息,進(jìn)行數(shù)據(jù)的讀取的步驟為,在多線程池的讀取運(yùn)行環(huán)境下,進(jìn)行所述多個(gè)讀取子任務(wù)的讀取。5.如權(quán)利要求...
【專(zhuān)利技術(shù)屬性】
技術(shù)研發(fā)人員:王磊,
申請(qǐng)(專(zhuān)利權(quán))人:阿里巴巴集團(tuán)控股有限公司,
類(lèi)型:發(fā)明
國(guó)別省市:
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。