一種數據庫卸載數據的調度方法【
技術領域:
】[0001]本發明設及數據庫
技術領域:
,尤指一種數據庫卸載數據的調度方法。【
背景技術:
】[0002]數據遷移是指一種數據環境中的數據根據需要進行轉換,導入另外一種相同或相異的數據環境中。異構數據庫遷移則是需要將數據庫管理系統中數據結構、數據組成與定義相異的數據之間盡量進行等價無損的數據轉移。[0003]在現有的Linux、化ix操作系統平臺進行大數據量異構數據庫遷移的過程中,因為單進程進行數據卸載,無法充分利用I/O資源,使I/O成為數據卸載的瓶頸,往往無法在規定的時間窗口內完成數據卸載,不僅導致數據遷移時間延長,還增加了數據遷移的成本,使得數據卸載往往會成為整個數據遷移的瓶頸所在。如果要實現并行卸載數據,則需要人工啟動多個進程,操作不方便。【
發明內容】[0004]為了解決上述技術問題,本發明提供了一種數據庫卸載數據的調度方法,能夠提高數據卸載的速度,實現數據庫數據的快速遷移。陽〇化]為了達到本發明目的,本發明提供了一種數據庫卸載數據的調度方法,包括:獲取要卸載的數據庫的配置信息,并部署用于數據庫卸載數據的并行多進程;根據要卸載的數據庫的配置信息,建立先入先出隊列FIFO管道文件,并將預設數量的換行符寫入FIFO管道文件中,其中一個換行符對應一個進程;每個進程讀取一數據行后向FIFO管道文件寫入一個換行符,當FIFO管道文件中沒有換行符時,數據庫的數據卸載完成。[0006]進一步地,所述部署用于數據庫卸載數據的并行多進程,具體為:根據預先定義的并行進程數,通過shell生成用于數據庫卸載數據的并行多進程。[0007]進一步地,所述配置信息包括數據庫信息和目錄信息;根據要卸載的數據庫的配置信息,建立先入先出隊列FIFO管道文件,具體為:根據要卸載的數據庫的數據庫信息和目錄信息,生成<數據庫sidXt油les文件,并定義文件描述符指向<數據庫sidXt油les文件,其中<數據庫Sid〉,t油les文件包括數據庫目錄信息下的所有表信息。[0008]進一步地,所述進程的數量和FIFO管道文件中換行符的數量相同。[0009]進一步地,所述每個進程讀取一數據行后向FIFO管道文件寫入一個換行符,當FIFO管道文件中沒有換行符時,數據庫的數據卸載完成,具體為:多進程并行讀取<數據庫Sid〉,t油les文件中的數據,每個進程讀取一數據行后向<數據庫Sid〉,t油les文件寫入一個換行符;調用卸載Ociul化卸載工具進行數據卸載,當<數據庫Sid〉,t油les文件中沒有數據可讀時,數據庫的數據卸載完成。[0010]進一步地,所述Ociul化卸載工具的指令包含:batchman.sh,指調度主程序的主入口;batchUI.sh,指調度界面UI;config.cfg,指配置文件,包括數據庫信息,路徑信息,W及并發卸載進程數;data,指卸載的數據將放在此文件夾,命名方式schema_tablename;ods化.t油les,指所有需要卸數的表的信息都會保存在運個文件中,多進程算法會根據指定的進程數讀取該文件,直到該文件無內容可讀;programSche化le.sh,指數據卸載主程序,多進程實現并控制進程數的核屯、算法,通過修改其中的exeProgram函數,或配置為其它卸數工具;public,sh,指調度程序中的自定義函數;t油lesFile.sh,指通過用戶在調度界面輸入的schema信息,生成ods化.t油les;logs,指日志目錄,記錄每個表的卸數日志,包括卸數開始時間,結束時間,卸載數據的行數。[0011]與現有技術相比,本發明通過多進程自動卸載數據庫的數據,提高數據卸載的速度,實現數據庫數據的快速遷移。[0012]本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在說明書、權利要求書W及附圖中所特別指出的結構來實現和獲得。【附圖說明】[0013]附圖用來提供對本發明技術方案的進一步理解,并且構成說明書的一部分,與本申請的實施例一起用于解釋本發明的技術方案,并不構成對本發明技術方案的限制。[0014]圖1是本發明的一種實施例中數據庫卸載數據的調度方法的流程示意圖。【具體實施方式】[0015]為使本發明的目的、技術方案和優點更加清楚明白,下文中將結合附圖對本發明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可W相互任意組合。[0016]在附圖的流程圖示出的步驟可W在諸如一組計算機可執行指令的計算機系統中執行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可不同于此處的順序執行所示出或描述的步驟。[0017]本發明針對現有技術中大數據量數據庫卸載數據緩慢的問題,提高數據卸載的速度,實現數據庫數據的快速遷移,從而降低數據遷移成本。本發明為了充分利用服務器I/O資源,通過實現shell多進程及進程控制并結合數據卸載工具,例如Ociul化,DB2IDMT等,提高1/0利用率,實現數據庫數據的快速卸載。[001引圖1是本發明的一種實施例中數據庫卸載數據的調度方法的流程示意圖。如圖1所示,包括:[0019]步驟101,獲取要卸載的數據庫的配置信息,并部署用于數據庫卸載數據的并行多進程。[0020]在本步驟中,卸數調度程序首先會讀入配置文件中定義的數據庫信息、目錄信息W及用戶定義的并行卸數進程數。[0021]根據用戶定義的并行進程數,通過shell生成用于數據庫卸載數據的并行多進程。具體如何部署多進程為本領域技術人員所知,故在此不寶述。[0022]步驟102,根據要卸載的數據庫的配置信息,建立先入先出隊列(FIFO,FirstInputFirstOu巧ut)管道文件,并將預設數量的換行符寫入該FIFO管道文件中,其中一個換行符對應一個進程。[0023]在本步驟中,卸數調度程序根據數據庫的配置信息生成<數據庫Sid〉,t油les文件,該<數據庫Sid〉,t油les文件即為FIFO管道文件,包含指定數據庫schema下的所有表。[0024]定義文件描述符指向該FIFO管道文件。預先將設定數量的換行符寫入到該FIFO管道文件中,一個換行符代表一個進程,例如如果寫入了5個換行符,那么有5個進程讀取該FIFO管道文件中的文件數據行。[00巧]步驟103,每個進程讀取一數據行后向該FIFO管道文件寫入一個換行符,當FIFO管道文件中沒有換行符時,數據庫的數據卸載完成。陽0%]在本步驟中,讀取<數據庫Sid〉,t油les文件中的表信息,并調用卸載Ociul化工具完成該表的數據卸載。當<數據庫Sid〉,t油les文件中沒有數據可讀的時候,卸數調度程序執行完畢。[0027]進程控制原理是通過定義的管道文件實現的,每個進程讀取一行數據后都會向管道文件寫入一個換行符,從而保證進程數是指定的。當進程執行完畢且FIFO管道文件中沒有數據行可讀時,將不會往FIFO管道文件中寫入換行符。當FIFO管道文件中無換行符可讀時,卸數調度程序執行完畢。[0028]本發明的數據卸載調度程序,可W利用并行多進程調用卸載工具,WOciul化卸載工具為例,進行數據卸載,實現數據卸載的自動化,提高卸數效率。[0029]數據卸載調度程序主要包含如下文件:[0030]-rwxrwxrwx1dpfinstldb2ia血1840Apr2109:51batchman.sh[0031]-rwxrwxrwx1dpfinstldb2ia血1993Apr2109:58batchUI.sh[0032]-rwxrwxrwx1dpfinstldb2ia血1381Apr2015:16config.cfg[0033]化wxrwxrwx2dpfinstldb2ia血14096May513:30data[0034]化wxrwxrwx2dpfinstldb2ia血112288May513:31logs[0035]-rwxrwxrwx1dpfinstldb2ia血182921Apr1811:01ociu當前第1頁1 2