專利名稱::一種數據遷移系統和方法一種數據遷移系統和方法
技術領域:
本申請涉及計算機系統數據處理
技術領域:
,特別是涉及一種數據遷移系統和方法。
背景技術:
:目前,隨著網絡技術的發展和信息量的增加,網絡上形成了數量巨大的分布的異構信息源。各企事業內部由于地理位置的不同或新需求的增加也形成了一個分布式的、異構的且數量巨大的數據集合。異構的數據源出現的一個很重要的原因是由于多種商業數據庫的同時存在。異構數據源形式多樣,從結構上來區分,其不僅可以包括數據庫(如關系數據庫)中結構化數據,而且還可以包括文件系統中非結構化的數據,如一般的文本文件、電子郵件、演示文稿和各種文檔等。這些數據源往往分布在地理位置上,數據格式和代碼不同一,這些都直接推動了對異構數據源的數據共享和透明訪問的需求的產生。因此,如何將數據在這些異構數據源之間進行遷移,從而維持一個一致、完整的全局模式,具有重要的意義。在現有技術中,常用的數據遷移方法主要采用導出/導入方式。假設欲將數據從Oracle數據庫遷移至HDFS(分布式文件系統,HadoopDistributedFileSystem)系統,貝丨J現有技術首先采用Oracle的數據導出命令或工具將源數據導出為文件,然后利用工具將文件格式、編碼進行轉化后拷貝到HDFS系統中。現有技術具有如下缺點1、數據的導出和轉碼過程都需要磁盤轉儲,由于磁盤轉儲需要大量的磁盤I/0(輸入/輸出,input/output),而磁盤是慢速設備,這就導致數據遷移的流程比較長,數據遷移的性能低下;另外,在長的數據遷移流程中,用戶不僅需要自己銜接上下游過程,對每個過程進行監控,而且還要監控磁盤空間,這大大提高了運維成本;2、雖然,目前成熟的數據導入導出工具比較多,但是一般都只能支持一個或者幾個特定類型的數據庫;一旦擁有很多異構數據源,如Mysql、Oracle、Rac>Hive等數據庫/文件系統,并且需要經常在這些異構數據源之間導入導出數據,那么需要開發/維護/學習使用一批這樣的工具,并且隨著數據源類型的增加,需要的導入導出工具數目會呈線性增長趨勢,而導入導出工具的開發會花費大量的開發成本。
發明內容本申請所要解決的技術問題是,提供一種數據遷移系統和方法,以提高數據遷移的性能,降低數據遷移所花費的運維成本和開發成本。為了解決上述問題,本申請公開了一種數據遷移系統,包括配置讀取模塊,用于讀取數據遷移任務的配置文件,所述配置文件中包括有數據讀取信息和數據寫入信息;讀取模塊,用于依據所述配置文件中的數據讀取信息,進行數據的讀取,并在將讀取的數據轉換為中間格式后,寫入數據交換緩沖模塊;數據交換緩沖模塊,用于臨時存儲寫入的中間格式的數據;及寫入模塊,用于從所述數據交換緩沖模塊中讀取所述中間格式的數據,并在依據所述配置文件中的數據寫入信息將所述中間格式的數據轉換為目標格式后,寫入目標地址。另一方面,本申請還公開了一種數據遷移方法,包括讀取數據遷移任務的配置文件,所述配置文件中包括有數據讀取信息和數據寫入信息;依據所述配置文件中的數據讀取信息,進行數據的讀取;將讀取的數據轉換為中間格式,并寫入數據交換緩沖模塊,其中,所述數據交換緩沖模塊用于臨時存儲寫入的中間格式的數據;從所述數據交換緩沖模塊中讀取所述中間格式的數據;依據所述配置文件中的數據寫入信息將所述中間格式的數據轉換為目標格式,并寫入目標地址。優選的,所述方法還包括依據所述配置文件中的數據讀取信息,裝載相應的讀取插件和數據交換緩沖插件,并向所述讀取插件提供相應的運行環境,由所述讀取插件依據所述配置文件中的數據讀取信息,進行數據的讀取,并在將讀取的數據轉換為中間格式后寫入數據交換緩沖插件,由所述數據交換緩沖插件臨時存儲讀取插件寫入的中間格式的數據;依據所述配置文件中的數據寫入信息,裝載相應的寫入插件,并向所述寫入插件提供相應的運行環境,由所述寫入插件從所述數據交換緩沖插件中讀取所述中間格式的數據,并在依據所述配置文件中的數據寫入信息將所述中間格式的數據轉換為目標格式后,寫入目標地址。優選的,所述方法還包括在進行數據的讀取前,將一個數據遷移任務分解成多個讀取子任務;所述依據所述配置文件中的數據讀取信息,進行數據的讀取的步驟為,在多線程池的讀取運行環境下,進行所述多個讀取子任務的讀取優選的,所述方法還包括在所述寫入模塊將目標格式的數據寫入目標地址前,將一個數據遷移任務分解成多個寫入子任務;所述寫入目標地址的步驟為,在所述多線程池的寫入運行環境下,將與所述多個寫入子任務相應的目標格式的數據寫入目標地址。優選的,所述數據交換緩沖模塊為基于雙緩沖隊列的內存緩沖區。優選的,所述方法還包括在所述讀取模塊和/或數據交換緩沖模塊和/或寫入模塊的運行過程中,監控相應的運行參數,所述運行參數包括讀取和/或臨時存儲和/或寫入數據的行數和/或字節數。優選的,所述數據讀取信息包括如下信息中的一種或多種源數據庫的IP地址、端口號、庫名、登錄用戶名、登錄密碼、數據庫表名、過濾條件;所述數據寫入信息包括如下信息中的一種或多種數據寫入路徑、數據目標格式。優選的,所述配置文件為可擴展標記語言文件,所述可擴展標記語言文件的命名規則為源表名_目的表名_源數據庫類型_目的數據庫類型.xml。優選的,所述方法還包括存放插件的插件描述文件;依據所述插件描述文件中存儲的裝載插件所需信息,對相應的插件進行注冊,并存儲相應的插件注冊信息;所述裝載相應的讀取插件和數據交換緩沖插件的步驟,包括將所述配置文件中的數據讀取信息,與所述插件注冊模塊中存儲的插件注冊信息進行匹配,如果匹配成功,則裝載與所述插件注冊信息相應的插件,所述裝載過程包括依據所述插件描述文件生成相應的插件實例,并根據所述插件實例進行插件的初始化;所述裝載相應的寫入插件的步驟,包括將所述配置文件中的數據寫入信息,與所述插件注冊模塊中存儲的插件注冊信息進行匹配,如果匹配成功,則裝載與所述插件注冊信息相應的插件,所述裝載過程包括依據所述插件描述文件生成相應的插件實例,并根據所述插件實例進行插件的初始化。與現有技術相比,本申請具有以下優點首先,本申請依據配置文件進行數據遷移,并且,在數據遷移過程中,利用數據交換緩沖模塊臨時存儲從源地址讀取的數據,由于數據交換緩沖模塊中的數據立即被取走并寫入至目標地址,故整個數據遷移過程無需磁盤中轉。因此,相對于現有技術,能夠縮短數據遷移的流程,提高數據遷移的性能;另外,在數據遷移流程中,用戶無需監控磁盤空間,故也可以減少運維成本。其次,無論數據的源格式如何,本申請都會將讀取的數據轉換為預先規定的、寫入模塊能夠識別的中間格式,并進行臨時存儲,從而能夠實現對數據的通用緩沖管理,以便寫入模塊能夠依據數據寫入信息將該中間格式的數據轉換為目標格式,并寫入目標地址;所述中間格式使得讀取模塊和寫入模塊的功能獨立,這樣,讀取模塊和寫入模塊的開發能夠單獨進行,既能夠快速支持新的異構數據源,又能夠降低開發難度和開發成本。再者,本申請還可以采用線程池進行所述多個讀取子任務的讀取,和/或,多個寫入子任務的寫入,而任意兩個讀取/寫入子任務之間互不影響,因此能夠實現并行讀取和/或并行寫入,從而能夠大大縮短數據遷移流程,同時進一步提高數據遷移性能。進一步,相對于現有技術,在長的數據遷移流程中,用戶不僅需要自己銜接上下游過程,對每個過程進行監控,而且還要監控磁盤空間;本申請會在短的數據遷移流程中自動為用戶呈現數據遷移的運行參數,例如,當前讀取了多少字節數,臨時存儲了多少字節數,寫入了多少字節數,所述呈現使得用戶對數據遷移流程一目了然。最后,本申請可以采用框架+插件的結構開發數據遷移系統,作為系統的框架,插件式數據遷移平臺相當于一個數據中轉平臺,而插件則為訪問不同類型的數據源(數據庫/文件系統)提供實現,支持以插件的形式開發每個數據源的訪問功能;這樣,用戶可以很方便的往插件式數據遷移平臺增加新的插件,使插件式數據遷移平臺快速支持新的數據庫或者文件系統,增強系統的靈活性和擴展性;同時,相對于現有技術,為了訪問一個新的數據源,需要大量的人力開發和測試,才能開發一套導入導出工具,而本申請的插件只需較小的工作量和開發成本,因此能夠大大降低開發成本。圖1是本申請一種數據遷移系統實施例1的結構圖;圖2是本申請一種企業中數據遷移的示意圖;圖3是本申請一種數據遷移系統實施例2的結構圖;圖4是本申請一種數據遷移方法實施例1的流程圖;圖5是本申請一種數據遷移方法實施例2的流程圖。具體實施例方式為使本申請的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖和具體實施方式對本申請作進一步詳細的說明。本申請實施例的核心構思之一在于,依據配置文件進行數據遷移,并且,在數據遷移過程中,利用數據交換緩沖模塊臨時存儲從源地址讀取的數據,由于數據交換緩沖模塊中的數據立即被取走并寫入至目標地址,故整個數據遷移過程無需磁盤中轉。因此,相對于現有技術,能夠縮短數據遷移的流程,提高數據遷移的性能;另外,在數據遷移流程中,用戶無需監控磁盤空間,故也可以減少運維成本。參照圖1,其示出了本申請一種數據遷移系統實施例1的結構圖,具體可以包括配置讀取模塊101,用于讀取數據遷移任務的配置文件,所述配置文件中可以包括有數據讀取信息和數據寫入信息;讀取模塊102,用于依據所述配置文件中的數據讀取信息,進行數據的讀取,并在將讀取的數據轉換為中間格式后,寫入數據交換緩沖模塊;數據交換緩沖模塊103,用于臨時存儲寫入的中間格式的數據;及寫入模塊104,用于從所述數據交換緩沖模塊中讀取所述中間格式的數據,并依據所述配置文件中的數據寫入信息,將所述中間格式的數據轉換為目標格式后,寫入目標地址。本申請可以適用于任意數據庫之間、任意文件系統之間或者任意數據庫和文件系統之間的數據遷移。在實際中,本申請可以應用在企業倉庫領域、電子商務數據倉庫、企業信息集成等領域。參照圖2,其示出了本申請一種企業中數據遷移的示意圖,由于企業數據倉庫用于支撐企業的運營和決策,因而需要企業中各個部門的數據,而各個部門的業務系統由于建設時間不同,決策者不同,往往采用了不同的系統和數據庫,如財務系統采用DB2數據庫,人力資源系統采用Oracle數據庫,銷售系統采用MSSQLserver數據庫,CRM(客戶關系管理系統,CustomerRelationshipManagement)米用HTTP(超文本傳輸,HyperTextTransferProtocol)接口的數據庫,物流系統采用MySQL數據庫,等等。因此,這時可以采用本申請將數據從企業業務系統導入到企業數據倉庫中。另外,企業數據倉庫的數據經過ETL(數據提取、轉換和加載,Extraction-Transformation-Loading)過程后,形成了分析型的結果數據,還需要將這些結果數據導出到企業業務系統、采用Oracel數據庫的MSTR(MicroStrategy)報表系統或采用MySQL的自建報表系統,或者可視化引擎中形成圖表等圖形表現形式,供企業經營決策者使用。每一次數據遷移都可以當作一個數據遷移任務,這樣,本申請的數據遷移任務具體可以包括在異構數據庫之間或者異構文件系統之間或者異構數據庫和文件系統之間進行數據遷移的任務。本申請對具體的數據遷移任務不加以限制。關于配置文件本申請實施例采用配置文件來描述每個數據遷移任務的信息。在實際應用中可由一專門的配置模塊,依據用戶配置生成數據遷移任務的配置文件。在本申請實施例中,優選的是,所述配置文件可以為XML(可擴展標記語言文件,ExtensibleMarkupLanguage)格式,所述可擴展標記語言文件的命名規則可以為源表名_目的表名_源數據庫類型_目的數據庫類型.xmlο下面以MySQL->HDFS的數據遷移(表示遷移方向)為例,說明配置文件中應該描述數據遷移任務的信息。首先,由于要從mysql數據庫讀取數據,故需要了解源數據庫的ip地址、端口、用戶名、密碼等數據讀取信息,并將這些信息存放在每個數據遷移任務的XML文件中;其次,由于要將數據寫入至HDFS系統,故還需要了解數據寫入路徑、數據目標格式等數據寫入信息,并將這些信息存放在每個數據遷移任務的XML文件中。因此,在本申請的一種優選實施例中,所述數據讀取信息具體可以包括如下信息中的一種或多種源數據庫的IP地址、端口號、庫名、登錄用戶名、登錄密碼、數據庫表名、過濾條件;所述過濾條件可以是在where條件中過濾所需的記錄,或者指定拖表所需要的列等等,本申請對具體的過濾條件不加以限制。所述數據寫入信息具體可以包括如下信息中的一種或多種數據寫入路徑、數據目標格式。為了方便用戶生成數據遷移任務的配置文件,可通過命令行配置向導生成基本的配置文件。必要時,如果還需深入定制,可以在生成的XML文件基礎上進行再次修改。在本申請的一種優選實施例中,針對mysql分庫分表較多的情況,可以使用變量達到同一模版支持多個數據遷移任務的目的。具體可以通過如下示例來說明假設需要同步Uic中bmw_USerS這表,而該表的數據量比較大,因此分散在16個庫、1024張表中uic_main_0000bmw_users_uic_main_0001bmw_users_uic_main_0002bmw_users_uic_main_0003bmw_users_[O192-0255]uic_main_0004bmw_users_uic_main_0005bmw_users_uic_main_0006bmw_users_uic_main_0007bmw_users_uic_main_0008bmw_users_uic_main_0009bmw_users_uic_main_0010bmw_users_uic_main_00Ilbmw_users_uic_main_00I2bmw_users_uic_main_00I3bmw_users_uic_main_0014bmw_users_uic_main_00I5bmw_users_對于這類表,本優選實施例通常將變化的參數,比如庫名和/或表名等作為變量保存在一個通用的配置文件中,然后在運行時,通過定義不同的參數值從而達到一個xml文件多表使用的目的。對應上例,在生成配置文件的過程中,可以將Dtable_name作為表名的變量,將Ddbname作為庫名的變量,然后,在運行時為該變量賦值,一種賦值示例如下/home/taobao/datax/bin/datax.py-p"-Dtable_name=bmw_users_-Ddbname=uic_main_0008"job.xml上述不例定位了uic_main_0008bmw_users_這個數據庫和數據表作為數據的源地址。關于中間格式無論數據的源格式如何,本申請都會將讀取的數據轉換為預先規定的、寫入模塊能夠識別的中間格式,并寫入數據交換緩沖模塊,從而能夠實現對數據的通用緩沖管理,以便寫入模塊能夠依據數據寫入信息將該中間格式的數據轉換為目標格式,并寫入目標地址。所述中間格式使得讀取模塊和寫入模塊的功能相對獨立,使得讀取模塊和寫入模塊的開發能夠單獨進行,這既能夠快速支持新的異構數據源,又能夠降低開發難度和開發成本。在具體實現中,可以預先規定數組格式,或者Java中Map類格式的中間格式。其中,Map類以按鍵/數值對的形式存儲數據,和數組非常相似,在數組中存在的索引,它們本身也是對象。Map類的接口具體可以包括Map---實現MapMap.Entry—Map的內部類,描述Map中的按鍵/數值對。SortedMap---擴展Map,使按鍵保持升序排列當然除了數組格式、Java中Map類格式外,所述中間格式還可以其其它格式,本申請對具體的中間格式不加以限制。關于數據交換緩沖模塊103在本申請的一種優選實施例中,所述數據交換緩沖模塊103可以為基于雙緩沖隊列的內存緩沖區。統隊列是讀取線程和寫入線程從同一個隊列中存取數據,必然需要互斥訪問,在互相同步等待中浪費了寶貴的時間,使隊列吞吐量受影響。而雙緩沖隊使用兩個隊列,將讀寫分離,一個隊列專門用來讀,另一個專門用來寫,當讀隊列空或寫隊列滿時,將兩個隊列互換。這里為了保證隊列的讀寫順序,當讀隊列為空且寫隊列不為空的時候才允許兩個隊列互換。在本申請的又一種優選實施例中,所述系統還可以包括讀取分解模塊,用于在所述讀取模塊進行數據的讀取前,將一個數據遷移任務分解成多個讀取子任務;所述讀取模塊,具體用于在多線程池的讀取運行環境下,進行所述多個讀取子任務的讀取。例如,用戶將某張Oracle數據表導入到HDFS文件系統,則所述讀取分解模塊可以將這張表按行切分為N個區間,假設N=100,則可以將所述100個讀取子任務放入隊列。又如,如果用戶將HDFS文件系統的數據導入至某張Oracle數據表,則所述讀取分解模塊可以對HDFS文件系統的文件進行分解,本申請對具體的分解過程不加以限制。進一步,在多線程池的讀取運行環境下,進行所述多個讀取子任務的讀取,主要具有如下優點1.線程的重復利用,一個線程完成一個讀取子任務求后,會被重新丟回到該線程池,繼續等待處理下一個讀取子任務;2.線程的創建,假如當前的讀取子任務多于當前了處理線程,新的讀取子任務得不到處理后,線程池會主動創建新的線程處理新的讀取子任務;3.線程的銷毀,假如當前的讀取子任務比較少,大部分線程處于空閑狀態中得不到讀取子任務,線程池會主動關閉一些長時間沒處理讀取子任務的線程,減少資源占用。在具體實現中,所述多線程池中的線程數目可由用戶在配置文字中設置,也可具有默認值,例如,上例中可以設置線程數目為40。由于采用線程池進行所述多個讀取子任務的讀取,任意兩個讀取子任務之間互不影響,因此能夠實現讀取子任務的并行讀取,從而能夠大大縮短數據遷移流程,同時進一步提高數據遷移性能。同理,在本申請的再一種優選實施例中,所述系統還可以包括寫入分解模塊,用于在所述寫入模塊將目標格式的數據寫入目標地址前,將一個數據遷移任務分解成多個寫入子任務;所述寫入模塊,具體用于在所述多線程池的寫入運行環境下,將與所述多個寫入子任務相應的目標格式的數據寫入目標地址。對于采用線程池進行所述多個寫入子任務的寫入,由于寫入過程與上述讀取過程類似,故在此不作贅述,相互參照即可。由于采用線程池進行所述多個寫入子任務的寫入,任意兩個讀取子任務之間互不影響,因此能夠實現寫入子任務的并行寫入,從而能夠大大縮短數據遷移流程,同時進一步提高數據遷移性能。在本申請的再一種優選實施例中,所述系統還可以包括監控計數模塊,用于在所述讀取模塊和/或數據交換緩沖模塊和/或寫入模塊的運行過程中,監控相應的運行參數,所述運行參數具體可以包括讀取和/或臨時存儲和/或寫入數據的行數和/或字節數。相對于現有技術,在長的數據遷移流程中,用戶不僅需要自己銜接上下游過程,對每個過程進行監控,而且還要監控磁盤空間;本申請會在短的數據遷移流程中自動為用戶呈現數據遷移的運行參數,例如,當前讀取了多少字節數,臨時存儲了多少字節數,寫入了多少字節數,所述呈現使得用戶對數據遷移流程一目了然。參照圖3,其示出了本申請一種數據遷移系統實施例2的結構圖,具體可以包括插件式數據遷移平臺301,可以進一步包括插件裝載模塊311,用于讀取數據遷移任務的配置文件,并依據所述配置文件中的數據讀取信息和數據寫入信息,裝載相應的讀取插件、寫入插件和數據交換緩沖插件;及執行引擎模塊312,用于為插件提供運行環境;插件302,可以進一步包括讀取插件321,用于依據所述配置文件中的數據讀取信息,進行數據的讀取,并在將讀取的數據轉換為中間格式后,寫入數據交換緩沖插件322;數據交換緩沖插件322,用于臨時存儲讀取插件寫入的中間格式的數據;及寫入插件323,用于從所述數據交換緩沖插件322中讀取所述中間格式的數據,并在依據所述配置文件中的數據寫入信息,將所述中間格式的數據轉換為目標格式后,寫入目標地址。本實施例2與實施例1的區別在于,采用框架+插件的結構開發數據遷移系統,作為系統的框架,插件式數據遷移平臺301相當于一個數據中轉平臺,而插件302則為訪問不同類型的數據源(數據庫/文件系統)提供實現。本實施例以插件的形式開發每個數據源的訪問功能,具有如下優點1、用戶可以很方便地往插件式數據遷移平臺301增加新的插件,使插件式數據遷移平臺301支持新的數據庫或者文件系統;為了訪問一個新的數據源,現有技術需要大量的人力開發和測試,才能開發一套導入導出工具,而本申請的插件只需較小的工作量和開發成本;2、插件式數據遷移平臺301通過封裝插件的控制邏輯,將能夠執行數據遷移任務的插件組合在一起,能夠在受管理插件中建立其協作關系,進而通過插件實現系統功能。關于插件管理插件管理是插件式數據遷移平臺301的核心功能,其主要用于根據插件的描述信息對插件進行統一的管理。管理的主要內容可以包括插件的裝載、插件運行環境提供等。在具體實現中,用戶可以根據插件式數據遷移平臺301定義的接口,自行開發插件。例如,插件可以實現為一個JAR(Java歸檔文件,JavaArchive)包,用戶將此JAR包放入插件式數據遷移平臺301定義的plugins(插件)目錄下,同時plugins,xml文件中進行注冊,就可以使用此插件了。為了說明插件的裝載功能,在本申請的一種優選實施例中,所述插件式數據遷移平臺301還可以包括插件存放模塊,用于存放插件的插件描述文件;插件注冊模塊,用于依據所述插件描述文件中存儲的裝載插件所需信息,對相應的插件進行注冊,并存儲相應的插件注冊信息;此時,所述插件裝載模塊311,可以具體用于將所述配置文件中的數據讀取信息、數據寫入信息,與所述插件注冊模塊中存儲的插件注冊信息進行匹配,如果匹配成功,則裝載與所述插件注冊信息相應的插件。所述裝載過程具體可以包括依據所述插件描述文件生成相應的插件實例,并根據所述插件實例進行插件的初始化。例如,所述插件描述文件中可以包括基本信息字段plugin、依賴插件信息字段required、功能定義信息字段define和功能實現信息字段implement等,其中,所述基本信息字段plugin存儲的信息可以包括插件標識符。在具體實現中,所述插件標識符可以用數據源類型和相應的功能來表示,例如,插件標識符A_0,A代表Oracle數據庫,O代表讀取數據,又如,插件標識符F_l,F代表IDFS文件系統,O代表與入數據,等等。在實際中,所述插件的初始化可以進一步包括讀入所述插件描述文件中的數據信息,將相應插件和插件式數據遷移平臺301中其它部分連接在一起等等。本申請對具體的插件初始化和插件裝載方案不加以限制。為了說明執行引擎模塊312的功能,在本申請的一種優選實施例中,所述插件的功能還可以包括讀取分解插件,用于在所述讀取插件321進行數據的讀取前,將一個數據遷移任務分解成多個讀取子任務;此時,所述執行引擎模塊312,可以進一步包括并發讀取環境提供子模塊,用于為所述讀取插件321提供多線程池的讀取運行環境,由所述讀取插件321在所述多線程池的讀取運行環境下,進行所述多個讀取子任務的讀取。同理,在本申請的另一種優選實施例中,所述插件301還可以包括寫入分解插件,用于在所述寫入插件322將目標格式的數據寫入目標地址前,將一個數據遷移任務分解成多個寫入子任務;此時,所述執行引擎模塊312,可以進一步包括并發寫入環境提供子模塊,用于為所述寫入插件322提供多線程池的寫入運行環境,由所述寫入插件322在所述多線程池的寫入運行環境下,將與所述多個寫入子任務相應的目標格式的數據并發寫入目標地址。在本申請的再一種優選實施例中,所述插件式數據遷移平臺301還可以具有監控計數功能,相應地,其還可以包括監控計數模塊,用于在所述讀取插件321和/或數據交換緩沖插件322和/或寫入插件323的運行過程中,監控相應的運行參數,所述運行參數具體可以包括讀取和/或臨時存儲和/或寫入數據的行數和/或字節數。需要說明的是,在具體實現中,還可以將讀取插件321中將讀取的數據轉換為中間格式的功能集成在專門的第一插件中,也可以將寫入插件323中依據所述配置文件中的數據寫入信息,將所述中間格式的數據轉換為目標格式的功能集成在專門的第二插件中;總之,本領域技術人員可以依據不同的功能分配開發不同的插件,本申請對插件的功能分配和開發不加以限制。另外,還可以在所述插件式數據遷移平臺301中設置異常日志模塊,用于平臺的異常處理和日志記錄。其中,所述異常處理可以包括異常對象的定義,也可以包括當異常出現時,根據實際情況封裝異常對象產生;所述日志記錄可以保存每個數據遷移任務的執行記錄,例如,可以保存在平臺主目錄下的log文件夾下,日志文件可以數據遷移任務的xml配置文件名+"·"+時間戳+".log"為方式命名。對于系統實施例2而言,由于其與系統實施例1基本相似,所以描述的比較簡單,相關之處參見系統實施例1的部分說明即可。參照圖4,其示出了本申請一種數據遷移方法實施例1的流程圖,具體可以包括步驟401、讀取數據遷移任務的配置文件,所述配置文件中可以包括有數據讀取信息和數據寫入信息;步驟402、依據所述配置文件中的數據讀取信息,進行數據的讀取;步驟403、將讀取的數據轉換為中間格式,并寫入數據交換緩沖模塊,其中,所述數據交換緩沖模塊可用于臨時存儲寫入的中間格式的數據;步驟404、從所述數據交換緩沖模塊中讀取所述中間格式的數據;步驟405、依據所述配置文件中的數據寫入信息將所述中間格式的數據轉換為目標格式,并寫入目標地址。在本申請實施例中,優選的是,所述數據讀取信息可以包括如下信息中的一種或多種源數據庫的IP地址、端口號、庫名、登錄用戶名、登錄密碼、數據庫表名、過濾條件;所述數據寫入信息可以包括如下信息中的一種或多種數據寫入路徑、數據目標格式。在本申請實施例中,優選的是,所述配置文件可以為可擴展標記語言文件,所述可擴展標記語言文件的命名規則可以為源表名_目的表名_源數據庫類型_目的數據庫類型·xml。在本申請的一種優選實施例中,所述方法還可以包括在進行數據的讀取前,將一個數據遷移任務分解成多個讀取子任務;此時,所述依據所述配置文件中的數據讀取信息,進行數據的讀取的步驟可以為,在多線程池的讀取運行環境下,進行所述多個讀取子任務的讀取在本申請的另一種優選實施例中,所述方法還可以包括在所述寫入模塊將目標格式的數據寫入目標地址前,將一個數據遷移任務分解成多個寫入子任務;相應地,所述寫入目標地址的步驟為,在所述多線程池的寫入運行環境下,將與所述多個寫入子任務相應的目標格式的數據寫入目標地址。在本申請實施例中,優選的是,所述中間格式可以包括數組格式,或者Java中Map類格式。在本申請實施例中,優選的是,所述數據交換緩沖模塊為基于雙緩沖隊列的內存緩沖區。在本申請的再一種優選實施例中,所述方法還可以包括在所述讀取模塊和/或數據交換緩沖模塊和/或寫入模塊的運行過程中,監控相應的運行參數,所述運行參數可以包括讀取和/或臨時存儲和/或寫入數據的行數和/或字節數。參照圖5,其示出了本申請一種數據遷移方法實施例2的流程圖,具體可以包括步驟501、依據所述配置文件中的數據讀取信息,裝載相應的讀取插件和數據交換緩沖插件,并向所述讀取插件提供相應的運行環境,由所述讀取插件依據所述配置文件中的數據讀取信息,進行數據的讀取,并在將讀取的數據轉換為中間格式后寫入數據交換緩沖插件,由所述數據交換緩沖插件臨時存儲讀取插件寫入的中間格式的數據;步驟502、依據所述配置文件中的數據寫入信息,裝載相應的寫入插件,并向所述寫入插件提供相應的運行環境,由所述寫入插件從所述數據交換緩沖插件中讀取所述中間格式的數據,并在依據所述配置文件中的數據寫入信息將所述中間格式的數據轉換為目標格式后,寫入目標地址。本實施例與實施例1的區別在于,以插件作為訪問不同類型的數據源(數據庫/文件系統)提供實現,也即以插件的形式開發每個數據源的訪問功能;因此,本實施例通過封裝插件的控制邏輯,將能夠執行數據遷移任務的插件組合在一起,能夠在受管理插件中建立其協作關系,進而通過插件實現系統功能。在本申請的一種優選實施例中,所述方法還可以包括存放插件的插件描述文件;依據所述插件描述文件中存儲的裝載插件所需信息,對相應的插件進行注冊,并存儲相應的插件注冊信息;此時,所述裝載相應的讀取插件和數據交換緩沖插件的步驟,可以進一步包括將所述配置文件中的數據讀取信息,與所述插件注冊模塊中存儲的插件注冊信息進行匹配,如果匹配成功,則裝載與所述插件注冊信息相應的插件,所述裝載過程可以包括依據所述插件描述文件生成相應的插件實例,并根據所述插件實例進行插件的初始化;所述裝載相應的寫入插件的步驟,可以進一步包括將所述配置文件中的數據寫入信息,與所述插件注冊模塊中存儲的插件注冊信息進行匹配,如果匹配成功,則裝載與所述插件注冊信息相應的插件,所述裝載過程可以包括依據所述插件描述文件生成相應的插件實例,并根據所述插件實例進行插件的初始化。為了說明如何向所述讀取插件提供相應的運行環境,在本申請的一種優選實施例中,所述插件還可以包括讀取分解插件,用于在所述讀取插件進行數據的讀取前,將一個數據遷移任務分解成多個讀取子任務;此時,所述向所述讀取插件提供相應的運行環境的步驟,可以包括為所述讀取插件提供多線程池的讀取運行環境,由所述讀取插件在所述多線程池的讀取運行環境下,進行所述多個讀取子任務的讀取。同理,在本申請的另一種優選實施例中,所述插件還可以包括寫入分解插件,用于在所述寫入插件將目標格式的數據寫入目標地址前,將一個數據遷移任務分解成多個寫入子任務;此時,所述向所述寫入插件提供相應的運行環境的步驟,可以進一步包括為所述寫入插件提供多線程池的寫入運行環境,由所述寫入插在所述多線程池的寫入運行環境下,將與所述多個寫入子任務相應的目標格式的數據并發寫入目標地址。對于方法實施例2而言,由于其與方法實施例1基本相似,所以描述的比較簡單,相關之處參見方法實施例1的部分說明即可。本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。以上對本申請所提供的一種數據遷移系統和方法,進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術人員,依據本申請的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制。權利要求1.一種數據遷移系統,其特征在于,包括配置讀取模塊,用于讀取數據遷移任務的配置文件,所述配置文件中包括有數據讀取信息和數據寫入信息;讀取模塊,用于依據所述配置文件中的數據讀取信息,進行數據的讀取,并在將讀取的數據轉換為中間格式后,寫入數據交換緩沖模塊;數據交換緩沖模塊,用于臨時存儲寫入的中間格式的數據'及寫入模塊,用于從所述數據交換緩沖模塊中讀取所述中間格式的數據,并在依據所述配置文件中的數據寫入信息將所述中間格式的數據轉換為目標格式后,寫入目標地址。2.一種數據遷移方法,其特征在于,包括讀取數據遷移任務的配置文件,所述配置文件中包括有數據讀取信息和數據寫入信依據所述配置文件中的數據讀取信息,進行數據的讀取;將讀取的數據轉換為中間格式,并寫入數據交換緩沖模塊,其中,所述數據交換緩沖模塊用于臨時存儲寫入的中間格式的數據;從所述數據交換緩沖模塊中讀取所述中間格式的數據;依據所述配置文件中的數據寫入信息將所述中間格式的數據轉換為目標格式,并寫入目標地址。3.如權利要求2所述的方法,其特征在于,還包括依據所述配置文件中的數據讀取信息,裝載相應的讀取插件和數據交換緩沖插件,并向所述讀取插件提供相應的運行環境,由所述讀取插件依據所述配置文件中的數據讀取信息,進行數據的讀取,并在將讀取的數據轉換為中間格式后寫入數據交換緩沖插件,由所述數據交換緩沖插件臨時存儲讀取插件寫入的中間格式的數據;依據所述配置文件中的數據寫入信息,裝載相應的寫入插件,并向所述寫入插件提供相應的運行環境,由所述寫入插件從所述數據交換緩沖插件中讀取所述中間格式的數據,并在依據所述配置文件中的數據寫入信息將所述中間格式的數據轉換為目標格式后,寫入目標地址。4.如權利要求2所述的方法,其特征在于,還包括在進行數據的讀取前,將一個數據遷移任務分解成多個讀取子任務;所述依據所述配置文件中的數據讀取信息,進行數據的讀取的步驟為,在多線程池的讀取運行環境下,進行所述多個讀取子任務的讀取。5.如權利要求2所述的方法,其特征在于,還包括在所述寫入模塊將目標格式的數據寫入目標地址前,將一個數據遷移任務分解成多個寫入子任務;所述寫入目標地址的步驟為,在所述多線程池的寫入運行環境下,將與所述多個寫入子任務相應的目標格式的數據寫入目標地址。6.如權利要求2所述的方法,其特征在于,所述數據交換緩沖模塊為基于雙緩沖隊列的內存緩沖區。7.如權利要求2所述的方法,其特征在于,還包括在所述讀取模塊和/或數據交換緩沖模塊和/或寫入模塊的運行過程中,監控相應的運行參數,所述運行參數包括讀取和/或臨時存儲和/或寫入數據的行數和/或字節數。8.如權利要求2或3所述的方法,其特征在于,所述數據讀取信息包括如下信息中的一種或多種源數據庫的IP地址、端口號、庫名、登錄用戶名、登錄密碼、數據庫表名、過濾條件;所述數據寫入信息包括如下信息中的一種或多種數據寫入路徑、數據目標格式。9.如權利要求2或3所述的方法,其特征在于,所述配置文件為可擴展標記語言文件,所述可擴展標記語言文件的命名規則為源表名目的表名源數據庫類型目的數據庫類型·xml。10.如權利要求3所述的方法,其特征在于,還包括存放插件的插件描述文件;依據所述插件描述文件中存儲的裝載插件所需信息,對相應的插件進行注冊,并存儲相應的插件注冊信息;所述裝載相應的讀取插件和數據交換緩沖插件的步驟,包括將所述配置文件中的數據讀取信息,與所述插件注冊模塊中存儲的插件注冊信息進行匹配,如果匹配成功,則裝載與所述插件注冊信息相應的插件,所述裝載過程包括依據所述插件描述文件生成相應的插件實例,并根據所述插件實例進行插件的初始化;所述裝載相應的寫入插件的步驟,包括將所述配置文件中的數據寫入信息,與所述插件注冊模塊中存儲的插件注冊信息進行匹配,如果匹配成功,則裝載與所述插件注冊信息相應的插件,所述裝載過程包括依據所述插件描述文件生成相應的插件實例,并根據所述插件實例進行插件的初始化。全文摘要本申請提供了一種數據遷移系統和方法,其中的系統具體包括配置讀取模塊,用于讀取數據遷移任務的配置文件,所述配置文件中包括有數據讀取信息和數據寫入信息;讀取模塊,用于依據所述配置文件中的數據讀取信息,進行數據的讀取,并在將讀取的數據轉換為中間格式后,寫入數據交換緩沖模塊;數據交換緩沖模塊,用于臨時存儲寫入的中間格式的數據;及寫入模塊,用于從所述數據交換緩沖模塊中讀取所述中間格式的數據,并在依據所述配置文件中的數據寫入信息將所述中間格式的數據轉換為目標格式后,寫入目標地址。本申請能夠提高數據遷移的性能,降低數據遷移所花費的運維成本和開發成本。文檔編號G06F17/30GK102999537SQ20111027878公開日2013年3月27日申請日期2011年9月19日優先權日2011年9月19日發明者王磊申請人:阿里巴巴集團控股有限公司