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

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

文檔序號(hào):12786410閱讀:254來(lái)源:國(guó)知局
一種數(shù)據(jù)庫(kù)遷移方法和裝置與流程

本申請(qǐng)屬于數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫(kù)遷移方法和裝置。



背景技術(shù):

數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),隨著信息技術(shù)和市場(chǎng)的發(fā)展,數(shù)據(jù)管理不再僅僅是存儲(chǔ)和管理數(shù)據(jù),而轉(zhuǎn)變成用戶(hù)所需要的各種數(shù)據(jù)管理的方式。數(shù)據(jù)庫(kù)有很多種類(lèi)型,從最簡(jiǎn)單的存儲(chǔ)有各種數(shù)據(jù)的表格到能夠進(jìn)行海量數(shù)據(jù)存儲(chǔ)的大型數(shù)據(jù)庫(kù)系統(tǒng)都在各個(gè)方面得到了廣泛的應(yīng)用。

在信息化社會(huì),充分有效地管理和利用各類(lèi)信息資源,是進(jìn)行科學(xué)研究和決策管理的前提條件。數(shù)據(jù)庫(kù)技術(shù)是管理信息系統(tǒng)、辦公自動(dòng)化系統(tǒng)、決策支持系統(tǒng)等各類(lèi)信息系統(tǒng)的核心部分,是進(jìn)行科學(xué)研究和決策管理的重要技術(shù)手段。

目前,一般情況下同一個(gè)實(shí)體對(duì)應(yīng)一個(gè)物理表,然而,隨著數(shù)據(jù)量的不斷增大,單表的局限性就逐步體現(xiàn)出來(lái)了,操作效率成為了業(yè)務(wù)的瓶頸。因此,如何進(jìn)行數(shù)據(jù)庫(kù)分區(qū)以便減少在特定的SQL操作中數(shù)據(jù)讀寫(xiě)的總量縮減響應(yīng)時(shí)間變得尤為重要。

當(dāng)然,目前數(shù)據(jù)庫(kù)分區(qū)操作需要將已有的數(shù)據(jù)全部導(dǎo)出,然后重新建表,在建表之后,再回導(dǎo)數(shù)據(jù),這種方式所存在的問(wèn)題就是在進(jìn)行數(shù)據(jù)庫(kù)分區(qū)的過(guò)程中不能有業(yè)務(wù)操作,且整個(gè)數(shù)據(jù)分區(qū)操作必須一次性完成,否則需要全部回滾。

針對(duì)上述數(shù)據(jù)庫(kù)分區(qū)過(guò)程中出現(xiàn)的問(wèn)題,目前尚未提出有效的解決方案。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)目的在于提供一種數(shù)據(jù)庫(kù)遷移方法和裝置,應(yīng)用于單數(shù)據(jù)庫(kù)向多數(shù)據(jù)庫(kù)進(jìn)行遷移中,可以簡(jiǎn)單高效地將單一數(shù)據(jù)庫(kù)遷移至多個(gè)數(shù)據(jù)庫(kù)。

本申請(qǐng)?zhí)峁┮环N數(shù)據(jù)庫(kù)遷移方法和裝置是這樣實(shí)現(xiàn)的:

一種數(shù)據(jù)庫(kù)遷移方法,該方法包括:

為待遷移數(shù)據(jù)庫(kù)建立多個(gè)數(shù)據(jù)分庫(kù),并為每個(gè)數(shù)據(jù)分庫(kù)分別創(chuàng)建多個(gè)邏輯分表;

建立所述待遷移數(shù)據(jù)庫(kù)所對(duì)應(yīng)的業(yè)務(wù)與各數(shù)據(jù)分庫(kù)的各邏輯分表之間的對(duì)應(yīng)關(guān)系,各邏輯分表均關(guān)聯(lián)所述待遷移數(shù)據(jù)庫(kù)的物理表,以使所述業(yè)務(wù)通過(guò)對(duì)各邏輯分表的訪問(wèn)可訪問(wèn)至所述物理表;

按照所述對(duì)應(yīng)關(guān)系將所述物理表遷移至所述多個(gè)數(shù)據(jù)分庫(kù)的各數(shù)據(jù)分表中,其中,所述數(shù)據(jù)分表與所述邏輯分表對(duì)應(yīng)。

一種數(shù)據(jù)庫(kù)遷移裝置,所述裝置包括:

第一建立模塊,用于為待遷移數(shù)據(jù)庫(kù)建立多個(gè)數(shù)據(jù)分庫(kù),并為每個(gè)數(shù)據(jù)分庫(kù)分別創(chuàng)建多個(gè)邏輯分表;

第二建立模塊,用于建立所述待遷移數(shù)據(jù)庫(kù)所對(duì)應(yīng)的業(yè)務(wù)與各數(shù)據(jù)分庫(kù)的各邏輯分表之間的對(duì)應(yīng)關(guān)系,各邏輯分表均關(guān)聯(lián)所述待遷移數(shù)據(jù)庫(kù)的物理表,以使所述業(yè)務(wù)通過(guò)對(duì)各邏輯分表的訪問(wèn)可訪問(wèn)至所述物理表;

遷移模塊,用于按照所述對(duì)應(yīng)關(guān)系將所述物理表遷移至所述多個(gè)數(shù)據(jù)分庫(kù)的各數(shù)據(jù)分表中,其中,所述數(shù)據(jù)分表與所述邏輯分表對(duì)應(yīng)。

本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)遷移方法和裝置,先為待遷移數(shù)據(jù)庫(kù)建立多個(gè)數(shù)據(jù)分庫(kù),同時(shí)為每個(gè)數(shù)據(jù)分庫(kù)分別創(chuàng)建多個(gè)邏輯分表,各邏輯分表均關(guān)聯(lián)所述待遷移數(shù)據(jù)庫(kù)的物理表,以使業(yè)務(wù)通過(guò)對(duì)各邏輯分表的訪問(wèn)可訪問(wèn)至物理表,然后再確定待遷移數(shù)據(jù)庫(kù)所對(duì)應(yīng)的業(yè)務(wù)與各數(shù)據(jù)分庫(kù)的各邏輯分表之間的對(duì)應(yīng)關(guān)系,從而按照對(duì)應(yīng)關(guān)系將物理表遷移至多個(gè)數(shù)據(jù)分庫(kù)與各邏輯分表對(duì)應(yīng)的各數(shù)據(jù)分表中,從而可以實(shí)現(xiàn)在無(wú)需中斷業(yè)務(wù)的情況下進(jìn)行單庫(kù)到多庫(kù)的遷移操作,因數(shù)據(jù)被分散到不同的數(shù)據(jù)庫(kù)的不同數(shù)據(jù)分表中,單個(gè)數(shù)據(jù)庫(kù)故障不會(huì)影響其它數(shù)據(jù)庫(kù)的使用。

附圖說(shuō)明

為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)遷移方法一種實(shí)施例的方法流程圖;

圖2是本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)遷移方法的架構(gòu)示意圖;

圖3是本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)遷移方法的另一方法流程圖;

圖4是本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)遷移裝置的一種結(jié)構(gòu)框圖;

圖5是本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)遷移裝置的另一結(jié)構(gòu)框圖。

具體實(shí)施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例。基于本申請(qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。

下面結(jié)合附圖對(duì)本申請(qǐng)所述的數(shù)據(jù)庫(kù)遷移方法和裝置進(jìn)行詳細(xì)的說(shuō)明。圖1是本申請(qǐng)?zhí)岢龅臄?shù)據(jù)庫(kù)遷移方法的一種實(shí)施例的方法流程圖。雖然本申請(qǐng)?zhí)峁┝巳缦率鰧?shí)施例或附圖所示的方法操作步驟或裝置結(jié)構(gòu),但基于常規(guī)或者無(wú)需創(chuàng)造性的勞動(dòng)在所述方法或裝置中可以包括更多或者更少的操作步驟或模塊結(jié)構(gòu)。在邏輯性上不存在必要因果關(guān)系的步驟或結(jié)構(gòu)中,這些步驟的執(zhí)行順序或裝置的模塊結(jié)構(gòu)不限于本申請(qǐng)實(shí)施例提供的執(zhí)行順序或模塊結(jié)構(gòu)。所述的方法或模塊結(jié)構(gòu)的在實(shí)際中的裝置或終端產(chǎn)品執(zhí)行時(shí),可以按照實(shí)施例或者附圖所示的方法或模塊結(jié)構(gòu)連接進(jìn)行順序執(zhí)行或者并行執(zhí)行(例如并行處理器或者多線程處理的環(huán)境)。

具體的,如圖1所示,本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)遷移方法的一種實(shí)施例,應(yīng)用于單數(shù)據(jù)庫(kù)向多數(shù)據(jù)庫(kù)進(jìn)行遷移中,可以包括:

S1:為待遷移數(shù)據(jù)庫(kù)建立多個(gè)數(shù)據(jù)分庫(kù),并為每個(gè)數(shù)據(jù)分庫(kù)分別創(chuàng)建多個(gè)邏輯分表;

假設(shè)有一個(gè)數(shù)據(jù)庫(kù)A,當(dāng)前希望將數(shù)據(jù)庫(kù)A中的數(shù)據(jù)遷移至多個(gè)數(shù)據(jù)庫(kù)中,例如:將數(shù)據(jù)庫(kù)A遷移至數(shù)據(jù)庫(kù)A-1、A-2、A-3、A-4中,其中,數(shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)A-1、A-2、A-3、A-4都是物理庫(kù),數(shù)據(jù)庫(kù)A是待遷移數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)A-1、A-2、A-3、A-4為多個(gè)數(shù)據(jù)分庫(kù)。即,在遷移之前,可以為數(shù)據(jù)庫(kù)A建立多個(gè)數(shù)據(jù)分庫(kù)(數(shù)據(jù)分庫(kù)A-1、A-2、A-3、A-4),同時(shí)為每個(gè)數(shù)據(jù)分庫(kù)分別創(chuàng)建多個(gè)邏輯分表,例如,建立十個(gè)數(shù)據(jù)分庫(kù),為每個(gè)數(shù)據(jù)分庫(kù)建立十個(gè)邏輯分表,那么就相當(dāng)于一共建立了一百個(gè)邏輯分表,所有這些邏輯分表都是關(guān)聯(lián)至數(shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)A的物理表中的。

S2:建立所述待遷移數(shù)據(jù)庫(kù)所對(duì)應(yīng)的業(yè)務(wù)與各數(shù)據(jù)分庫(kù)的各邏輯分表之間的對(duì)應(yīng)關(guān)系,各邏輯分表均關(guān)聯(lián)所述待遷移數(shù)據(jù)庫(kù)的物理表,以使所述業(yè)務(wù)通過(guò)對(duì)各邏輯分表的訪問(wèn)可訪問(wèn)至所述物理表;

具體地,可以通過(guò)同義詞建立所述各個(gè)數(shù)據(jù)分庫(kù)與所述待遷移數(shù)據(jù)庫(kù)之間的關(guān)聯(lián)關(guān)系,各個(gè)邏輯分表可以通過(guò)DBLink關(guān)聯(lián)至待遷移數(shù)據(jù)庫(kù)中的物理表中,即通過(guò)該同義詞和DBLink實(shí)現(xiàn)邏輯分表與待遷移數(shù)據(jù)庫(kù)中物理表的關(guān)聯(lián),從而使得業(yè)務(wù)通過(guò)對(duì)各邏輯分表的訪問(wèn)可訪問(wèn)至物理表。

其中,上述的DBLink表示的是數(shù)據(jù)庫(kù)的鏈接,可以將DBLink想象成電話線,是一個(gè)通道的概念,當(dāng)需要跨本地?cái)?shù)據(jù)庫(kù)訪問(wèn)另外一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),本地?cái)?shù)據(jù)庫(kù)中就需要?jiǎng)?chuàng)建一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)的DBLink,通過(guò)該創(chuàng)建的DBLink可以像訪問(wèn)本地?cái)?shù)據(jù)庫(kù)一樣訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

同義詞(Synonym)是指向其它數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)指針,相當(dāng)于一個(gè)別名,假設(shè)將數(shù)據(jù)分庫(kù)A-1、數(shù)據(jù)分庫(kù)A-2、數(shù)據(jù)分庫(kù)A-3、數(shù)據(jù)分庫(kù)A-4作為待遷移數(shù)據(jù)庫(kù)A的同義詞,那么在訪問(wèn)數(shù)據(jù)分庫(kù)A-1、數(shù)據(jù)分庫(kù)A-2、數(shù)據(jù)分庫(kù)A-3、數(shù)據(jù)分庫(kù)A-4的時(shí)候,會(huì)直接完成對(duì)待遷移數(shù)據(jù)庫(kù)A的訪問(wèn),因?yàn)榇w移數(shù)據(jù)庫(kù)A和數(shù)據(jù)分庫(kù)A-1、數(shù)據(jù)分庫(kù)A-2、數(shù)據(jù)分庫(kù)A-3、數(shù)據(jù)分庫(kù)A-4所指向的是相同的方向。

在該例中,可以建立數(shù)據(jù)庫(kù)A與數(shù)據(jù)分庫(kù)A-1、數(shù)據(jù)分庫(kù)A-2、數(shù)據(jù)分庫(kù)A-3、數(shù)據(jù)分庫(kù)A-4之間的對(duì)應(yīng)關(guān)系,假設(shè)數(shù)據(jù)庫(kù)A與多個(gè)業(yè)務(wù)存在聯(lián)系,即多個(gè)業(yè)務(wù)(業(yè)務(wù)1、業(yè)務(wù)2…業(yè)務(wù)n)會(huì)訪問(wèn)數(shù)據(jù)庫(kù)A的物理表中的數(shù)據(jù),那么也需要建立數(shù)據(jù)分庫(kù)A-1、數(shù)據(jù)分庫(kù)A-2、數(shù)據(jù)分庫(kù)A-3、數(shù)據(jù)分庫(kù)A-4與這些業(yè)務(wù)之間的對(duì)應(yīng)關(guān)系,以及這些業(yè)務(wù)所需要的訪問(wèn)數(shù)據(jù)與各個(gè)數(shù)據(jù)分庫(kù)中的邏輯分表之間的對(duì)應(yīng)關(guān)系。在建立這些對(duì)應(yīng)關(guān)系后,業(yè)務(wù)1、業(yè)務(wù)2…業(yè)務(wù)n可以通過(guò)訪問(wèn)數(shù)據(jù)分庫(kù)A-1、數(shù)據(jù)分庫(kù)A-2、數(shù)據(jù)分庫(kù)A-3、數(shù)據(jù)分庫(kù)A-4的邏輯分表實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)A中物理表的訪問(wèn),當(dāng)然在數(shù)據(jù)遷移前,業(yè)務(wù)也是可以直接訪問(wèn)數(shù)據(jù)庫(kù)A的。

進(jìn)一步的,因?yàn)閿?shù)據(jù)庫(kù)中主要是通過(guò)數(shù)據(jù)表的方式存儲(chǔ)數(shù)據(jù),在進(jìn)行數(shù)據(jù)庫(kù)遷移的時(shí)候,實(shí)質(zhì)上是將數(shù)據(jù)庫(kù)中的物理表遷移至數(shù)據(jù)分庫(kù)的數(shù)據(jù)表中,因?yàn)闉槊總€(gè)數(shù)據(jù)分庫(kù),建立了多個(gè)邏輯分表,邏輯分表又是與物理分表對(duì)應(yīng)的,因此,通過(guò)這種方式可以將物理表遷移至多個(gè)數(shù)據(jù)分庫(kù)的多個(gè)物理分表中。因此,在進(jìn)行數(shù)據(jù)遷移之前,可以根據(jù)遷移的目的,建立待遷移數(shù)據(jù)庫(kù)的物理表與邏輯分表之間的對(duì)應(yīng)關(guān)系,以及邏輯分表與業(yè)務(wù)之間的對(duì)應(yīng)關(guān)系,這樣,就通過(guò)業(yè)務(wù)與邏輯分表之間的對(duì)應(yīng),實(shí)現(xiàn)了業(yè)務(wù)與最終的數(shù)據(jù)分庫(kù)和數(shù)據(jù)分表的對(duì)應(yīng)。

例如,如下表1所示,可以按照以下方式建立對(duì)應(yīng)關(guān)系:

表1

即,可以按照上述表1建立待遷移數(shù)據(jù)庫(kù)與數(shù)據(jù)分庫(kù)和邏輯分表之間的對(duì)應(yīng)關(guān)系,其中,數(shù)據(jù)分庫(kù)所對(duì)應(yīng)的也就是單庫(kù)到多庫(kù)后的多個(gè)數(shù)據(jù)庫(kù),同時(shí)也可以按照數(shù)據(jù)表的拆分需求,在數(shù)據(jù)庫(kù)中建立多個(gè)數(shù)據(jù)分表,通過(guò)邏輯分表實(shí)現(xiàn)待遷移數(shù)據(jù)庫(kù)物理表中的數(shù)據(jù)被遷移至多個(gè)數(shù)據(jù)分庫(kù)的目的,只需要建立業(yè)務(wù)與數(shù)據(jù)分庫(kù)和邏輯分表之間的對(duì)應(yīng)關(guān)系,就可以完成數(shù)據(jù)遷移之前的數(shù)據(jù)與業(yè)務(wù)的對(duì)應(yīng)。

然而值得注意的是,上述表1中的對(duì)應(yīng)關(guān)系的建立,以及數(shù)據(jù)庫(kù)拆分的需求僅是為了更好地說(shuō)明本發(fā)明,在實(shí)際實(shí)現(xiàn)的過(guò)程中,可以按照其它方式設(shè)定,只要建立好之間的對(duì)應(yīng)關(guān)系,保證業(yè)務(wù)可以通過(guò)邏輯分表訪問(wèn)到需要訪問(wèn)的數(shù)據(jù)即可,具體的拆分和實(shí)現(xiàn)方式可以按照實(shí)際需要選擇,本申請(qǐng)對(duì)此不作限定。

S3:按照所述對(duì)應(yīng)關(guān)系將所述物理表遷移至所述多個(gè)數(shù)據(jù)分庫(kù)的各數(shù)據(jù)分表中,其中,所述數(shù)據(jù)分表與所述邏輯分表對(duì)應(yīng)。

在按照上述步驟S2中的方式建立了業(yè)務(wù)與數(shù)據(jù)分庫(kù)和邏輯分表之間的對(duì)應(yīng)關(guān)系,以及邏輯分表與待遷移數(shù)據(jù)庫(kù)之間的對(duì)應(yīng)關(guān)系之后,就可以在不影響業(yè)務(wù)執(zhí)行的情況下,實(shí)現(xiàn)對(duì)數(shù)據(jù)的遷移了。在這個(gè)過(guò)程中,可以直接將待遷移數(shù)據(jù)庫(kù)中的物理表遷移至對(duì)應(yīng)的數(shù)據(jù)分庫(kù)中,在數(shù)據(jù)遷移過(guò)程中,業(yè)務(wù)可以通過(guò)對(duì)邏輯分表的訪問(wèn)實(shí)現(xiàn)對(duì)待遷移數(shù)據(jù)庫(kù)的訪問(wèn),也可以通過(guò)對(duì)邏輯分表的訪問(wèn)實(shí)現(xiàn)對(duì)遷移至的數(shù)據(jù)分庫(kù)的訪問(wèn)。通過(guò)上述方式,可以在不中斷業(yè)務(wù)的情況下,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)由單庫(kù)到多庫(kù)的遷移。

在進(jìn)行數(shù)據(jù)遷移的過(guò)程中,需要有一個(gè)待遷移數(shù)據(jù)庫(kù)物理表到數(shù)據(jù)分庫(kù)和邏輯分表的對(duì)應(yīng)關(guān)系,在本例中,可以通過(guò)散列方法確定待遷移數(shù)據(jù)庫(kù)中物理表中的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)分庫(kù)和邏輯分表的編號(hào),然后根據(jù)確定的數(shù)據(jù)分庫(kù)和邏輯分表的編號(hào),將待遷移數(shù)據(jù)庫(kù)中的各數(shù)據(jù)表分別遷移至對(duì)應(yīng)的數(shù)據(jù)分庫(kù)和物理分表中。

上述散列方法存儲(chǔ)的基本思想是:由節(jié)點(diǎn)的關(guān)鍵碼值決定節(jié)點(diǎn)的存儲(chǔ)地址,散列是數(shù)組存儲(chǔ)方式的一種發(fā)展,相比數(shù)組,散列的數(shù)據(jù)訪問(wèn)速度要高于數(shù)組,因?yàn)榭梢砸罁?jù)存儲(chǔ)數(shù)據(jù)的部分內(nèi)容找到數(shù)據(jù)在數(shù)組中的存儲(chǔ)位置,進(jìn)而能夠快速實(shí)現(xiàn)數(shù)據(jù)的訪問(wèn),理想的散列訪問(wèn)速度是非常迅速的,而不像在數(shù)組中的遍歷過(guò)程,采用存儲(chǔ)數(shù)組中內(nèi)容的部分元素作為映射函數(shù)的輸入,映射函數(shù)的輸出就是存儲(chǔ)數(shù)據(jù)的位置,這樣的訪問(wèn)速度就省去了遍歷數(shù)組的實(shí)現(xiàn)。在實(shí)際實(shí)現(xiàn)的時(shí)候,散列方法也會(huì)存在沖突的問(wèn)題,為了解決沖突,可以采用鏈表的形式,將所有沖突的數(shù)據(jù)項(xiàng)采用鏈表的形式鏈接起來(lái),這樣搜索數(shù)據(jù)的復(fù)雜度就包含了鏈表的遍歷問(wèn)題,特別是當(dāng)所有的項(xiàng)都鏈接到一個(gè)鏈表下時(shí),這時(shí)候?qū)嶋H上就是遍歷鏈表,復(fù)雜度并不一定有很大的進(jìn)步,但是這種鏈表鏈接的方式有很高的填充率。為了解決沖突,還可以通過(guò)充分利用沒(méi)有實(shí)現(xiàn)的存儲(chǔ)空間來(lái)解決沖突問(wèn)題,即,利用探測(cè)法探測(cè)空閑的空間,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。

在進(jìn)行數(shù)據(jù)遷移的過(guò)程中,為了避免業(yè)務(wù)出現(xiàn)故障,可以暫時(shí)將待遷移數(shù)據(jù)庫(kù)的狀態(tài)設(shè)置為只讀狀態(tài),中止對(duì)待遷移數(shù)據(jù)庫(kù)的寫(xiě)入操作,從而避免對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的誤操作。在完成數(shù)據(jù)遷移之后,就可以刪除邏輯分表與待遷移數(shù)據(jù)庫(kù)之間的DBLink,此時(shí)業(yè)務(wù)系統(tǒng)指向的就是真正意義上的數(shù)據(jù)分庫(kù)和數(shù)據(jù)分表,業(yè)務(wù)可以恢復(fù)運(yùn)行,物理表的數(shù)據(jù)遷移完成。

下面結(jié)合一個(gè)具體應(yīng)用場(chǎng)景對(duì)上述數(shù)據(jù)庫(kù)由單庫(kù)到多庫(kù)的遷移方法進(jìn)行說(shuō)明,然而值得注意的是,該具體實(shí)施例僅是為了更好地說(shuō)明本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。

在該具體實(shí)施例中,如圖2所示為具體的架構(gòu)示意圖,待遷移的數(shù)據(jù)單庫(kù)或者說(shuō)數(shù)據(jù)單表的庫(kù)名或表名為:P2P_TRANSACTION_DAILY_CONTROL,遷移的目標(biāo)數(shù)據(jù)庫(kù)的庫(kù)名或者表名為:FINTRADE_PURCHASE_CONTROL_PROD_xx。

根據(jù)分庫(kù)的具體需要,將該數(shù)據(jù)庫(kù)遷移至十個(gè)數(shù)據(jù)庫(kù),那么可以新建10個(gè)物理分庫(kù)(也可以稱(chēng)為數(shù)據(jù)分表),分別是:zcb00、zcb01、zcb02、zcb03、zcb04、zcb05、zcb06、zcb07、zcb08、zcb09。

在10個(gè)分庫(kù)中創(chuàng)建對(duì)應(yīng)的DBLink,實(shí)際物理DB為當(dāng)前單庫(kù)的DB:CREATE DATABASE LINK dblinktest CONNECT TO username IDENTIFIED BY<PWD>USING'MACC'。同時(shí),還需要?jiǎng)?chuàng)建分庫(kù)對(duì)應(yīng)的同義詞,通過(guò)同義詞和DBLink的設(shè)定,可以實(shí)現(xiàn)通過(guò)訪問(wèn)物理分庫(kù)和邏輯分表實(shí)現(xiàn)對(duì)原始數(shù)據(jù)庫(kù)的訪問(wèn)。

在進(jìn)行數(shù)據(jù)訪問(wèn)的時(shí)候,業(yè)務(wù)系統(tǒng)可以采用散列方法,根據(jù)當(dāng)前機(jī)構(gòu)ID確定當(dāng)前機(jī)構(gòu)屬于哪個(gè)分庫(kù)哪個(gè)分表。具體實(shí)現(xiàn)時(shí),可以通過(guò)數(shù)據(jù)訪問(wèn)層的中間件訪問(wèn)指定的分庫(kù)分表,在訪問(wèn)時(shí)候,所訪問(wèn)的表實(shí)際是通過(guò)同義詞定義的邏輯表,真實(shí)的訪問(wèn)是通過(guò)DBLink直接訪問(wèn)到對(duì)應(yīng)的物理表,這個(gè)過(guò)程對(duì)于上層業(yè)務(wù)而言是無(wú)感知的,上層業(yè)務(wù)的開(kāi)發(fā)與表數(shù)據(jù)遷移可以同步進(jìn)行。

如圖3所示,在有業(yè)務(wù)處理的時(shí)候,如果需要訪問(wèn)數(shù)據(jù),那么通過(guò)數(shù)據(jù)訪問(wèn)層的中間件確定需要訪問(wèn)的分庫(kù)分表,然后通過(guò)訪問(wèn)邏輯分表訪問(wèn)對(duì)應(yīng)的分庫(kù)分表,分庫(kù)分表通過(guò)DBLink連接匹配的別名(即同義詞),通過(guò)別名訪問(wèn)對(duì)應(yīng)的單庫(kù)單表數(shù)據(jù)。

通過(guò)上述操作,物理表雖然沒(méi)有進(jìn)行拆分,但是邏輯表已經(jīng)通過(guò)DBLink與同義詞的方式實(shí)現(xiàn)了分庫(kù)分表,此時(shí),對(duì)于上層業(yè)務(wù)而言,已經(jīng)是真正意義上的分庫(kù)分表,這些操作對(duì)于上層業(yè)務(wù)數(shù)據(jù)是無(wú)感知的。

在進(jìn)行物理表中數(shù)據(jù)遷移的時(shí)候,可以在分庫(kù)上建立物理分表,然后按照分庫(kù)分表的規(guī)則,將數(shù)據(jù)從單表中直接遷移過(guò)來(lái)。為了避免在數(shù)據(jù)遷移的過(guò)程中出現(xiàn)數(shù)據(jù)混亂,可以在進(jìn)行數(shù)據(jù)遷移時(shí),暫停推進(jìn)業(yè)務(wù),將當(dāng)前的物理表設(shè)置為只讀模式,從而避免遷移過(guò)程中發(fā)生數(shù)據(jù)的寫(xiě)入情況。在數(shù)據(jù)遷移完成后,就可以刪除DBLink,此時(shí),業(yè)務(wù)系統(tǒng)指向的就是真正意義上的物理表,然后打開(kāi)推進(jìn)業(yè)務(wù),業(yè)務(wù)繼續(xù)恢復(fù)運(yùn)行,物理表遷移完成。

在上例中,通過(guò)DBLink和同義詞的使用,在減少對(duì)業(yè)務(wù)推進(jìn)的影響的情況下,實(shí)現(xiàn)了物理庫(kù)分離,使得數(shù)據(jù)庫(kù)連接被分散到各個(gè)數(shù)據(jù)庫(kù)中,并發(fā)處理能力得到了極大提高。同時(shí),如果是在單庫(kù)進(jìn)行操作,那么要是出現(xiàn)單點(diǎn)故障,整個(gè)應(yīng)用都將會(huì)崩潰,本例最終實(shí)現(xiàn)了物理庫(kù)遷移,因此,該問(wèn)題會(huì)被分散到不同的數(shù)據(jù)庫(kù)中,單個(gè)數(shù)據(jù)庫(kù)故障不會(huì)影響其它庫(kù)的使用。

基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種數(shù)據(jù)庫(kù)遷移裝置,如下面的實(shí)施例所述。由于數(shù)據(jù)庫(kù)遷移裝置解決問(wèn)題的原理與數(shù)據(jù)庫(kù)遷移方法相似,因此數(shù)據(jù)庫(kù)遷移裝置的實(shí)施可以參見(jiàn)數(shù)據(jù)庫(kù)遷移方法的實(shí)施,重復(fù)之處不再贅述。以下所使用的,術(shù)語(yǔ)“單元”或者“模塊”可以實(shí)現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實(shí)施例所描述的裝置較佳地以軟件來(lái)實(shí)現(xiàn),但是硬件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。圖4是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)遷移裝置的一種結(jié)構(gòu)框圖,如圖4所示,可以包括:第一建立模塊401、第二建立模塊402和遷移模塊403,下面對(duì)該結(jié)構(gòu)進(jìn)行說(shuō)明。

第一建立模塊401,可以用于為待遷移數(shù)據(jù)庫(kù)建立多個(gè)數(shù)據(jù)分庫(kù),并為每個(gè)數(shù)據(jù)分庫(kù)分別創(chuàng)建多個(gè)邏輯分表;

第二建立模塊402,可以用于建立所述待遷移數(shù)據(jù)庫(kù)所對(duì)應(yīng)的業(yè)務(wù)與各數(shù)據(jù)分庫(kù)的各邏輯分表之間的對(duì)應(yīng)關(guān)系,各邏輯分表均關(guān)聯(lián)所述待遷移數(shù)據(jù)庫(kù)的物理表,以使所述業(yè)務(wù)通過(guò)對(duì)各邏輯分表的訪問(wèn)可訪問(wèn)至所述物理表;

遷移模塊403,可以用于按照所述對(duì)應(yīng)關(guān)系將所述物理表遷移至所述多個(gè)數(shù)據(jù)分庫(kù)的各數(shù)據(jù)分表中,其中,所述數(shù)據(jù)分表與所述邏輯分表對(duì)應(yīng)。

在一個(gè)實(shí)施方式中,如圖5所示,上述第二建立模塊402可以包括:確定單元501,用于通過(guò)散列方法確定所述待遷移數(shù)據(jù)庫(kù)所對(duì)應(yīng)的業(yè)務(wù)需要訪問(wèn)的數(shù)據(jù)所對(duì)應(yīng)數(shù)據(jù)分庫(kù)的編號(hào)和邏輯分表的編號(hào);確立單元502,可以用于將所述業(yè)務(wù)所對(duì)應(yīng)的所述數(shù)據(jù)分庫(kù)的編號(hào)和所述邏輯分表的編號(hào),作為所述業(yè)務(wù)與各數(shù)據(jù)分庫(kù)的各邏輯分表之間的對(duì)應(yīng)關(guān)系。

在一個(gè)實(shí)施方式中,第二建立模塊402具體可以用于通過(guò)同義詞建立所述各個(gè)數(shù)據(jù)分庫(kù)與所述待遷移數(shù)據(jù)庫(kù)之間的關(guān)聯(lián)關(guān)系,所述各個(gè)邏輯分表通過(guò)DBLink關(guān)聯(lián)至所述待遷移數(shù)據(jù)庫(kù)的物理表。

在一個(gè)實(shí)施方式中,上述數(shù)據(jù)庫(kù)遷移裝置還可以包括:刪除模塊,可以用于在按照所述對(duì)應(yīng)關(guān)系將所述物理表遷移至所述多個(gè)數(shù)據(jù)分庫(kù)的各數(shù)據(jù)分表中之后,刪除DBLink。

在一個(gè)實(shí)施方式中,上述數(shù)據(jù)庫(kù)遷移裝置還可以包括:設(shè)置模塊,用于在按照所述對(duì)應(yīng)關(guān)系將所述物理表遷移至所述多個(gè)數(shù)據(jù)分庫(kù)的各數(shù)據(jù)分表中的過(guò)程中,將所述待遷移數(shù)據(jù)庫(kù)的狀態(tài)設(shè)置為只讀狀態(tài),中止對(duì)所述待遷移數(shù)據(jù)庫(kù)的寫(xiě)入操作。

本申請(qǐng)?zhí)峁┑臄?shù)據(jù)庫(kù)遷移方法和裝置,先為待遷移數(shù)據(jù)庫(kù)建立多個(gè)數(shù)據(jù)分庫(kù),同時(shí)為每個(gè)數(shù)據(jù)分庫(kù)分別創(chuàng)建多個(gè)邏輯分表,各邏輯分表均關(guān)聯(lián)所述待遷移數(shù)據(jù)庫(kù)的物理表,以使業(yè)務(wù)通過(guò)對(duì)各邏輯分表的訪問(wèn)可訪問(wèn)至物理表,然后再確定待遷移數(shù)據(jù)庫(kù)所對(duì)應(yīng)的業(yè)務(wù)與各數(shù)據(jù)分庫(kù)的各邏輯分表之間的對(duì)應(yīng)關(guān)系,從而按照對(duì)應(yīng)關(guān)系將物理表遷移至多個(gè)數(shù)據(jù)分庫(kù)與各邏輯分表對(duì)應(yīng)的各數(shù)據(jù)分表中,從而可以實(shí)現(xiàn)在無(wú)需中斷業(yè)務(wù)的情況下進(jìn)行單庫(kù)到多庫(kù)的遷移操作,因數(shù)據(jù)被分散到不同的數(shù)據(jù)庫(kù)的不同數(shù)據(jù)分表中,單個(gè)數(shù)據(jù)庫(kù)故障不會(huì)影響其它數(shù)據(jù)庫(kù)的使用。

本申請(qǐng)中各個(gè)實(shí)施例所涉及的上述描述僅是本申請(qǐng)中的一些實(shí)施例中的應(yīng)用,在某些標(biāo)準(zhǔn)、模型、方法的基礎(chǔ)上略加修改后的實(shí)施方式也可以實(shí)行上述本申請(qǐng)各實(shí)施例的方案。當(dāng)然,在符合本申請(qǐng)上述各實(shí)施例的中所述的處理方法步驟的其他無(wú)創(chuàng)造性的變形,仍然可以實(shí)現(xiàn)相同的申請(qǐng),在此不再贅述。

雖然本申請(qǐng)?zhí)峁┝巳鐚?shí)施例或流程圖所述的方法操作步驟,但基于常規(guī)或者無(wú)創(chuàng)造性的勞動(dòng)可以包括更多或者更少的操作步驟。實(shí)施例中列舉的步驟順序僅僅為眾多步驟執(zhí)行順序中的一種方式,不代表唯一的執(zhí)行順序。在實(shí)際中的裝置或客戶(hù)端產(chǎn)品執(zhí)行時(shí),可以按照實(shí)施例或者附圖所示的方法順序執(zhí)行或者并行執(zhí)行(例如并行處理器或者多線程處理的環(huán)境)。

上述實(shí)施例闡明的裝置或模塊,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來(lái)實(shí)現(xiàn)。為了描述的方便,描述以上裝置時(shí)以功能分為各種模塊分別描述。在實(shí)施本申請(qǐng)時(shí)可以把各模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。當(dāng)然,也可以將實(shí)現(xiàn)某功能的模塊由多個(gè)子模塊或子單元組合實(shí)現(xiàn)。

本申請(qǐng)中所述的方法、裝置或模塊可以以計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器按任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲(chǔ)可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門(mén)、開(kāi)關(guān)、專(zhuān)用集成電路(Application Specific Integrated Circuit,ASIC)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存儲(chǔ)器控制器還可以被實(shí)現(xiàn)為存儲(chǔ)器的控制邏輯的一部分。本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過(guò)將方法步驟進(jìn)行邏輯編程來(lái)使得控制器以邏輯門(mén)、開(kāi)關(guān)、專(zhuān)用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來(lái)實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)部包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)。或者甚至,可以將用于實(shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。

本申請(qǐng)所述裝置中的部分模塊可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)、類(lèi)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。

通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的硬件的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),也可以通過(guò)數(shù)據(jù)遷移的實(shí)施過(guò)程中體現(xiàn)出來(lái)。該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),移動(dòng)終端,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。

本說(shuō)明書(shū)中的各個(gè)實(shí)施例采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同或相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。本申請(qǐng)的全部或者部分可用于眾多通用或?qū)S玫挠?jì)算機(jī)系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、移動(dòng)通信終端、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程的電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。

雖然通過(guò)實(shí)施例描繪了本申請(qǐng),本領(lǐng)域普通技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本申請(qǐng)的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請(qǐng)的精神。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1