亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)據(jù)遷移方法及裝置與流程

文檔序號(hào):11691050閱讀:173來源:國(guó)知局
本申請(qǐng)涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)遷移方法及裝置。
背景技術(shù)
::隨著互聯(lián)網(wǎng)和計(jì)算機(jī)技術(shù)的迅速發(fā)展,越來越多的業(yè)務(wù)可以在網(wǎng)上進(jìn)行。用戶可以通過互聯(lián)網(wǎng)向業(yè)務(wù)系統(tǒng)提交業(yè)務(wù)請(qǐng)求,業(yè)務(wù)系統(tǒng)根據(jù)接收的業(yè)務(wù)請(qǐng)求進(jìn)行相應(yīng)的業(yè)務(wù)處理,并向用戶返回業(yè)務(wù)處理結(jié)果,在此過程中,業(yè)務(wù)系統(tǒng)會(huì)生成相應(yīng)的業(yè)務(wù)數(shù)據(jù),并將這些業(yè)務(wù)數(shù)據(jù)以數(shù)據(jù)記錄的形式存儲(chǔ)在該業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫中。在實(shí)際應(yīng)用中,為了提高業(yè)務(wù)處理能力,經(jīng)常需要對(duì)業(yè)務(wù)系統(tǒng)進(jìn)行更新。當(dāng)要將原業(yè)務(wù)系統(tǒng)升級(jí)為新業(yè)務(wù)系統(tǒng)時(shí),若新業(yè)務(wù)系統(tǒng)使用的數(shù)據(jù)庫(稱為:目標(biāo)數(shù)據(jù)庫)與原業(yè)務(wù)系統(tǒng)使用的數(shù)據(jù)庫(稱為:源數(shù)據(jù)庫)不相同,則需要相應(yīng)地將源數(shù)據(jù)庫中的數(shù)據(jù)向目標(biāo)數(shù)據(jù)庫中遷移,以便于新業(yè)務(wù)系統(tǒng)能夠正常地為用戶服務(wù)。在現(xiàn)有技術(shù)中,有兩種常用的數(shù)據(jù)遷移方式。第一種數(shù)據(jù)遷移方式,采用數(shù)據(jù)泵技術(shù)從源數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)并轉(zhuǎn)換為中間文件,再通過中間文件向目標(biāo)數(shù)據(jù)庫中導(dǎo)入從源數(shù)據(jù)庫導(dǎo)出的數(shù)據(jù)。第二種數(shù)據(jù)遷移方式,是將原業(yè)務(wù)系統(tǒng)停止服務(wù),然后,將根據(jù)源數(shù)據(jù)庫中各數(shù)據(jù)記錄的數(shù)據(jù)主鍵,將各數(shù)據(jù)記錄向目標(biāo)數(shù)據(jù)庫遷移。但是,第一種數(shù)據(jù)遷移方式僅適用于于待遷移數(shù)據(jù)量較小的場(chǎng)景,而當(dāng)待遷移數(shù)據(jù)量較大時(shí),遷移效率較低,而且,在遷移過程中由于原業(yè)務(wù)系統(tǒng)未停止服務(wù),因此,源數(shù)據(jù)庫中數(shù)據(jù)仍在變化,從而會(huì)影響用戶業(yè)務(wù)的數(shù)據(jù)準(zhǔn)確性。而第二種數(shù)據(jù)遷移方式需要將原業(yè)務(wù)系統(tǒng)停止服務(wù),當(dāng)待遷移數(shù)據(jù)量較大時(shí), 遷移效率較低,也會(huì)嚴(yán)重影響用戶業(yè)務(wù)的處理及時(shí)性。綜上所述,現(xiàn)有技術(shù)中的數(shù)據(jù)遷移方式當(dāng)待遷移數(shù)據(jù)量較大時(shí),遷移效率較低,而且會(huì)對(duì)用戶業(yè)務(wù)造成不良影響。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)遷移方法及裝置,用以解決現(xiàn)有技術(shù)中的數(shù)據(jù)遷移方式當(dāng)待遷移數(shù)據(jù)量較大時(shí),遷移效率較低,而且會(huì)對(duì)用戶業(yè)務(wù)造成不良影響的問題。本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)遷移方法,所述方法用于基于遷移游標(biāo)值,將源數(shù)據(jù)庫中的數(shù)據(jù)向目標(biāo)數(shù)據(jù)庫遷移,所述遷移游標(biāo)值初始時(shí)為所述源數(shù)據(jù)庫中的各數(shù)據(jù)記錄的最新修改時(shí)間中的最小時(shí)間,所述方法包括:按照預(yù)定定時(shí)間隔,周期性地定時(shí)執(zhí)行以下步驟:確定當(dāng)前遷移游標(biāo)值,以及從當(dāng)前遷移游標(biāo)值開始,按照時(shí)間前進(jìn)方向,劃分出連續(xù)的多個(gè)時(shí)間區(qū)間,將當(dāng)前遷移游標(biāo)值更新為所述多個(gè)時(shí)間區(qū)間內(nèi)的最大時(shí)間,所述最大時(shí)間不超過當(dāng)前時(shí)間;針對(duì)劃分出的每個(gè)時(shí)間區(qū)間,分別生成對(duì)應(yīng)于該時(shí)間區(qū)間的遷移任務(wù),該遷移任務(wù)用于將所述源數(shù)據(jù)庫中的各數(shù)據(jù)記錄中,當(dāng)前最新修改時(shí)間屬于該時(shí)間區(qū)間的數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移;并發(fā)執(zhí)行生成的各遷移任務(wù)。本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)遷移裝置,所述裝置用于基于遷移游標(biāo)值,將源數(shù)據(jù)庫中的數(shù)據(jù)向目標(biāo)數(shù)據(jù)庫遷移,所述遷移游標(biāo)值初始時(shí)為所述源數(shù)據(jù)庫中的各數(shù)據(jù)記錄的最新修改時(shí)間中的最小時(shí)間,所述裝置包括:游標(biāo)值更新模塊,用于確定當(dāng)前遷移游標(biāo)值,以及從當(dāng)前遷移游標(biāo)值開始,按照時(shí)間前進(jìn)方向,劃分出連續(xù)的多個(gè)時(shí)間區(qū)間,將當(dāng)前遷移游標(biāo)值更新為所述多個(gè)時(shí)間區(qū)間內(nèi)的最大時(shí)間,所述最大時(shí)間不超過當(dāng)前時(shí)間;任務(wù)生成模塊,用于針對(duì)劃分出的每個(gè)時(shí)間區(qū)間,分別生成對(duì)應(yīng)于該時(shí)間 區(qū)間的遷移任務(wù),該遷移任務(wù)用于將所述源數(shù)據(jù)庫中的各數(shù)據(jù)記錄中,當(dāng)前最新修改時(shí)間屬于該時(shí)間區(qū)間的數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移;遷移模塊,用于并發(fā)執(zhí)行生成的各遷移任務(wù)。本申請(qǐng)實(shí)施例通過上述至少一種技術(shù)方案,無需將源數(shù)據(jù)庫對(duì)應(yīng)的原業(yè)務(wù)系統(tǒng)停止服務(wù),就可以將源數(shù)據(jù)庫中的數(shù)據(jù)向目標(biāo)數(shù)據(jù)庫遷移,而且即使在遷移過程中,源數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化,也可以在遷移游標(biāo)值向前推移的過程中對(duì)變化后的數(shù)據(jù)再次遷移(也即,支持對(duì)增量數(shù)據(jù)的遷移),因此,可以保證數(shù)據(jù)遷移的準(zhǔn)確性,不會(huì)對(duì)用戶業(yè)務(wù)造成不良影響;不僅如此,由于是通過生成多個(gè)遷移任務(wù)并行執(zhí)行的方式進(jìn)行數(shù)據(jù)遷移,因此,可以提高數(shù)據(jù)遷移效率。從而解決了現(xiàn)有技術(shù)中的問題。附圖說明此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:圖1為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)遷移方法的過程;圖2為本申請(qǐng)實(shí)施例提供的在實(shí)際應(yīng)用場(chǎng)景下,本申請(qǐng)的方案的一種具體實(shí)施過程的簡(jiǎn)略示意圖;圖3為本申請(qǐng)實(shí)施例提供的對(duì)遷移任務(wù)和單條數(shù)據(jù)記錄的補(bǔ)償示意圖;圖4為本申請(qǐng)實(shí)施例提供的在實(shí)際應(yīng)用場(chǎng)景下,一種執(zhí)行遷移任務(wù)的過程;圖5為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)遷移裝置結(jié)構(gòu)示意圖。具體實(shí)施方式為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的 實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。圖1為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)遷移方法的過程,該方法用于基于遷移游標(biāo)值,將源數(shù)據(jù)庫中的數(shù)據(jù)向目標(biāo)數(shù)據(jù)庫遷移,遷移游標(biāo)值初始時(shí)為源數(shù)據(jù)庫中的各數(shù)據(jù)記錄的最新修改時(shí)間中的最小時(shí)間。當(dāng)然,在實(shí)際應(yīng)用中,遷移游標(biāo)值初始時(shí)也可以為該最小時(shí)間之前的任意時(shí)間,該最小時(shí)間只是初始時(shí)的遷移游標(biāo)值的一個(gè)示例。為了便于理解,首先對(duì)該方法的總體思路說明如下:將整個(gè)遷移過程分為多個(gè)周期執(zhí)行,在每個(gè)周期分別將遷移游標(biāo)值向時(shí)間前進(jìn)方向推移一段距離,并將源數(shù)據(jù)庫中與這段距離對(duì)應(yīng)的數(shù)據(jù)(具體為源數(shù)據(jù)庫中最新修改時(shí)間屬于這段距離表示的時(shí)間區(qū)間內(nèi)的各數(shù)據(jù)記錄)向目標(biāo)數(shù)據(jù)庫遷移,以使遷移游標(biāo)值與當(dāng)前時(shí)間越來越接近(需要說明的是,由于當(dāng)前時(shí)間也會(huì)不斷前進(jìn),因此,應(yīng)當(dāng)使遷移游標(biāo)值的推移速度大于當(dāng)前時(shí)間的前進(jìn)速度),從而,使得目標(biāo)數(shù)據(jù)庫與源數(shù)據(jù)庫中的數(shù)據(jù)越來越接近。當(dāng)遷移游標(biāo)值追上當(dāng)前時(shí)間后,可以一邊繼續(xù)執(zhí)行下一個(gè)周期,一邊根據(jù)源數(shù)據(jù)庫對(duì)應(yīng)的原業(yè)務(wù)系統(tǒng)涉及的實(shí)時(shí)用戶業(yè)務(wù)情況,以確定何時(shí)(如業(yè)務(wù)空閑時(shí))將實(shí)時(shí)用戶業(yè)務(wù)切換至目標(biāo)數(shù)據(jù)庫對(duì)應(yīng)的新業(yè)務(wù)系統(tǒng)上,且在切換業(yè)務(wù)后源數(shù)據(jù)庫上不存在尚未遷移的數(shù)據(jù)。在本申請(qǐng)實(shí)施例中,對(duì)何時(shí)切換業(yè)務(wù)并不做限定。在上述的周期較短時(shí)(如當(dāng)周期可以為秒級(jí)時(shí)),可以使目標(biāo)數(shù)據(jù)庫與源數(shù)據(jù)庫中的數(shù)據(jù)盡量接近,因此,有利于盡快切換業(yè)務(wù)。下面對(duì)本申請(qǐng)的方案進(jìn)行具體說明。圖1中的方法的執(zhí)行主體可以是具有數(shù)據(jù)遷移功能的終端或服務(wù)器,所述數(shù)據(jù)遷移功能可以以模塊、裝置或系統(tǒng)等形式實(shí)現(xiàn)。所述終端包括但不限于:個(gè)人計(jì)算機(jī)、手機(jī)、平板電腦、智能手表、車載移動(dòng)臺(tái)等;所述服務(wù)器包括但 不限于:作為服務(wù)器的個(gè)人計(jì)算機(jī)、大中型計(jì)算機(jī)、計(jì)算機(jī)集群等。執(zhí)行主體并不構(gòu)成對(duì)本申請(qǐng)的限定。圖1中的方法的過程具體可以包括以下步驟:s101:按照預(yù)定定時(shí)間隔,周期性地定時(shí)執(zhí)行步驟s102~s104。在本申請(qǐng)實(shí)施例中,一個(gè)周期即為一個(gè)預(yù)定定時(shí)間隔。在單節(jié)點(diǎn)的環(huán)境下,可以通過普通的定時(shí)器預(yù)先設(shè)定定時(shí)間隔,并周期性地自動(dòng)觸發(fā)步驟s102~s104的執(zhí)行;而在分布式的環(huán)境下,可以通過相應(yīng)的分布式定時(shí)調(diào)度框架預(yù)先設(shè)定定時(shí)間隔,并周期性地自動(dòng)觸發(fā)步驟s102~s104的執(zhí)行。本申請(qǐng)對(duì)定時(shí)間隔的長(zhǎng)度并不做限定。一般可以將定時(shí)間隔的長(zhǎng)度設(shè)定在秒級(jí)程度。需要說明的是,在本申請(qǐng)的方案的實(shí)施過程中,預(yù)定定時(shí)間隔也可以被修改,在這種情況下,所述的周期性對(duì)應(yīng)的各個(gè)周期的長(zhǎng)度也可能相應(yīng)的發(fā)生變化。s102:確定當(dāng)前遷移游標(biāo)值,以及從當(dāng)前遷移游標(biāo)值開始,按照時(shí)間前進(jìn)方向,劃分出連續(xù)的多個(gè)時(shí)間區(qū)間,將當(dāng)前遷移游標(biāo)值更新為所述多個(gè)時(shí)間區(qū)間內(nèi)的最大時(shí)間,所述最大時(shí)間不超過當(dāng)前時(shí)間。在本申請(qǐng)實(shí)施例中,是基于遷移游標(biāo)值,控制整個(gè)數(shù)據(jù)遷移過程的進(jìn)度的,而遷移游標(biāo)值則是基于源數(shù)據(jù)庫中的數(shù)據(jù)記錄的最新修改時(shí)間進(jìn)行更新的。由于在實(shí)施本申請(qǐng)的方案的過程中,并未停止源數(shù)據(jù)庫對(duì)應(yīng)的原業(yè)務(wù)系統(tǒng)的服務(wù),因此,源數(shù)據(jù)庫中的任一條數(shù)據(jù)記錄都可能會(huì)更新,當(dāng)某條數(shù)據(jù)記錄更新時(shí),該數(shù)據(jù)記錄的最新修改時(shí)間會(huì)相應(yīng)地更新為該數(shù)據(jù)記錄更新時(shí)的時(shí)間。其中,數(shù)據(jù)記錄的最新修改時(shí)間一般可以用數(shù)據(jù)記錄中的特定字段自動(dòng)記錄,本申請(qǐng)對(duì)所述特定字段的名稱和格式并不做限定。根據(jù)上面的說明可知,源數(shù)據(jù)庫中的每條數(shù)據(jù)記錄的最新修改時(shí)間只可能向時(shí)間前進(jìn)方向推進(jìn)(也即,最新修改時(shí)間只可能不變或者變大),而不可能變小。因此,在初始時(shí)(也即,第一個(gè)周期開始時(shí)),可以將遷移游標(biāo)值確定為源數(shù)據(jù)庫中的各數(shù)據(jù)記錄的最新修改時(shí)間中的最小時(shí)間,該最小時(shí)間對(duì)應(yīng)的 數(shù)據(jù)記錄可以作為第一條被遷移的數(shù)據(jù)記錄。在本申請(qǐng)實(shí)施例中,在每一個(gè)周期內(nèi),可以將遷移游標(biāo)值按照時(shí)間前進(jìn)方向,推移一段距離。需要說明的是,所述距離是指兩個(gè)時(shí)間之間的距離,而不是指兩個(gè)地點(diǎn)之間的距離,比如,假定所述兩個(gè)時(shí)間分別為:同一天的3點(diǎn)、5點(diǎn),則所述兩個(gè)時(shí)間之間的距離為2個(gè)小時(shí)。在步驟s102中,所述兩個(gè)時(shí)間分別為:所述當(dāng)前遷移游標(biāo)值、更新后的所述當(dāng)前遷移游標(biāo)值。相應(yīng)地,這個(gè)周期對(duì)應(yīng)的任務(wù)可以為:將源數(shù)據(jù)庫中最新修改時(shí)間屬于這兩個(gè)時(shí)間之間的區(qū)間的各數(shù)據(jù)記錄向目標(biāo)數(shù)據(jù)庫遷移。進(jìn)一步地,為了提高數(shù)據(jù)遷移速度,在步驟s102中,可以將上述的距離劃分為連續(xù)的多個(gè)時(shí)間區(qū)間,以便于后續(xù)對(duì)應(yīng)地生成多個(gè)遷移任務(wù)并發(fā)地執(zhí)行。需要說明的是,本申請(qǐng)對(duì)劃分出的時(shí)間區(qū)間的數(shù)量和每個(gè)時(shí)間區(qū)間的長(zhǎng)度并不做限定。一般地,時(shí)間區(qū)間的長(zhǎng)度可以設(shè)定在分鐘級(jí)別或小時(shí)級(jí)別。在本申請(qǐng)實(shí)施例中,在任意時(shí)刻,遷移游標(biāo)值都是不大于當(dāng)前時(shí)間的。s103:針對(duì)劃分出的每個(gè)時(shí)間區(qū)間,分別生成對(duì)應(yīng)于該時(shí)間區(qū)間的遷移任務(wù),該遷移任務(wù)用于將所述源數(shù)據(jù)庫中的各數(shù)據(jù)記錄中,當(dāng)前最新修改時(shí)間屬于該時(shí)間區(qū)間的數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移。在本申請(qǐng)實(shí)施例中,對(duì)遷移任務(wù)的表示方法并不做限定。一般的,可以采用特定格式對(duì)遷移任務(wù)進(jìn)行表示,特定格式中可以包括若干字段,用于描述遷移任務(wù)的相關(guān)信息,比如遷移任務(wù)對(duì)應(yīng)的時(shí)間區(qū)間、遷移任務(wù)對(duì)應(yīng)的時(shí)間區(qū)間在各時(shí)間區(qū)間中的順序、遷移任務(wù)的狀態(tài)(執(zhí)行成功或執(zhí)行失敗等)、源數(shù)據(jù)庫地址等信息。在本申請(qǐng)實(shí)施例中,可以在執(zhí)行遷移任務(wù)時(shí),再實(shí)時(shí)地獲取遷移任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄,也可以在生成遷移任務(wù)時(shí),就獲取遷移任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄。s104:并發(fā)執(zhí)行生成的各遷移任務(wù)。在本申請(qǐng)實(shí)施例中,生成的各遷移任務(wù)可以由執(zhí)行主體采用多線程的方式并發(fā)執(zhí)行,或者,也可以將生成的各遷移任務(wù)分發(fā)給分布式集群,由分布式集 群采用多機(jī)器和/多線程的方式并發(fā)執(zhí)行,等等。需要說明的是,“并發(fā)執(zhí)行”指的是各遷移任務(wù)可以分別由不同的機(jī)器或者不同的線程獨(dú)立執(zhí)行,這些獨(dú)立執(zhí)行的過程在時(shí)間上可以發(fā)生重疊,這些獨(dú)立執(zhí)行的過程可以同步地進(jìn)行,也可以不同步地進(jìn)行。通過圖1中的方法,無需將源數(shù)據(jù)庫對(duì)應(yīng)的原業(yè)務(wù)系統(tǒng)停止服務(wù),就可以將源數(shù)據(jù)庫中的數(shù)據(jù)向目標(biāo)數(shù)據(jù)庫遷移,而且即使在遷移過程中,源數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化,也可以在遷移游標(biāo)值向前推移的過程中對(duì)變化后的數(shù)據(jù)再次遷移,因此,可以保證數(shù)據(jù)遷移的準(zhǔn)確性,不會(huì)對(duì)用戶業(yè)務(wù)造成不良影響;不僅如此,由于是通過生成多個(gè)遷移任務(wù)并行執(zhí)行的方式進(jìn)行數(shù)據(jù)遷移,因此,可以提高數(shù)據(jù)遷移效率。從而解決了現(xiàn)有技術(shù)中的問題。為了便于理解,下面對(duì)圖1中的步驟以及本申請(qǐng)?zhí)峁┝似渌麛U(kuò)展方案進(jìn)一步地說明。在本申請(qǐng)實(shí)施例中,對(duì)于步驟s104,在執(zhí)行遷移任務(wù)前以及執(zhí)行遷移任務(wù)的過程中,可能會(huì)發(fā)生異常導(dǎo)致遷移任務(wù)無法被成功執(zhí)行,異常包括但不限于:設(shè)備斷電停機(jī)、執(zhí)行遷移任務(wù)的進(jìn)程或線程被殺死、程序異常退出,等等。為了防止異常導(dǎo)致的遷移數(shù)據(jù)遺漏的問題,可以分別對(duì)每個(gè)遷移任務(wù)的狀態(tài)進(jìn)行維護(hù),遷移任務(wù)的狀態(tài)至少可以包括:失敗狀態(tài)、成功狀態(tài);每個(gè)遷移任務(wù)在任一時(shí)刻只能被標(biāo)記其中一種狀態(tài)。進(jìn)而,對(duì)于步驟s104,在生成遷移任務(wù)后,執(zhí)行遷移任務(wù)前,可以將遷移任務(wù)默認(rèn)地標(biāo)記為失敗狀態(tài),相應(yīng)地,在執(zhí)行遷移任務(wù)后,當(dāng)確定遷移任務(wù)執(zhí)行成功時(shí),可以對(duì)遷移任務(wù)的狀態(tài)由失敗狀態(tài)修改為成功狀態(tài),也即,將遷移任務(wù)標(biāo)記為成功狀態(tài)。這樣的話,由于遷移任務(wù)在被執(zhí)行成功之前,都是被標(biāo)記為失敗狀態(tài)的,因此,即使有一些遷移任務(wù)由于上述異常的原因,導(dǎo)致未開始執(zhí)行或者未能成功執(zhí)行,也可以根據(jù)這些遷移任務(wù)被標(biāo)記的失敗狀態(tài),實(shí)時(shí)地或者定時(shí)地觸發(fā)這些遷移任務(wù)重新執(zhí)行。以“定時(shí)地重新執(zhí)行這些遷移任務(wù)”這種處理方式為例。具體地,可以按 照預(yù)定定時(shí)間隔,周期性地定時(shí)執(zhí)行:確定被標(biāo)記為失敗狀態(tài)的遷移任務(wù),以及執(zhí)行確定的遷移任務(wù)。需要說明的是,該段中的“預(yù)定定時(shí)間隔”與步驟s101中的“預(yù)定定時(shí)間隔”可以不同,也可以相同,本申請(qǐng)對(duì)此并不做限定。本段中的“定時(shí)地重新執(zhí)行這些遷移任務(wù)”的過程可以提高數(shù)據(jù)遷移的可靠性、容錯(cuò)性,該過程與圖1中的過程可以是相對(duì)獨(dú)立地并行執(zhí)行的。進(jìn)一步地,由于并非每個(gè)處于失敗狀態(tài)的遷移任務(wù)都是執(zhí)行失敗的,因此,在實(shí)際應(yīng)用中,還可以為每個(gè)遷移任務(wù)設(shè)定超時(shí)門限用于進(jìn)行超時(shí)檢查。具體地,在確定被標(biāo)記為失敗狀態(tài)的遷移任務(wù)后,可以判斷該遷移任務(wù)自生成時(shí)的時(shí)間與當(dāng)前時(shí)間之間的時(shí)間間隔是否大于超時(shí)門限,若是,則可以認(rèn)為該遷移任務(wù)是異常的,進(jìn)而可以重新執(zhí)行該遷移任務(wù),否則,可以認(rèn)為該遷移任務(wù)上還沒有來得及被執(zhí)行,而并非是異常的,進(jìn)而可以暫時(shí)不重新執(zhí)行該遷移任務(wù)。需要說明的是,上面提到的“失敗狀態(tài)”、“成功狀態(tài)”只是遷移任務(wù)的狀態(tài)的示例。在實(shí)際應(yīng)用中,遷移任務(wù)的狀態(tài)還可以進(jìn)一步地細(xì)分為更多數(shù)量的狀態(tài)。例如,遷移任務(wù)的狀態(tài)可以包括:尚未執(zhí)行狀態(tài)、首次執(zhí)行中狀態(tài)、執(zhí)行失敗狀態(tài)、重試執(zhí)行中狀態(tài)、執(zhí)行成功狀態(tài)等。在這種情況下,遷移任務(wù)在首次執(zhí)行前,可以被默認(rèn)地標(biāo)記為尚未執(zhí)行狀態(tài),在執(zhí)行步驟s104的同時(shí),可以按照預(yù)定定時(shí)間隔,周期性地定時(shí)執(zhí)行:確定被標(biāo)記為尚未執(zhí)行狀態(tài)或執(zhí)行失敗狀態(tài)的遷移任務(wù),以及執(zhí)行確定的遷移任務(wù)。類似地,在該段的過程中也可以進(jìn)行超時(shí)檢查。在本申請(qǐng)實(shí)施例中,對(duì)于步驟s104中并發(fā)執(zhí)行的各遷移任務(wù),每個(gè)遷移任務(wù)可以按照如下方式執(zhí)行:根據(jù)遷移任務(wù)對(duì)應(yīng)的時(shí)間區(qū)間,從源數(shù)據(jù)庫中獲取當(dāng)前最新修改時(shí)間屬于該時(shí)間區(qū)間的數(shù)據(jù)記錄;將獲取的數(shù)據(jù)記錄向目標(biāo)數(shù)據(jù)庫遷移。在實(shí)際應(yīng)用中,遷移任務(wù)的執(zhí)行可以有不同的具體實(shí)施過程,下面進(jìn)行說明。在步驟s104中通過并發(fā)執(zhí)行各遷移任務(wù)的方式提高了數(shù)據(jù)遷移效率,在 此基礎(chǔ)上還可以進(jìn)一步地提高數(shù)據(jù)遷移效率,通過本申請(qǐng)?zhí)峁┑倪w移任務(wù)的執(zhí)行的一種具體實(shí)施過程可以實(shí)現(xiàn)。這種具體實(shí)施過程的總體思路是:將每個(gè)遷移任務(wù)進(jìn)一步地拆分為多個(gè)子任務(wù),采用多線程并發(fā)執(zhí)行拆分出的多個(gè)子任務(wù)。對(duì)于這種具體實(shí)施過程,根據(jù)所述遷移任務(wù)對(duì)應(yīng)的時(shí)間區(qū)間,從所述源數(shù)據(jù)庫中獲取當(dāng)前最新修改時(shí)間屬于該時(shí)間區(qū)間的數(shù)據(jù)記錄,可以包括:根據(jù)所述遷移任務(wù)對(duì)應(yīng)的時(shí)間區(qū)間,將所述遷移任務(wù)拆分為具有先后順序的多個(gè)子任務(wù),其中,每個(gè)子任務(wù)分別用于將所述源數(shù)據(jù)庫中的各數(shù)據(jù)記錄中當(dāng)前最新修改時(shí)間屬于該時(shí)間區(qū)間的、不大于預(yù)定數(shù)量的數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移;根據(jù)所述源數(shù)據(jù)庫中數(shù)據(jù)記錄的主鍵值和所述多個(gè)子任務(wù)的順序,依次獲取每個(gè)子任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄,以使每個(gè)子任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄的最小主鍵值大于這個(gè)子任務(wù)的前一個(gè)子任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄的最大主鍵值。其中,遷移任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄的數(shù)量,與該遷移任務(wù)拆分出的各子任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄的總數(shù)量相等??梢钥吹?,在上一段獲取數(shù)據(jù)記錄的過程中,基于相鄰的子任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄的主鍵值,對(duì)各子任務(wù)進(jìn)行了限定。作此限定的原因是為了防止在拆分出各子任務(wù)以及獲取各子任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄的過程中,由于各數(shù)據(jù)記錄可能會(huì)發(fā)生更新,進(jìn)而導(dǎo)致數(shù)據(jù)遺漏的問題。下面舉例進(jìn)行說明。假定未基于主鍵值獲取由遷移任務(wù)拆分出的各子任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄。則可以采用諸如以下結(jié)構(gòu)化查詢語言(structuredquerylanguage,sql)語句獲取各子任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄:“select*fromsource_tablewhere#start#<=gmt_modifiedandgmt_modified<#end#orderbygmt_modifiedlimitn*100,100;”。其中,“start”為該遷移任務(wù)對(duì)應(yīng)的時(shí)間區(qū)間的起始時(shí)間,“end”為該遷移任務(wù)對(duì)應(yīng)的時(shí)間區(qū)間的結(jié)束時(shí)間;“gmt_modified”為數(shù)據(jù)記錄的最新修改時(shí)間。但是,在上述sql語句的情況下,在已獲取某個(gè)子任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄 (假定為第1~100條)后,若這個(gè)子任務(wù)對(duì)應(yīng)的某條數(shù)據(jù)(假定為第99條)記錄發(fā)生更新(則第99條將不屬于該時(shí)間區(qū)間),更新后若再獲取下一個(gè)子任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄(會(huì)獲取到第102~201條、),將會(huì)遺漏1條數(shù)據(jù)記錄(即為第101條)。為了解決以上問題,可以基于主鍵值獲取由遷移任務(wù)拆分出的各子任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄,具體地,可以采用諸如以下sql語句獲取各子任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄:“select*fromsource_tablewhere#start#<=gmt_modifiedandgmt_modified<#end#andid>#last_max_id#orderbygmt_modified,idlimitn*100,100;”。其中,“id”為數(shù)據(jù)記錄的主鍵值,“l(fā)ast_max_id”為上一個(gè)子任務(wù)的對(duì)應(yīng)的各數(shù)據(jù)記錄的最大主鍵值。進(jìn)一步地,對(duì)于這種具體實(shí)施過程,將獲取的數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移,可以包括:基于多線程并發(fā)執(zhí)行所述多個(gè)子任務(wù),其中,按照如下方式執(zhí)行每個(gè)子任務(wù):將獲取的這個(gè)子任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移。在本申請(qǐng)實(shí)施例中,新業(yè)務(wù)系統(tǒng)可能對(duì)原業(yè)務(wù)系統(tǒng)的業(yè)務(wù)涉及的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了修改,使得新業(yè)務(wù)系統(tǒng)和原業(yè)務(wù)系統(tǒng)的業(yè)務(wù)互為異構(gòu)業(yè)務(wù)。在這種情況下,將源數(shù)據(jù)庫中的數(shù)據(jù)向目標(biāo)數(shù)據(jù)庫進(jìn)行遷移時(shí),也需要對(duì)這些數(shù)據(jù)進(jìn)行相應(yīng)的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換,再寫入目標(biāo)數(shù)據(jù)庫中,否則,可能會(huì)導(dǎo)致遷移的數(shù)據(jù)無法正常使用。因此,上面提到的“將獲取的數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移”,可以包括:根據(jù)預(yù)定數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換規(guī)則,對(duì)獲取的數(shù)據(jù)記錄進(jìn)行數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換;將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換后的數(shù)據(jù)記錄寫入所述目標(biāo)數(shù)據(jù)庫中。其中,預(yù)定數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換規(guī)則可以根據(jù)新業(yè)務(wù)系統(tǒng)和原業(yè)務(wù)系統(tǒng)的業(yè)務(wù)確定,本申請(qǐng)對(duì)此并不做限定。進(jìn)一步地,為了減少提高本申請(qǐng)的方案的實(shí)施成本,可以將“獲取數(shù)據(jù)記 錄”、“對(duì)獲取的數(shù)據(jù)記錄進(jìn)行數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換”、“將轉(zhuǎn)換后的數(shù)據(jù)記錄寫入目標(biāo)數(shù)據(jù)庫”等通用性較高的步驟的抽象為業(yè)務(wù)邏輯模板,以便于在各種應(yīng)用場(chǎng)景下復(fù)用。在本申請(qǐng)實(shí)施例中,根據(jù)上面的說明可知,執(zhí)行任一遷移任務(wù)的過程即為將這個(gè)遷移任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄進(jìn)行遷移的過程。對(duì)數(shù)據(jù)記錄的遷移可能會(huì)失敗,為了防止少數(shù)的數(shù)據(jù)記錄遷移失敗導(dǎo)致對(duì)應(yīng)的遷移任務(wù)執(zhí)行失敗,還可以實(shí)時(shí)地或定時(shí)地對(duì)遷移失敗的數(shù)據(jù)記錄重新進(jìn)行遷移。以“定時(shí)地對(duì)遷移失敗的數(shù)據(jù)記錄重新進(jìn)行遷移”這種處理方式為例。具體地,可以按照預(yù)定定時(shí)間隔,周期性地定時(shí)執(zhí)行:確定遷移失敗的數(shù)據(jù)記錄,以及重新遷移確定的數(shù)據(jù)記錄。需要說明的是,該段中的“預(yù)定定時(shí)間隔”與步驟s101中的“預(yù)定定時(shí)間隔”可以不同,也可以相同,本申請(qǐng)對(duì)此并不做限定。根據(jù)上面的說明,本申請(qǐng)針對(duì)遷移過程中可能出現(xiàn)的異常,提供有兩種解決方案,一種是對(duì)標(biāo)記為失敗狀態(tài)的遷移任務(wù)的重試,一種是對(duì)遷移失敗的數(shù)據(jù)記錄的重試。這兩種解決方案提高了數(shù)據(jù)遷移的可靠性、容錯(cuò)性。在本申請(qǐng)實(shí)施例中,由于數(shù)據(jù)遷移需要花費(fèi)一定的時(shí)間,因此,源數(shù)據(jù)庫中的數(shù)據(jù)的最新修改時(shí)間與將該數(shù)據(jù)遷移至目標(biāo)數(shù)據(jù)庫中的生效時(shí)間之間會(huì)有延遲,可以會(huì)根據(jù)延遲大小,調(diào)整各遷移任務(wù)的并發(fā)執(zhí)行數(shù)和/或各子任務(wù)的并發(fā)執(zhí)行數(shù),從而將后續(xù)遷移數(shù)據(jù)的延遲控制在可以接受的范圍內(nèi)。具體地,遷移數(shù)據(jù)記錄后,可以執(zhí)行:確定遷移成功的數(shù)據(jù)記錄在所述目標(biāo)數(shù)據(jù)庫中的生效時(shí)間,以及所述數(shù)據(jù)記錄在遷移前的最新修改時(shí)間;根據(jù)確定的所述生效時(shí)間和所述最新修改時(shí)間,確定所述數(shù)據(jù)記錄的遷移延遲時(shí)間;根據(jù)所述遷移延遲時(shí)間,對(duì)所述各遷移任務(wù)的并發(fā)執(zhí)行數(shù)和/或所述多個(gè)子任務(wù)的并發(fā)執(zhí)行數(shù)進(jìn)行調(diào)整。例如,當(dāng)遷移延遲時(shí)間較大時(shí),可以增加并發(fā)執(zhí)行數(shù),當(dāng)遷移延遲時(shí)間足夠小時(shí),也可以適當(dāng)?shù)販p少并發(fā)執(zhí)行數(shù)。以上對(duì)圖1中的步驟以及本申請(qǐng)?zhí)峁┝似渌麛U(kuò)展方案進(jìn)一步地進(jìn)行了說 明。基于這些說明,對(duì)比于現(xiàn)有技術(shù),對(duì)本申請(qǐng)的方案的優(yōu)點(diǎn)進(jìn)行總結(jié)。相比于
背景技術(shù)
:中提到的第一種數(shù)據(jù)遷移方式,第一種數(shù)據(jù)遷移方式只適用于待遷移數(shù)據(jù)量較小的場(chǎng)景。本申請(qǐng)的方案則不受待遷移數(shù)據(jù)量多少的限制,無需中間文件來暫存要遷移的數(shù)據(jù),提高了數(shù)據(jù)遷移的效率;而且可以將遷移過程中的很多步驟抽象為容易復(fù)用的業(yè)務(wù)邏輯模板,以及針對(duì)容易產(chǎn)生瓶頸的讀取和寫入數(shù)據(jù)的步驟(包含在遷移任務(wù)的過程中),設(shè)計(jì)了分布式、多線程的擴(kuò)展方案,從而實(shí)現(xiàn)了數(shù)據(jù)遷移在效率上的高效性和擴(kuò)展性。相比于
背景技術(shù)
:中提到的第二種數(shù)據(jù)遷移方式,第二種數(shù)據(jù)遷移方式需要停止原業(yè)務(wù)系統(tǒng)的服務(wù),這對(duì)于諸如互聯(lián)網(wǎng)應(yīng)用等有持續(xù)用戶訪問需求的系統(tǒng)是不可接受的。本申請(qǐng)的方案則無需停止原業(yè)務(wù)系統(tǒng)的服務(wù),而且由于源數(shù)據(jù)庫最新被修改的數(shù)據(jù)記錄的最新修改時(shí)間總是會(huì)大于遷移游標(biāo)值,因此,可以保證最新被修改的數(shù)據(jù)記錄隨著遷移游標(biāo)值的向前推移總是能夠被向目標(biāo)數(shù)據(jù)庫中遷移,從而實(shí)現(xiàn)了增量數(shù)據(jù)的遷移,避免了對(duì)用戶業(yè)務(wù)造成不良影響。需要說明的是,現(xiàn)有技術(shù)中除了有上述的兩種數(shù)據(jù)遷移方式以外,常用的還有另一種數(shù)據(jù)遷移方式。另一種數(shù)據(jù)遷移方式為:基于源數(shù)據(jù)庫的操作日志,在目標(biāo)數(shù)據(jù)庫上回放源數(shù)據(jù)庫上的所有操作,也即,將源數(shù)據(jù)庫中的每條數(shù)據(jù)記錄的每個(gè)操作記錄都同步到目標(biāo)數(shù)據(jù)庫上。其缺點(diǎn)是不支持?jǐn)?shù)據(jù)結(jié)構(gòu)的變更。而本申請(qǐng)的方案通過在遷移過程中對(duì)數(shù)據(jù)記錄進(jìn)行數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換,可以解決這個(gè)問題。在本申請(qǐng)實(shí)施例中,還提供了在實(shí)際應(yīng)用場(chǎng)景中,本申請(qǐng)的方案的一種具體實(shí)施過程的簡(jiǎn)略示意圖。如圖2所示。在圖2中,一共涉及五個(gè)設(shè)備或功能模塊,即:分布式定時(shí)調(diào)度、遷移系統(tǒng)、遷移系統(tǒng)存儲(chǔ)、源數(shù)據(jù)庫、目標(biāo)數(shù)據(jù)庫。圖2中的過程主要包括三部分。第一部分,周期性地定時(shí)生成遷移任務(wù),以及執(zhí)行遷移任務(wù);第二部分,周期性地定時(shí)進(jìn)行失敗補(bǔ)償,這里的失敗補(bǔ)償是指對(duì)單條數(shù)據(jù) 記錄執(zhí)行失敗時(shí)的補(bǔ)償(簡(jiǎn)稱為:?jiǎn)螚l補(bǔ)償);第三部分,周期性地定時(shí)進(jìn)行遷移任務(wù)補(bǔ)償,這里的遷移任務(wù)補(bǔ)償是指對(duì)遷移任務(wù)執(zhí)行失敗或超時(shí)的補(bǔ)償;其中,上述的補(bǔ)償?shù)木唧w方式可以是重試。具體地,對(duì)于單條數(shù)據(jù)記錄,是重新進(jìn)行遷移,對(duì)于遷移任務(wù),是重新執(zhí)行。在本申請(qǐng)實(shí)施例中,通過單條補(bǔ)償和遷移任務(wù)補(bǔ)償,提高了數(shù)據(jù)遷移的可靠性、容錯(cuò)性,采用圖3進(jìn)行說明。在圖3中,示出了在某個(gè)周期內(nèi)生成的n個(gè)遷移任務(wù),其中,“min_modify”是n個(gè)遷移任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄的最新修改時(shí)間中的最小時(shí)間,“max_modify”是n個(gè)遷移任務(wù)對(duì)應(yīng)的數(shù)據(jù)記錄的最新修改時(shí)間中的最大時(shí)間。其中,n為不小于2的整數(shù)。將遷移任務(wù)的執(zhí)行狀況分為三種。第一種是由于系統(tǒng)異常導(dǎo)致遷移任務(wù)異常,針對(duì)這種狀況,可以通過遷移任務(wù)補(bǔ)償應(yīng)對(duì);第二種是遷移任務(wù)執(zhí)行成功。第三種是遷移任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄中,至少有一條數(shù)據(jù)記錄遷移失敗(執(zhí)行異常),針對(duì)這種狀況,可以通過針對(duì)遷移失敗的數(shù)據(jù)記錄分別進(jìn)行單條補(bǔ)償應(yīng)對(duì)。在本申請(qǐng)實(shí)施例中,還提供了在實(shí)際應(yīng)用場(chǎng)景中,一種執(zhí)行遷移任務(wù)的過程,該過程如圖4所示。在圖4中,任務(wù)分片即為上述的遷移任務(wù)。通過兩次分片(物理分片、內(nèi)部分片)以及并發(fā)執(zhí)行提高了數(shù)據(jù)遷移的效率。由加載器(loader)在每個(gè)周期內(nèi)根據(jù)遷移游標(biāo)值,將這個(gè)周期對(duì)應(yīng)的任務(wù)進(jìn)行物理分片,對(duì)應(yīng)地生成多個(gè)任務(wù)分片,每個(gè)任務(wù)分片包含有這個(gè)任務(wù)分片相關(guān)信息,比如描述這個(gè)任務(wù)分片對(duì)應(yīng)的數(shù)據(jù)記錄的最新修改時(shí)間中的最小時(shí)間的“st_gmt”字段信息、描述這個(gè)任務(wù)分片對(duì)應(yīng)的時(shí)間區(qū)間長(zhǎng)度(也可 以成為:時(shí)間步長(zhǎng))的“step”字段信息、描述這個(gè)任務(wù)分片的狀態(tài)的“status”字段信息,等等。加載器可以將各任務(wù)分片分發(fā)給多個(gè)執(zhí)行器(executor)并發(fā)執(zhí)行,執(zhí)行器可以進(jìn)一步地對(duì)任務(wù)分片進(jìn)行內(nèi)部分片,生成多個(gè)子任務(wù)(比如,每個(gè)子任務(wù)可以對(duì)應(yīng)于100條數(shù)據(jù)記錄),并采用多線程的方式并發(fā)執(zhí)行各子任務(wù)。以上為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)遷移方法,基于同樣的思路,本申請(qǐng)實(shí)施例還提供相應(yīng)的數(shù)據(jù)遷移裝置,如圖5所示。圖5為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)遷移裝置結(jié)構(gòu)示意圖,所述裝置用于基于遷移游標(biāo)值,將源數(shù)據(jù)庫中的數(shù)據(jù)向目標(biāo)數(shù)據(jù)庫遷移,所述遷移游標(biāo)值初始時(shí)為所述源數(shù)據(jù)庫中的各數(shù)據(jù)記錄的最新修改時(shí)間中的最小時(shí)間,所述裝置包括:游標(biāo)值更新模塊501,用于確定當(dāng)前遷移游標(biāo)值,以及從當(dāng)前遷移游標(biāo)值開始,按照時(shí)間前進(jìn)方向,劃分出連續(xù)的多個(gè)時(shí)間區(qū)間,將當(dāng)前遷移游標(biāo)值更新為所述多個(gè)時(shí)間區(qū)間內(nèi)的最大時(shí)間,所述最大時(shí)間不超過當(dāng)前時(shí)間;任務(wù)生成模塊502,用于針對(duì)劃分出的每個(gè)時(shí)間區(qū)間,分別生成對(duì)應(yīng)于該時(shí)間區(qū)間的遷移任務(wù),該遷移任務(wù)用于將所述源數(shù)據(jù)庫中的各數(shù)據(jù)記錄中,當(dāng)前最新修改時(shí)間屬于該時(shí)間區(qū)間的數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移;遷移模塊503,用于并發(fā)執(zhí)行生成的各遷移任務(wù)。通過圖5中的裝置,無需將源數(shù)據(jù)庫對(duì)應(yīng)的原業(yè)務(wù)系統(tǒng)停止服務(wù),就可以將源數(shù)據(jù)庫中的數(shù)據(jù)向目標(biāo)數(shù)據(jù)庫遷移,而且即使在遷移過程中,源數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化,也可以在遷移游標(biāo)值向前推移的過程中對(duì)變化后的數(shù)據(jù)再次遷移,因此,可以保證數(shù)據(jù)遷移的準(zhǔn)確性,不會(huì)對(duì)用戶業(yè)務(wù)造成不良影響;不僅如此,由于是通過生成多個(gè)遷移任務(wù)并行執(zhí)行的方式進(jìn)行數(shù)據(jù)遷移,因此,可以提高數(shù)據(jù)遷移效率。從而解決了現(xiàn)有技術(shù)中的問題可選地,所述裝置還包括:狀態(tài)標(biāo)記模塊504,用于在遷移模塊503并發(fā)執(zhí)行生成的各遷移任務(wù)前, 將所述遷移任務(wù)默認(rèn)地標(biāo)記為失敗狀態(tài);以及用于在遷移模塊503并發(fā)執(zhí)行生成的各遷移任務(wù)后,當(dāng)確定所述遷移任務(wù)執(zhí)行成功時(shí),將所述遷移任務(wù)標(biāo)記為成功狀態(tài)??蛇x地,所述裝置還包括:任務(wù)補(bǔ)償模塊505,用于按照預(yù)定定時(shí)間隔,周期性地定時(shí)執(zhí)行:確定被標(biāo)記為失敗狀態(tài)的遷移任務(wù),以及執(zhí)行確定的遷移任務(wù)??蛇x地,遷移模塊503具體用于按照如下方式執(zhí)行生成的每個(gè)遷移任務(wù):根據(jù)所述遷移任務(wù)對(duì)應(yīng)的時(shí)間區(qū)間,從所述源數(shù)據(jù)庫中獲取當(dāng)前最新修改時(shí)間屬于該時(shí)間區(qū)間的數(shù)據(jù)記錄;將獲取的數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移??蛇x地,遷移模塊503具體用于:根據(jù)所述遷移任務(wù)對(duì)應(yīng)的時(shí)間區(qū)間,將所述遷移任務(wù)拆分為具有先后順序的多個(gè)子任務(wù),其中,每個(gè)子任務(wù)分別用于將所述源數(shù)據(jù)庫中的各數(shù)據(jù)記錄中當(dāng)前最新修改時(shí)間屬于該時(shí)間區(qū)間的、不大于預(yù)定數(shù)量的數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移;根據(jù)所述源數(shù)據(jù)庫中數(shù)據(jù)記錄的主鍵值和所述多個(gè)子任務(wù)的順序,依次獲取每個(gè)子任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄,以使每個(gè)子任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄的最小主鍵值大于這個(gè)子任務(wù)的前一個(gè)子任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄的最大主鍵值??蛇x地,遷移模塊503具體用于:基于多線程并發(fā)執(zhí)行所述多個(gè)子任務(wù),其中,按照如下方式執(zhí)行每個(gè)子任務(wù):將獲取的這個(gè)子任務(wù)對(duì)應(yīng)的各數(shù)據(jù)記錄向所述目標(biāo)數(shù)據(jù)庫遷移。可選地,遷移模塊503具體用于:根據(jù)預(yù)定數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換規(guī)則,對(duì)獲取的數(shù)據(jù)記錄進(jìn)行數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換;將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換后的數(shù)據(jù)記錄寫入所述目標(biāo)數(shù)據(jù)庫中。可選地,所述裝置還包括:記錄補(bǔ)償模塊506,用于按照預(yù)定定時(shí)間隔,周期性地定時(shí)執(zhí)行:確定遷移失敗的數(shù)據(jù)記錄,以及重新遷移確定的數(shù)據(jù)記錄??蛇x地,所述裝置還包括:并發(fā)數(shù)調(diào)整模塊507,用于確定遷移成功的數(shù)據(jù)記錄在所述目標(biāo)數(shù)據(jù)庫中的生效時(shí)間,以及所述數(shù)據(jù)記錄在遷移前的最新修改時(shí)間;根據(jù)確定的所述生效時(shí)間和所述最新修改時(shí)間,確定所述數(shù)據(jù)記錄的遷移延遲時(shí)間;根據(jù)所述遷移延遲時(shí)間,對(duì)所述各遷移任務(wù)的并發(fā)執(zhí)行數(shù)和/或所述多個(gè)子任務(wù)的并發(fā)執(zhí)行數(shù)進(jìn)行調(diào)整。具體的上述如圖5所示的裝置可以位于具有數(shù)據(jù)遷移功能的終端或服務(wù)器上。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè) 流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1