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

分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移方法和分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)的制作方法

文檔序號(hào):6426912閱讀:164來(lái)源:國(guó)知局
專利名稱:分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移方法和分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移方法和一種分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)。
背景技術(shù)
在一些數(shù)據(jù)量大的應(yīng)用系統(tǒng)中,需要將海量的數(shù)據(jù)按照一定的算法分布在多個(gè)子數(shù)據(jù)庫(kù)中。隨著時(shí)間的推移和數(shù)據(jù)的增多,可以數(shù)據(jù)的分布不再均衡,導(dǎo)致有些子數(shù)據(jù)庫(kù)的壓力過(guò)大,而有些子數(shù)據(jù)庫(kù)的壓力又偏小。此時(shí)需要將數(shù)據(jù)從壓力大的子數(shù)據(jù)庫(kù)遷移到壓力小的子數(shù)據(jù)庫(kù)中,或者,增加新的子數(shù)據(jù)庫(kù),將數(shù)據(jù)遷移到新增的子數(shù)據(jù)庫(kù)中?,F(xiàn)有的數(shù)據(jù)遷移方案主要有以下兩種方案一數(shù)據(jù)庫(kù)自身提供數(shù)據(jù)的導(dǎo)入和導(dǎo)出功能,如Oracle、Sql Server, MySql 數(shù)據(jù)庫(kù)都提供數(shù)據(jù)的導(dǎo)入導(dǎo)出功能。但方案一不能解決異構(gòu)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)遷移,比如不能將Oracle數(shù)據(jù)庫(kù)中的數(shù)據(jù)遷移到MySql中;在數(shù)據(jù)遷移過(guò)程中,不能保證數(shù)據(jù)的可用性。方案二 采用程序方式實(shí)現(xiàn),從原數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),然后寫(xiě)入目標(biāo)數(shù)據(jù)庫(kù),需要中斷用戶的業(yè)務(wù)。方案二能夠解決數(shù)據(jù)庫(kù)異構(gòu)問(wèn)題,但是在遷移過(guò)程中,仍不能保證數(shù)據(jù)的一致性。

發(fā)明內(nèi)容
本發(fā)明提供了一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移方法,該方法能在數(shù)據(jù)遷移的過(guò)程中保證數(shù)據(jù)的一致性和可用性,并且不中斷用戶的業(yè)務(wù)。本發(fā)明還提供了一種分布式數(shù)據(jù)庫(kù)遷移系統(tǒng),該分布式數(shù)據(jù)庫(kù)能在數(shù)據(jù)遷移的過(guò)程中保證數(shù)據(jù)的一致性和可用性,并且不中斷用戶的業(yè)務(wù)。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明公開(kāi)了一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移方法,所述分布式數(shù)據(jù)庫(kù)由一個(gè)檢索庫(kù)和多個(gè)子庫(kù)組成,子庫(kù)存儲(chǔ)用戶數(shù)據(jù),檢索庫(kù)存儲(chǔ)用戶標(biāo)識(shí)和用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系,其特征在于,檢索庫(kù)中還存儲(chǔ)與用戶標(biāo)識(shí)對(duì)應(yīng)的鎖標(biāo)志,則將指定用戶的數(shù)據(jù)從原子庫(kù)遷移到目標(biāo)子庫(kù)的方法包括根據(jù)所述指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,并將與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效;根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù),并將所獲取的數(shù)據(jù)寫(xiě)入目標(biāo)子庫(kù)中;如果寫(xiě)入成功,則將檢索庫(kù)中 的與該指定用戶的標(biāo)識(shí)對(duì)應(yīng)的用戶數(shù)據(jù)在子庫(kù)中的位置信息,修改為所寫(xiě)入的目標(biāo)子庫(kù)中的位置信息,并將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效;
如果寫(xiě)入失敗,則將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效,并刪除已寫(xiě)入目標(biāo)子庫(kù)中的該指定用戶的數(shù)據(jù)。本發(fā)明還提供了一種分布式數(shù)據(jù)庫(kù)遷移系統(tǒng),其特征在于,該分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)包括一個(gè)檢索庫(kù)、多個(gè)子庫(kù)和一個(gè)數(shù)據(jù)遷移模塊,其中子庫(kù)存,用于儲(chǔ)用戶數(shù)據(jù); 檢索庫(kù),用于存儲(chǔ)用戶標(biāo)識(shí)、用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系以及鎖標(biāo)志之間的對(duì)應(yīng)關(guān)系;數(shù)據(jù)遷移模塊,用于根據(jù)指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,并將與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效;根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù),并將所獲取的數(shù)據(jù)寫(xiě)入目標(biāo)子庫(kù)中;如果寫(xiě)入成功,則將檢索庫(kù)中的與該指定用戶的標(biāo)識(shí)對(duì)應(yīng)的用戶數(shù)據(jù)在子庫(kù)中的位置信息,修改為所寫(xiě)入的目標(biāo)子庫(kù)中的位置信息,并將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效;如果寫(xiě)入失敗,則將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效,并刪除已寫(xiě)入目標(biāo)子庫(kù)中的該指定用戶的數(shù)據(jù)。由上述可見(jiàn),根據(jù)所述指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,并將與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效;根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù),并將所獲取的數(shù)據(jù)寫(xiě)入目標(biāo)子庫(kù)中;如果寫(xiě)入成功,則將檢索庫(kù)中的與該指定用戶的標(biāo)識(shí)對(duì)應(yīng)的用戶數(shù)據(jù)在子庫(kù)中的位置信息,修改為所寫(xiě)入的目標(biāo)子庫(kù)中的位置信息,并將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效;如果寫(xiě)入失敗,則將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效,并刪除已寫(xiě)入目標(biāo)子庫(kù)中的該指定用戶的數(shù)據(jù)的技術(shù)方案,由于在數(shù)據(jù)遷移的過(guò)程中對(duì)用戶數(shù)據(jù)在子庫(kù)中的位置信息的修改機(jī)制,以及鎖標(biāo)志的設(shè)定機(jī)制,使得能夠保證用戶數(shù)據(jù)的可用性和一致性,并且不中斷用戶的業(yè)務(wù),使得用戶無(wú)感知,提高了用戶體驗(yàn)。


圖1是本發(fā)明實(shí)施例中的分布式數(shù)據(jù)庫(kù)的示意圖;圖2是本發(fā)明實(shí)施例中的用戶數(shù)據(jù)從DB_A1和DB_B1遷移到DB_A2和DB_B2的流程圖;圖3是本發(fā)明中的用戶數(shù)據(jù)從DB_A1和DB_B1遷移到DB_A2和DB_B2的一個(gè)較佳實(shí)施例的流程圖;圖4是本發(fā)明實(shí)施例中的一種分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)的組成結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明的方案主要解決了分布式數(shù)據(jù)庫(kù)中的數(shù)據(jù)遷移問(wèn)題,并能保證在數(shù)據(jù)遷移過(guò)程中不影響應(yīng)用系統(tǒng)的使用,保證了數(shù)據(jù)的可用性。具體思路為根據(jù)需求將特定用戶數(shù)據(jù)從分布的一個(gè)子庫(kù)遷移到另一個(gè)子庫(kù),在遷移過(guò)程中將此用戶數(shù)據(jù)鎖定,保證了用戶數(shù)據(jù)的一致性。在遷移過(guò)程中,此用戶的數(shù)據(jù)仍然指向原始數(shù)據(jù)庫(kù),遷移成功后指向目標(biāo)數(shù)據(jù)庫(kù);如果遷移失敗,用戶的原始數(shù)據(jù)不會(huì)發(fā)生改變,刪除目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù),保證了數(shù)據(jù)的可用性以及不會(huì)產(chǎn)生垃圾數(shù)據(jù)。為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。圖1是本發(fā)明實(shí)施例中的分布式數(shù)據(jù)庫(kù)的示意圖。如圖1所示,分布式數(shù)據(jù)庫(kù)由一個(gè)檢索庫(kù)和多個(gè)分布式的子庫(kù)組成,其中分布式的子庫(kù)是同質(zhì)同構(gòu)的一組數(shù)據(jù)庫(kù),按照水平分片的方式存儲(chǔ)用戶數(shù)據(jù);例如,DB_A1和DB_B1是一組子數(shù)據(jù)庫(kù)、DB_A2和DB_B2是一組子數(shù)據(jù)庫(kù),以此類推。檢索庫(kù)存儲(chǔ)用戶標(biāo)識(shí)和用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系,以及與用戶標(biāo)識(shí)對(duì)應(yīng)的鎖標(biāo)志。這里根據(jù)一定的算法將用戶數(shù)據(jù)分布在不同的字庫(kù)中,例如,根據(jù)對(duì)用戶標(biāo)識(shí)進(jìn)行取模的算法,或根據(jù)對(duì)用戶標(biāo)識(shí)進(jìn)行哈希取模的算法,建立用戶標(biāo)識(shí)與用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系。在本實(shí)施例中,UserOOl的數(shù)據(jù)存儲(chǔ)在DB_A1和 DB_B1中,User002的數(shù)據(jù)存儲(chǔ)在DB_A2和DB_B2中,以此類推,則在本實(shí)施例中,檢索庫(kù)中存儲(chǔ)的初始內(nèi)容如下UserOOl Index = 1 Lock = false User002 Index = 2 Lock = false ; User003 Index = 3 Lock = false ;User004 Index = 4 Lock = false ;其中,Index表示用戶數(shù)據(jù)在字庫(kù)中的位置信息,1表示數(shù)據(jù)庫(kù)DB_A1和DB_B1,以此類推。“false”表示鎖標(biāo)志無(wú)效,“Ture”表示有效。下面以用戶UserOOl的數(shù)據(jù)從DB_A1和DB_B1遷移到DB_A2和DB_B2為例,對(duì)本發(fā)明中的數(shù)據(jù)遷移的流程進(jìn)行說(shuō)明。圖2是本發(fā)明實(shí)施例中的用戶數(shù)據(jù)從DB_A1和DB_B1遷移到DB_A2和DB_B2的流程圖。如圖2所示,該流程包括步驟1.根據(jù)用戶UserOOl的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該用戶數(shù)據(jù)在原子庫(kù)(DB_ Al和DB_B1)中的位置信息,并將與該用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效。這里將對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效,即設(shè)置對(duì)應(yīng)的Lock = True ;這樣,在數(shù)據(jù)遷移過(guò)程中所有更新此用戶的數(shù)據(jù)的操作都不被允許。在遷移過(guò)程中系統(tǒng)獲取該用戶數(shù)據(jù)仍然指向原數(shù)據(jù)庫(kù),不影響該用戶數(shù)據(jù)的讀取。步驟2.根據(jù)所獲取的該用戶數(shù)據(jù)在原子庫(kù)中的位置信息,從原字庫(kù)中讀取用戶數(shù)據(jù),并將所獲取的用戶數(shù)據(jù)寫(xiě)入目標(biāo)子庫(kù)(DB_A2和DB_B2)中。步驟3.如果寫(xiě)入成功,則更新用戶數(shù)據(jù)的位置信息并解除鎖定,即將檢索庫(kù)中的與該用戶的標(biāo)識(shí)對(duì)應(yīng)的用戶數(shù)據(jù)在子庫(kù)中的位置信息,修改為所寫(xiě)入的目標(biāo)子庫(kù)中的位置信息,并將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效;刪除原子庫(kù)中的該用戶的數(shù)據(jù)。此時(shí),系統(tǒng)獲取該用戶數(shù)據(jù),則已經(jīng)指向目標(biāo)數(shù)據(jù)庫(kù),可以進(jìn)行讀取和修改操作。步驟4.如果寫(xiě)入失敗,則將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效, 并刪除已寫(xiě)入目標(biāo)子庫(kù)中的該用戶的數(shù)據(jù)。本步驟,保證了不會(huì)產(chǎn)生垃圾數(shù)據(jù),用戶數(shù)據(jù)的位置信息仍指向原數(shù)據(jù)庫(kù),保證了數(shù)據(jù)的可用性。
到此完成了數(shù)據(jù)的遷移過(guò)程。 由上述過(guò)程可以看出,在本發(fā)明的方案中,訪問(wèn)分布式數(shù)據(jù)庫(kù)時(shí)會(huì)受到檢索庫(kù)中的鎖標(biāo)志的限制,具體為當(dāng)需要訪問(wèn)指定用戶的數(shù)據(jù)時(shí),根據(jù)所述指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息,并判斷與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志是否為有效;如果為有效,則根據(jù)該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息,只對(duì)該指定用戶的數(shù)據(jù)進(jìn)行讀訪問(wèn)操作,而不能對(duì)該指定用戶的數(shù)據(jù)進(jìn)行更新操作;如果為無(wú)效,則可以進(jìn)行讀取或修改等任何操作。此外,還有一種情況是有些應(yīng)用根據(jù)指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息后,緩存該位置信息,之后會(huì)根據(jù)所緩存的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù),而不再查詢檢索庫(kù)。此時(shí)如果指定用戶的數(shù)據(jù)發(fā)生了遷移,則該應(yīng)用的訪問(wèn)將會(huì)出錯(cuò)。針對(duì)這種情況,在本發(fā)明中對(duì)圖2所示意的方法進(jìn)行了進(jìn)一步的完善,具體如圖3所示。圖3是本發(fā)明中的用戶數(shù)據(jù)從DB_A1和DB_B1遷移到DB_A2和DB_B2的一個(gè)較佳實(shí)施例的流程圖。如圖3所示,其中的“其它應(yīng)用”為用戶(UserOOl)數(shù)據(jù)在從原子庫(kù)(DB_ Al和DB_B1)遷移到目標(biāo)子庫(kù)(DB_A2和DB_B2)之前,就訪問(wèn)原子庫(kù)(DB_A1和DB_B1)的應(yīng)用,由于這些應(yīng)用在本地緩存的了用戶數(shù)據(jù)在原子庫(kù)(DB_A1和DB_B1)中的位置信息,并根據(jù)所緩存的位置信息訪問(wèn)該用戶數(shù)據(jù),因此本流程相對(duì)與圖2所示的流程還增加了如下過(guò)程a、在步驟2中根據(jù)所獲取的該用戶(UserOOl)數(shù)據(jù)在原子庫(kù)(DB_A1和DB_B1)中的位置信息,獲取用戶的數(shù)據(jù)之前,向已在該原子庫(kù)訪問(wèn)該用戶的數(shù)據(jù)的其它應(yīng)用發(fā)送該用戶的數(shù)據(jù)將要遷移的第一通知消息;所述其它應(yīng)用接收到第一通知消息后,只對(duì)該用戶的數(shù)據(jù)進(jìn)行讀訪問(wèn)操作,而不對(duì)該指定用戶的數(shù)據(jù)進(jìn)行更新操作;b、步驟3中,如果寫(xiě)入成功,則還向所述其它應(yīng)用發(fā)送該用戶的數(shù)據(jù)已遷移成功的第二通知消息,該第二通知消息中包含該用戶的數(shù)據(jù)在目標(biāo)庫(kù)(DB_A2和DB_B2)中的位置信息;所述其它應(yīng)用接收到第二通知消息后,用第二通知消息中的位置信息更新所緩存的位置信息,并根據(jù)更新后的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù);C、步驟4中,如果寫(xiě)入失敗,則還向所述其它應(yīng)用發(fā)送指定用戶的數(shù)據(jù)遷移失敗的第三通知消息;所述其它應(yīng)用接收到第三通知消息后,仍根據(jù)所之前緩存的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù)。經(jīng)過(guò)上述方案可以解決有些應(yīng)用根據(jù)本地緩存的位置信息去訪問(wèn)數(shù)據(jù)庫(kù)中的用戶數(shù)據(jù),導(dǎo)致不能感知用戶數(shù)據(jù)遷移的問(wèn)題?;谏鲜鰧?shí)施例給出本發(fā)明中的一種分布式數(shù)據(jù)庫(kù)的組成結(jié)構(gòu)。圖4是本發(fā)明實(shí)施例中的一種分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)的組成結(jié)構(gòu)示意圖。如圖4 所示,該分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)包括一個(gè)檢索庫(kù)401、多個(gè)子庫(kù)402和一個(gè)數(shù)據(jù)遷移模塊 403,其中子庫(kù)存402,用于儲(chǔ)用戶數(shù)據(jù);在圖4中示意性地畫(huà)出了三個(gè)子庫(kù)。檢索庫(kù)401,用于存儲(chǔ)用戶標(biāo)識(shí)、用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系以及鎖標(biāo)志之間的對(duì)應(yīng)關(guān)系;數(shù)據(jù)遷移模塊403,用于根據(jù)指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù)401,獲得該指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,并將與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效;根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù),并將所獲取的數(shù)據(jù)寫(xiě)入目標(biāo)子庫(kù)中;如果寫(xiě)入成功,則將檢索庫(kù)中的與該指定用戶的標(biāo)識(shí)對(duì)應(yīng)的用戶數(shù)據(jù)在子庫(kù)中的位置信息,修改為所寫(xiě)入的目標(biāo)子庫(kù)中的位置信息,并將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效;如果寫(xiě)入失敗,則將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效,并刪除已寫(xiě)入目標(biāo)子庫(kù)中的該指定用戶的數(shù)據(jù)。在圖4中,所述數(shù)據(jù)遷移模塊403,在將所獲取的數(shù)據(jù)成功寫(xiě)入目標(biāo)子庫(kù)時(shí),進(jìn)一步用于刪除原子庫(kù)中的該指定用戶的數(shù)據(jù)。圖4所示的分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)還包括數(shù)據(jù)訪問(wèn)模塊404 ;所述數(shù)據(jù)訪問(wèn)模塊404,用于根據(jù)指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息,并判斷與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志是否為有效;如果為有效,則根據(jù)該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息,只對(duì)該指定用戶的數(shù)據(jù)進(jìn)行讀訪問(wèn)操作,而不能對(duì)該指定用戶的數(shù)據(jù)進(jìn)行更新操作。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)數(shù)據(jù)訪問(wèn)模塊根據(jù)指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù) 401,獲得該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息后,緩存該位置信息,并根據(jù)所緩存的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù)時(shí)所述數(shù)據(jù)遷移模塊403,進(jìn)一步用于在根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù)之前,向數(shù)據(jù)訪問(wèn)模塊404發(fā)送指定用戶的數(shù)據(jù)將要遷移的第一通知消息;如果寫(xiě)入成功,則向數(shù)據(jù)訪問(wèn)模塊404發(fā)送指定用戶的數(shù)據(jù)已遷移成功的第二通知消息,該第二通知消息中包含所述指定用戶的數(shù)據(jù)在目標(biāo)庫(kù)中的位置信息;如果寫(xiě)入失敗,則向數(shù)據(jù)訪問(wèn)模塊404發(fā)送指定用戶的數(shù)據(jù)遷移失敗的第三通知消息;數(shù)據(jù)訪問(wèn)模塊404,用于在接收到第一通知消息后,只對(duì)該指定用戶的數(shù)據(jù)進(jìn)行讀訪問(wèn)操作,而不對(duì)該指定用戶的數(shù)據(jù)進(jìn)行更新操作;在接收到第二通知消息后,用第二通知消息中的位置信息更新所緩存的位置信息,并根據(jù)更新后的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù);在接收到第三通知消息后,仍根據(jù)所緩存的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù)。在圖4所示的分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)的所述檢索庫(kù)401中,根據(jù)對(duì)用戶標(biāo)識(shí)進(jìn)行取模的算法,或根據(jù)對(duì)用戶標(biāo)識(shí)進(jìn)行哈希取模的算法,建立了用戶標(biāo)識(shí)與用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系。由上述可見(jiàn),根據(jù)所述指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,并將與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效;根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù),并將所獲取的數(shù)據(jù)寫(xiě)入目標(biāo)子庫(kù)中;如果寫(xiě)入成功,則將檢索庫(kù)中的與該指定用戶的標(biāo)識(shí)對(duì)應(yīng)的用戶數(shù)據(jù)在子庫(kù)中的位置信息,修改為所寫(xiě)入的目標(biāo)子庫(kù)中的位置信息,并將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效;如果寫(xiě)入失敗,則將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo) 志設(shè)置為無(wú)效,并刪除已寫(xiě)入目標(biāo)子庫(kù)中的該指定用戶的數(shù)據(jù)的技術(shù)方案,由于在數(shù)據(jù)遷移的過(guò)程中對(duì)用戶數(shù)據(jù)在子庫(kù)中的位置信息的修改機(jī)制,以及鎖標(biāo)志的設(shè)定機(jī)制,使得能夠保證用戶數(shù)據(jù)的可用性和一致性,并且不中斷用戶的業(yè)務(wù),使得用戶無(wú)感知,提高了用戶體驗(yàn)。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替 換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移方法,所述分布式數(shù)據(jù)庫(kù)由一個(gè)檢索庫(kù)和多個(gè)子庫(kù)組成,子庫(kù)存儲(chǔ)用戶數(shù)據(jù),檢索庫(kù)存儲(chǔ)用戶標(biāo)識(shí)和用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系,其特征在于,檢索庫(kù)中還存儲(chǔ)與用戶標(biāo)識(shí)對(duì)應(yīng)的鎖標(biāo)志,則將指定用戶的數(shù)據(jù)從原子庫(kù)遷移到目標(biāo)子庫(kù)的方法包括根據(jù)所述指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,并將與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效;根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù),并將所獲取的數(shù)據(jù)寫(xiě)入目標(biāo)子庫(kù)中;如果寫(xiě)入成功,則將檢索庫(kù)中的與該指定用戶的標(biāo)識(shí)對(duì)應(yīng)的用戶數(shù)據(jù)在子庫(kù)中的位置信息,修改為所寫(xiě)入的目標(biāo)子庫(kù)中的位置信息,并將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效;如果寫(xiě)入失敗,則將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效,并刪除已寫(xiě)入目標(biāo)子庫(kù)中的該指定用戶的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,如果寫(xiě)入成功,該方法進(jìn)一步包括刪除原子庫(kù)中的該指定用戶的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,該方法進(jìn)一步包括當(dāng)有應(yīng)用需要訪問(wèn)指定用戶的數(shù)據(jù)時(shí),根據(jù)所述指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息,并判斷與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志是否為有效;如果為有效,則根據(jù)該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息,只對(duì)該指定用戶的數(shù)據(jù)進(jìn)行讀訪問(wèn)操作,而不能對(duì)該指定用戶的數(shù)據(jù)進(jìn)行更新操作。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,當(dāng)應(yīng)用根據(jù)所述指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息后,緩存該位置信息,并根據(jù)所緩存的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù)的情況下,該方法進(jìn)一步包括在根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù)之前,向已在原子庫(kù)訪問(wèn)所述指定用戶的數(shù)據(jù)的應(yīng)用發(fā)送指定用戶的數(shù)據(jù)將要遷移的第一通知消息;所述應(yīng)用接收到第一通知消息后,只對(duì)該指定用戶的數(shù)據(jù)進(jìn)行讀訪問(wèn)操作,而不對(duì)該指定用戶的數(shù)據(jù)進(jìn)行更新操作;如果寫(xiě)入成功,則向所述應(yīng)用發(fā)送指定用戶的數(shù)據(jù)已遷移成功的第二通知消息,該第二通知消息中包含所述指定用戶的數(shù)據(jù)在目標(biāo)庫(kù)中的位置信息;所述應(yīng)用接收到第二通知消息后,用第二通知消息中的位置信息更新所緩存的位置信息,并根據(jù)更新后的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù);如果寫(xiě)入失敗,則向所述應(yīng)用發(fā)送指定用戶的數(shù)據(jù)遷移失敗的第三通知消息;所述應(yīng)用接收到第三通知消息后,仍根據(jù)所緩存的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述檢索庫(kù)中,根據(jù)對(duì)用戶標(biāo)識(shí)進(jìn)行取模的算法,或根據(jù)對(duì)用戶標(biāo)識(shí)進(jìn)行哈希取模的算法,建立用戶標(biāo)識(shí)與用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系。
6.一種分布式數(shù)據(jù)庫(kù)遷移系統(tǒng),其特征在于,該分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)包括一個(gè)檢索庫(kù)、多個(gè)子庫(kù)和一個(gè)數(shù)據(jù)遷移模塊,其中子庫(kù)存,用于儲(chǔ)用戶數(shù)據(jù);檢索庫(kù),用于存儲(chǔ)用戶標(biāo)識(shí)、用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系以及鎖標(biāo)志之間的對(duì)應(yīng)關(guān)系;數(shù)據(jù)遷移模塊,用于根據(jù)指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,并將與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效;根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù),并將所獲取的數(shù)據(jù)寫(xiě)入目標(biāo)子庫(kù)中;如果寫(xiě)入成功,則將檢索庫(kù)中的與該指定用戶的標(biāo)識(shí)對(duì)應(yīng)的用戶數(shù)據(jù)在子庫(kù)中的位置信息,修改為所寫(xiě)入的目標(biāo)子庫(kù)中的位置信息,并將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效;如果寫(xiě)入失敗,則將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效,并刪除已寫(xiě)入目標(biāo)子庫(kù)中的該指定用戶的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的分布式數(shù)據(jù)庫(kù)遷移系統(tǒng),其特征在于,所述數(shù)據(jù)遷移模塊,在將所獲取的數(shù)據(jù)成功寫(xiě)入目標(biāo)子庫(kù)時(shí),進(jìn)一步用于刪除原子庫(kù)中的該指定用戶的數(shù)據(jù)。
8.根據(jù)權(quán)利要求6或7所述的分布式數(shù)據(jù)庫(kù)遷移系統(tǒng),其特征在于,該分布式數(shù)據(jù)庫(kù)進(jìn)一步包括數(shù)據(jù)訪問(wèn)模塊;所述數(shù)據(jù)訪問(wèn)模塊,用于根據(jù)指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息,并判斷與該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志是否為有效;如果為有效,則根據(jù)該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息,只對(duì)該指定用戶的數(shù)據(jù)進(jìn)行讀訪問(wèn)操作,而不能對(duì)該指定用戶的數(shù)據(jù)進(jìn)行更新操作。
9.根據(jù)權(quán)利要求6或7所述的分布式數(shù)據(jù)庫(kù)遷移系統(tǒng),其特征在于,該分布式數(shù)據(jù)庫(kù)進(jìn)一步包括數(shù)據(jù)訪問(wèn)模塊;所述數(shù)據(jù)訪問(wèn)模塊,用于根據(jù)指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)在子庫(kù)中的位置信息后,緩存該位置信息,并根據(jù)所緩存的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù);所述數(shù)據(jù)遷移模塊,進(jìn)一步用于在根據(jù)所獲取的指定用戶數(shù)據(jù)在原子庫(kù)中的位置信息,獲取指定用戶的數(shù)據(jù)之前,向數(shù)據(jù)訪問(wèn)模塊發(fā)送指定用戶的數(shù)據(jù)將要遷移的第一通知消息;如果寫(xiě)入成功,則向數(shù)據(jù)訪問(wèn)模塊發(fā)送指定用戶的數(shù)據(jù)已遷移成功的第二通知消息, 該第二通知消息中包含所述指定用戶的數(shù)據(jù)在目標(biāo)庫(kù)中的位置信息;如果寫(xiě)入失敗,則向數(shù)據(jù)訪問(wèn)模塊發(fā)送指定用戶的數(shù)據(jù)遷移失敗的第三通知消息;數(shù)據(jù)訪問(wèn)模塊,用于在接收到第一通知消息后,只對(duì)該指定用戶的數(shù)據(jù)進(jìn)行讀訪問(wèn)操作,而不對(duì)該指定用戶的數(shù)據(jù)進(jìn)行更新操作;在接收到第二通知消息后,用第二通知消息中的位置信息更新所緩存的位置信息,并根據(jù)更新后的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù); 在接收到第三通知消息后,仍根據(jù)所緩存的位置信息訪問(wèn)所述指定用戶的數(shù)據(jù)。
10.根據(jù)權(quán)利要求6所述的分布式數(shù)據(jù)庫(kù)遷移系統(tǒng),其特征在于,在所述檢索庫(kù)中,根據(jù)對(duì)用戶標(biāo)識(shí)進(jìn)行取模的算法,或根據(jù)對(duì)用戶標(biāo)識(shí)進(jìn)行哈希取模的算法,建立了用戶標(biāo)識(shí)與用戶數(shù)據(jù)在子庫(kù)中的位置信息之間的對(duì)應(yīng)關(guān)系。
全文摘要
本發(fā)明公開(kāi)了一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移方法和一種分布式數(shù)據(jù)庫(kù)遷移系統(tǒng)。所述方法包括根據(jù)指定用戶的用戶標(biāo)識(shí)查詢檢索庫(kù),獲得該指定用戶數(shù)據(jù)的位置信息,并將對(duì)應(yīng)的鎖標(biāo)志設(shè)置為有效;根據(jù)所獲取的位置信息,獲取指定用戶的數(shù)據(jù),并寫(xiě)入目標(biāo)子庫(kù)中;如果寫(xiě)入成功,則將檢索庫(kù)中的與該指定用戶的標(biāo)識(shí)對(duì)應(yīng)的用戶數(shù)據(jù)在子庫(kù)中的位置信息,修改為所寫(xiě)入的目標(biāo)子庫(kù)中的位置信息,并將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效;如果寫(xiě)入失敗,則將該指定用戶的用戶標(biāo)識(shí)所對(duì)應(yīng)的鎖標(biāo)志設(shè)置為無(wú)效,并刪除已寫(xiě)入目標(biāo)子庫(kù)中的該指定用戶的數(shù)據(jù)。本發(fā)明的技術(shù)方案能夠保證用戶數(shù)據(jù)遷移過(guò)程中的可用性和一致性,并且不中斷用戶的業(yè)務(wù)。
文檔編號(hào)G06F17/30GK102331993SQ20111017154
公開(kāi)日2012年1月25日 申請(qǐng)日期2011年6月23日 優(yōu)先權(quán)日2011年6月23日
發(fā)明者李春雷, 高磊 申請(qǐng)人:北京新媒傳信科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1