專利名稱:數(shù)據(jù)訪問方法、裝置與分布式數(shù)據(jù)庫(kù)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)訪問方法、一種數(shù)據(jù)訪問裝置和一種分布式數(shù)據(jù)庫(kù)系統(tǒng)。
背景技術(shù):
在互聯(lián)網(wǎng)的技術(shù)應(yīng)用中,數(shù)據(jù)庫(kù)服務(wù)占據(jù)了非常重要的地位。而隨著技術(shù)的發(fā)展,互聯(lián)網(wǎng)的后臺(tái)服務(wù)需要數(shù)據(jù)庫(kù)擁有更快的響應(yīng)速度,在這種需求下,催生了內(nèi)存數(shù)據(jù)庫(kù)的出現(xiàn)。內(nèi)存數(shù)據(jù)庫(kù)和傳統(tǒng)的數(shù)據(jù)庫(kù)不同,內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)都保存在內(nèi)存中。由于網(wǎng)絡(luò)服務(wù)的數(shù)據(jù)可能非常龐大,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器無(wú)法在單臺(tái)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器上加載所有的數(shù)據(jù),這就需要對(duì)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行分布式的管理。一種分布式內(nèi)存服務(wù)器系統(tǒng)管理的實(shí)現(xiàn)方案如下,包括內(nèi)存數(shù)據(jù)庫(kù)從接口機(jī)查詢得到自己負(fù)責(zé)的數(shù)據(jù)庫(kù)表的信息,然后從對(duì)應(yīng)的真實(shí)數(shù)據(jù)庫(kù)中讀入該數(shù)據(jù)庫(kù)表中的數(shù)據(jù);當(dāng)接口機(jī)在接收到訪問客戶端的SQL (Structured Query Language,結(jié)構(gòu)化查詢語(yǔ)言)請(qǐng)求后,根據(jù)所述SQL請(qǐng)求中的數(shù)據(jù)庫(kù)表及所述接口機(jī)存儲(chǔ)的真實(shí)數(shù)據(jù)庫(kù)中各個(gè)數(shù)據(jù)庫(kù)表和內(nèi)存數(shù)據(jù)庫(kù)的對(duì)應(yīng)關(guān)系,將所述SQL請(qǐng)求分發(fā)到相應(yīng)的內(nèi)存數(shù)據(jù)庫(kù)中;所述內(nèi)存數(shù)據(jù)庫(kù)根據(jù)接口機(jī)分發(fā)得到的SQL請(qǐng)求,對(duì)內(nèi)存數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢或非查詢操作。當(dāng)對(duì)內(nèi)存數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行了非查詢操作時(shí),內(nèi)存數(shù)據(jù)庫(kù)將該非查詢操作所操作的數(shù)據(jù)寫入預(yù)定的文件中,并通過該預(yù)定的文件,將非查詢操作的操作結(jié)果同步到真實(shí)數(shù)據(jù)庫(kù)中。上述實(shí)現(xiàn)方案在數(shù)據(jù)庫(kù)服務(wù)器故障時(shí),雖然能夠在一定程度上可以通過預(yù)定的文件保障數(shù)據(jù)的可恢復(fù)性,但是,一方面,故障數(shù)據(jù)庫(kù)服務(wù)器在數(shù)據(jù)恢復(fù)時(shí),需要先讀取預(yù)定文件的內(nèi)容,再進(jìn)行數(shù)據(jù)恢復(fù),導(dǎo)致數(shù)據(jù)恢復(fù)不夠及時(shí);另一方面,若該分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)需要擴(kuò)容時(shí),則需要重建該分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng),可見,該分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)的可擴(kuò)容性較差。因此,如何保證分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)中數(shù)據(jù)的可恢復(fù)性以及分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)的可擴(kuò)容性,成為亟待解決的問題。
發(fā)明內(nèi)容
本發(fā)明提供了一種數(shù)據(jù)訪問方法、一種數(shù)據(jù)訪問裝置和一種分布式數(shù)據(jù)庫(kù)系統(tǒng),以解決現(xiàn)有分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)中數(shù)據(jù)的可恢復(fù)性差以及分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)的可擴(kuò)容性差的問題。為了解決上述問題,本發(fā)明公開了一種數(shù)據(jù)訪問方法,包括當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移;根據(jù)所述數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存所述第二對(duì)應(yīng)關(guān)系,以及所述數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系,其中,所述第一對(duì)應(yīng)關(guān)系用于指示所述數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,所述第二對(duì)應(yīng)關(guān)系用于指示根據(jù)所述數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系;在進(jìn)行所述數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求;根據(jù)所述數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系和所述第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的所述服務(wù)器上的所述待訪問的數(shù)據(jù)進(jìn)行訪問。為了解決上述問題,本發(fā)明還公開了數(shù)據(jù)訪問裝置,包括遷移模塊,用于當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移;存儲(chǔ)模塊,用于根據(jù)所述數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存所述第二對(duì)應(yīng)關(guān)系,以及所述數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系,其中 ,所述第一對(duì)應(yīng)關(guān)系用于指示所述數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,所述第二對(duì)應(yīng)關(guān)系用于指示根據(jù)所述數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系;訪問模塊,用于在進(jìn)行所述數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求;根據(jù)所述數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系和所述第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的所述服務(wù)器上的所述待訪問的數(shù)據(jù)進(jìn)行訪問。為了解決上述問題,本發(fā)明還公開了一種分布式數(shù)據(jù)庫(kù)系統(tǒng),包括調(diào)度服務(wù)器、磁盤數(shù)據(jù)庫(kù)服務(wù)器集群和內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群;其中,所述調(diào)度服務(wù)器包括遷移模塊,用于當(dāng)接收到所述添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或所述刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移,其中,所述待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器為所述磁盤數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器,所述數(shù)據(jù)遷移為所述磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移;或者,所述待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器為所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器,所述數(shù)據(jù)遷移為所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移;存儲(chǔ)模塊,用于根據(jù)所述數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存所述第二對(duì)應(yīng)關(guān)系,以及所述數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系,其中,所述第一對(duì)應(yīng)關(guān)系用于指示所述數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,所述第二對(duì)應(yīng)關(guān)系用于指示根據(jù)所述數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系;訪問模塊,用于在進(jìn)行所述數(shù)據(jù)遷移的過程中,接收所述數(shù)據(jù)訪問請(qǐng)求;根據(jù)所述數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系和所述第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的所述服務(wù)器上的所述待訪問的數(shù)據(jù)進(jìn)行訪問。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)在分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)中,當(dāng)數(shù)據(jù)庫(kù)服務(wù)器故障或刪除時(shí),相關(guān)調(diào)度或管理服務(wù)器會(huì)收到刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求;當(dāng)系統(tǒng)擴(kuò)容增加數(shù)據(jù)庫(kù)服務(wù)器時(shí),相關(guān)調(diào)度或管理服務(wù)器會(huì)收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求。在這種情況下,相關(guān)調(diào)度或管理服務(wù)器會(huì)及時(shí)進(jìn)行數(shù)據(jù)遷移,如將待刪除的數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)遷移到其它服務(wù)器上,或者,將其它數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)遷移到新添加的數(shù)據(jù)庫(kù)服務(wù)器上。在進(jìn)行數(shù)據(jù)遷移的同時(shí),相關(guān)調(diào)度或管理服務(wù)器可以并行接收數(shù)據(jù)訪問請(qǐng)求,并根據(jù)原數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系即第一對(duì)應(yīng)關(guān)系,和新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系即第二對(duì)應(yīng)關(guān)系,確定數(shù)據(jù)所在的服務(wù)器,進(jìn)行相關(guān)的數(shù)據(jù)訪問處理。使用上述方案,一方面,數(shù)據(jù)遷移與數(shù)據(jù)訪問可以并行執(zhí)行,數(shù)據(jù)恢復(fù)及時(shí)且不會(huì)影響數(shù)據(jù)訪問速度;另一方面,因同時(shí)保存了第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,使得數(shù)據(jù)訪問能夠正常進(jìn)行,不必等到數(shù)據(jù)完全恢復(fù)后再進(jìn)行訪問,實(shí)現(xiàn)了及時(shí)、正確的數(shù)據(jù)訪問;再一方面,當(dāng)系統(tǒng)擴(kuò)容增加數(shù)據(jù)庫(kù)服務(wù)器時(shí),能夠及時(shí)方便地將已經(jīng)存在的其它數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)遷移到新添加的服務(wù)器,無(wú)須進(jìn)行大規(guī)模的系統(tǒng)重建和改動(dòng),提高了系統(tǒng)的可擴(kuò)容性,實(shí)現(xiàn)了靈活方便的系統(tǒng)擴(kuò)容。
圖I是根據(jù)本發(fā)明實(shí)施例一的一種數(shù)據(jù)訪問方法的步驟流程圖;圖2是根據(jù)本發(fā)明實(shí)施例二的一種數(shù)據(jù)訪問方法的步驟流程圖;圖3是根據(jù)本發(fā)明實(shí)施例三的一種數(shù)據(jù)訪問方法中的分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)的結(jié)構(gòu)示意圖;圖4是圖3所示分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)中的讀取層數(shù)據(jù)庫(kù)集群的結(jié)構(gòu)示意圖;圖5是根據(jù)本發(fā)明實(shí)施例三的一種數(shù)據(jù)訪問方法中的調(diào)度服務(wù)器的處理流程圖;
圖6是根據(jù)本發(fā)明實(shí)施例三的一種數(shù)據(jù)訪問方法中的寫入層數(shù)據(jù)庫(kù)集群的數(shù)據(jù)遷移流程圖;圖7是根據(jù)本發(fā)明實(shí)施例三的一種數(shù)據(jù)訪問方法中的讀取層數(shù)據(jù)庫(kù)集群的數(shù)據(jù)遷移流程圖;圖8是根據(jù)本發(fā)明實(shí)施例四的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)框圖;圖9是根據(jù)本發(fā)明實(shí)施例五的一種分布式數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。實(shí)施例一參照?qǐng)DI,示出了根據(jù)本發(fā)明實(shí)施例一的一種數(shù)據(jù)訪問方法的步驟流程圖。本實(shí)施例的數(shù)據(jù)訪問方法包括以下步驟步驟S102 :調(diào)度服務(wù)器當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移。當(dāng)系統(tǒng)需要擴(kuò)容時(shí),會(huì)添加新的數(shù)據(jù)庫(kù)服務(wù)器,新添加的數(shù)據(jù)庫(kù)服務(wù)器可能是內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,也可能是磁盤數(shù)據(jù)庫(kù)服務(wù)器。新添加的數(shù)據(jù)庫(kù)服務(wù)器會(huì)向調(diào)度服務(wù)器發(fā)送添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,但不限于此,也可以是調(diào)度服務(wù)器通過監(jiān)控發(fā)現(xiàn)新添加了數(shù)據(jù)庫(kù)服務(wù)器,生成添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求。當(dāng)數(shù)據(jù)庫(kù)服務(wù)器故障或者需要?jiǎng)h減時(shí),調(diào)度服務(wù)器會(huì)收到刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,同樣,待刪除的數(shù)據(jù)庫(kù)服務(wù)器可能是內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,也可能是磁盤數(shù)據(jù)庫(kù)服務(wù)器,刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求可能是調(diào)用服務(wù)器通過監(jiān)控生成,也可能是待刪除的數(shù)據(jù)庫(kù)服務(wù)器發(fā)送。數(shù)據(jù)遷移可以是已存在的數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)向新添加的數(shù)據(jù)庫(kù)服務(wù)器遷移數(shù)據(jù),也可以是待刪除的數(shù)據(jù)庫(kù)服務(wù)器向其它數(shù)據(jù)庫(kù)服務(wù)器遷移數(shù)據(jù)。另外,本實(shí)施例的調(diào)度服務(wù)器僅為示例性說明,其它具有管理和控制功能的設(shè)備也同樣適用。調(diào)度服務(wù)器可以為一臺(tái),既負(fù)責(zé)磁盤數(shù)據(jù)庫(kù)服務(wù)器訪問又負(fù)責(zé)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器訪問;也可以為多臺(tái),分別負(fù)責(zé)不同的功能,如一臺(tái)負(fù)責(zé)磁盤數(shù)據(jù)庫(kù)服務(wù)器訪問,一臺(tái)負(fù)責(zé)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器訪問,一臺(tái)負(fù)責(zé)磁盤數(shù)據(jù)庫(kù)服務(wù)器和內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)同步等,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際情況適當(dāng)設(shè)置,本申請(qǐng)對(duì)此不作限制。步驟S104 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存第二對(duì)應(yīng)關(guān)系,以及數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系。
其中,第一對(duì)應(yīng)關(guān)系用于指示數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,第二對(duì)應(yīng)關(guān)系用于指示根據(jù)數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系。步驟S106 :調(diào)度服務(wù)器在進(jìn)行數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求。其中,數(shù)據(jù)訪問請(qǐng)求可以是數(shù)據(jù)寫入請(qǐng)求,也可以是數(shù)據(jù)讀取請(qǐng)求,也可以是數(shù)據(jù)更新請(qǐng)求,還可以是數(shù)據(jù)同步請(qǐng)求等等。步驟S108 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的服務(wù)器上的待訪問的數(shù)據(jù)進(jìn)行訪問。因?yàn)檫M(jìn)行了數(shù)據(jù)遷移,因此在數(shù)據(jù)遷移過程中對(duì)數(shù)據(jù)進(jìn)行訪問時(shí),需要先確定數(shù)據(jù)所在的服務(wù)器,進(jìn)而訪問數(shù)據(jù)。通過本實(shí)施例,在分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)中,當(dāng)數(shù)據(jù)庫(kù)服務(wù)器故障或刪除·時(shí),相關(guān)調(diào)度或管理服務(wù)器會(huì)收到刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求;當(dāng)系統(tǒng)擴(kuò)容增加數(shù)據(jù)庫(kù)服務(wù)器時(shí),相關(guān)調(diào)度或管理服務(wù)器會(huì)收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求。在這種情況下,相關(guān)調(diào)度或管理服務(wù)器會(huì)及時(shí)進(jìn)行數(shù)據(jù)遷移,如將待刪除的數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)遷移到其它服務(wù)器上,或者,將其它數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)遷移到新添加的數(shù)據(jù)庫(kù)服務(wù)器上。在進(jìn)行數(shù)據(jù)遷移的同時(shí),相關(guān)調(diào)度或管理服務(wù)器可以并行接收數(shù)據(jù)訪問請(qǐng)求,并根據(jù)原數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系即第一對(duì)應(yīng)關(guān)系,和新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系即第二對(duì)應(yīng)關(guān)系,確定數(shù)據(jù)所在的服務(wù)器,進(jìn)行相關(guān)的數(shù)據(jù)訪問處理。使用本實(shí)施例的方案,一方面,數(shù)據(jù)遷移與數(shù)據(jù)訪問可以并行執(zhí)行,數(shù)據(jù)恢復(fù)及時(shí)且不會(huì)影響數(shù)據(jù)訪問速度;另一方面,因同時(shí)保存了第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,使得數(shù)據(jù)訪問能夠正常進(jìn)行,不必等到數(shù)據(jù)完全恢復(fù)后再進(jìn)行訪問,實(shí)現(xiàn)了及時(shí)、正確的數(shù)據(jù)訪問;再一方面,當(dāng)系統(tǒng)擴(kuò)容增加數(shù)據(jù)庫(kù)服務(wù)器時(shí),能夠及時(shí)方便地將已經(jīng)存在的其它數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)遷移到新添加的服務(wù)器,無(wú)須進(jìn)行大規(guī)模的系統(tǒng)重建和改動(dòng),提高了系統(tǒng)的可擴(kuò)容性,實(shí)現(xiàn)了靈活方便的系統(tǒng)擴(kuò)容。實(shí)施例二參照?qǐng)D2,示出了根據(jù)本發(fā)明實(shí)施例二的一種數(shù)據(jù)訪問方法的步驟流程圖。本實(shí)施例中,設(shè)置了調(diào)度服務(wù)器、包括至少一臺(tái)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群、包括至少一臺(tái)磁盤數(shù)據(jù)庫(kù)服務(wù)器的磁盤數(shù)據(jù)庫(kù)服務(wù)器集群,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器數(shù)量可以和磁盤數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器數(shù)量相同或不同。其中,調(diào)度服務(wù)器實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群和磁盤數(shù)據(jù)庫(kù)服務(wù)器集群的調(diào)度、訪問、同步和管理等功能,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群實(shí)現(xiàn)數(shù)據(jù)讀取,磁盤數(shù)據(jù)庫(kù)服務(wù)器集群實(shí)現(xiàn)數(shù)據(jù)寫入,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群通過數(shù)據(jù)同步實(shí)現(xiàn)與磁盤數(shù)據(jù)庫(kù)服務(wù)器集群的數(shù)據(jù)一致。優(yōu)選地,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群中的部分或全部?jī)?nèi)存數(shù)據(jù)庫(kù)服務(wù)器可以通過虛擬主機(jī)技術(shù),將該部分或全部?jī)?nèi)存數(shù)據(jù)庫(kù)服務(wù)器中的每個(gè)服務(wù)器都虛擬為多個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn),即,從邏輯上看,一臺(tái)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器可以表現(xiàn)為多臺(tái)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,但從物理上看,該多臺(tái)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器是同一臺(tái)物理服務(wù)器。通過虛擬化內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,尤其是大容量的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,既可以方便對(duì)數(shù)據(jù)的組織和管理,也可以保證服務(wù)器的負(fù)載均衡。此夕卜,優(yōu)選地,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器可以包括主內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器和從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,其中,主內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于接收磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)讀取。通過對(duì)主人內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行功能劃分,能夠有效保證連接和數(shù)據(jù)訪問效率,以及數(shù)據(jù)安全。
基于以上設(shè)置,本實(shí)施例的數(shù)據(jù)訪問方法包括以下步驟步驟S202 :將內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群中的一個(gè)或多個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器中的每個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器虛擬為多個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)。通過將一個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器虛擬為多個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn),以更為有效地實(shí)現(xiàn)負(fù)載均衡和數(shù)據(jù)的組織管理。后續(xù)的數(shù)據(jù)遷移和訪問可以將虛擬的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)當(dāng)作真實(shí)的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移和訪問。步驟S204 :調(diào)度服務(wù)器當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移。添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求包括添加內(nèi)存或磁 盤數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求包括刪除內(nèi)存或磁盤數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求。相對(duì)應(yīng)地,待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器可以是內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移;也可以是磁盤數(shù)據(jù)庫(kù)服務(wù)器,進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移。也即,當(dāng)添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求指示添加內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,或者,刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求指示刪除內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移包括對(duì)待添加的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器或待刪除的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移,其中,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)讀取,以及接收磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;當(dāng)添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求指示添加磁盤數(shù)據(jù)庫(kù)服務(wù)器,或者,刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求指示刪除磁盤數(shù)據(jù)庫(kù)服務(wù)器時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移包括對(duì)待添加的磁盤數(shù)據(jù)庫(kù)服務(wù)器或待刪除的磁盤數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移,其中,磁盤數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)寫入,以及將磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)發(fā)送到內(nèi)存數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)同步。步驟S206 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,并保存第二對(duì)應(yīng)關(guān)系,以及數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系。其中,第一對(duì)應(yīng)關(guān)系用于指示數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,第二對(duì)應(yīng)關(guān)系用于指示根據(jù)數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系。數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系可以由本領(lǐng)域技術(shù)人員根據(jù)實(shí)際需要采用適當(dāng)?shù)姆绞缴?,如采用hash (哈希)函數(shù)的方式生成。一個(gè)使用hash函數(shù)生成數(shù)據(jù)與服務(wù)器對(duì)應(yīng)關(guān)系的具體實(shí)例如下假如目前有三臺(tái)服務(wù)器(內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器和磁盤數(shù)據(jù)庫(kù)服務(wù)器均適用)A、B、C,三臺(tái)服務(wù)器均采用KV(key-value,鍵值)存儲(chǔ)。待存儲(chǔ)的數(shù)據(jù)的key使用較為常見的BKDR哈希算法重新映射,生成存儲(chǔ)在數(shù)據(jù)庫(kù)中的key,該key的范圍為I到4294967296??紤]到當(dāng)前有三臺(tái)服務(wù)器,因此將上述key的區(qū)間平均劃分為三份,分別為A上存儲(chǔ)的key值范圍為[1,1431655766],B上存儲(chǔ)的key值范圍為[1431655767,2863311532],C上存儲(chǔ)的key值范圍為[2863311533,4294967296]。假設(shè)數(shù)據(jù)a的key為500,則數(shù)據(jù)a存儲(chǔ)在A上,數(shù)據(jù)b為1431655000,也存儲(chǔ)在數(shù)據(jù)庫(kù)A上。此時(shí),調(diào)度服務(wù)器存儲(chǔ)a與A的對(duì)應(yīng)關(guān)系,和b與A的對(duì)應(yīng)關(guān)系。當(dāng)增加了一臺(tái)服務(wù)器D的時(shí)候,上述的key的區(qū)間需要均等的劃分為四份,此時(shí),A上存儲(chǔ)的key值范圍為[1,1073741824],B上存儲(chǔ)的key值范圍為[1073741825,2147483648],C上存儲(chǔ)的key值范圍為[2147483649,3221225472],D上存儲(chǔ)的key值范圍為[3221225473,4294967296]。因此,a不需要遷移,b需要遷移至B服務(wù)器。也就是說在只有三臺(tái)服務(wù)器的時(shí)候,如果key的取值在[1,1431655765]時(shí),該數(shù)據(jù)存儲(chǔ)在A上;當(dāng)有四臺(tái)服務(wù)器時(shí),如果key取值在[1,1073741825]之間時(shí),該數(shù)據(jù)存儲(chǔ)在A上,因此b需要遷移。在數(shù)據(jù)遷移之前以及正在執(zhí)行數(shù)據(jù)遷移工作時(shí),調(diào)度服務(wù)器需要存儲(chǔ)數(shù)據(jù)和新舊服務(wù)器之間的對(duì)應(yīng)關(guān)系,以便在數(shù)據(jù)遷移進(jìn)行中的時(shí)候正常執(zhí)行查詢和寫入操作。上例中,在數(shù)據(jù)遷移之前以及正在執(zhí)行數(shù)據(jù)遷移工作時(shí),調(diào)度服務(wù)器上不僅存儲(chǔ)有原來的a與A的對(duì)應(yīng)關(guān)系,和b與A的對(duì)應(yīng)關(guān)系,并且重新存儲(chǔ)了 a與A的對(duì)應(yīng)關(guān)系,和b與B的對(duì)應(yīng)關(guān)系。當(dāng)數(shù)據(jù)遷移完成之后,調(diào)度服務(wù)器中只保存當(dāng)前的數(shù)據(jù)和服務(wù)器的對(duì)應(yīng)關(guān)系。數(shù)據(jù)遷移前,調(diào)度服務(wù)器中存儲(chǔ)有數(shù)據(jù)與服務(wù)器的第一對(duì)應(yīng)關(guān)系,如數(shù)據(jù)a存儲(chǔ)在A服務(wù)器上;數(shù)據(jù)遷移后,假如數(shù)據(jù)a遷移到了 B服務(wù)器上,則調(diào)度服務(wù)器也存儲(chǔ)該新的第二對(duì)應(yīng)關(guān)系。步驟S208 :調(diào)度服務(wù)器在進(jìn)行數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求。 本實(shí)施例中,針對(duì)不同的數(shù)據(jù)庫(kù)服務(wù)器集群,數(shù)據(jù)訪問請(qǐng)求也不同。如,對(duì)于內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器,可接受的數(shù)據(jù)訪問請(qǐng)求可以是數(shù)據(jù)讀取請(qǐng)求和/或數(shù)據(jù)同步請(qǐng)求,其中,數(shù)據(jù)同步請(qǐng)求又可以分為數(shù)據(jù)插入請(qǐng)求和數(shù)據(jù)更新請(qǐng)求。數(shù)據(jù)讀取請(qǐng)求用于請(qǐng)求讀取數(shù)據(jù),可以由客戶端發(fā)出;數(shù)據(jù)同步請(qǐng)求用于將磁盤數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)同步到內(nèi)存服務(wù)器中,可以由調(diào)度服務(wù)器或磁盤數(shù)據(jù)庫(kù)服務(wù)器發(fā)出。而對(duì)于磁盤數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器,可接受的數(shù)據(jù)訪問請(qǐng)求可以是數(shù)據(jù)寫入請(qǐng)求和/或數(shù)據(jù)更新請(qǐng)求,均可由客戶端發(fā)出,數(shù)據(jù)寫入請(qǐng)求用于請(qǐng)求向服務(wù)器的數(shù)據(jù)庫(kù)中寫入數(shù)據(jù),數(shù)據(jù)更新請(qǐng)求用于請(qǐng)求更新數(shù)據(jù)庫(kù)中已存在的數(shù)據(jù)。步驟S210 :調(diào)度服務(wù)器在進(jìn)行數(shù)據(jù)遷移的過程中,根據(jù)數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的服務(wù)器上的待訪問的數(shù)據(jù)進(jìn)行訪問。包括(I)在進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移的過程中步驟Al :調(diào)度服務(wù)器在進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收到數(shù)據(jù)訪問請(qǐng)求,包括數(shù)據(jù)讀取請(qǐng)求和/或數(shù)據(jù)同步請(qǐng)求。本實(shí)施例中,因采用了主從內(nèi)存服務(wù)器的方式,主從內(nèi)存服務(wù)器分管不同的功能,所以當(dāng)有數(shù)據(jù)讀取請(qǐng)求時(shí),可以交由從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器處理;當(dāng)有數(shù)據(jù)同步請(qǐng)求時(shí),可以交由主內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器處理;當(dāng)同時(shí)有數(shù)據(jù)讀取請(qǐng)求和數(shù)據(jù)同步請(qǐng)求時(shí),可以由主、從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器并行或順序進(jìn)行處理。另外,主從數(shù)據(jù)庫(kù)服務(wù)器的功能劃分僅為示例性說明,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際需要適當(dāng)設(shè)置或增減功能。步驟BI :調(diào)度服務(wù)器判斷數(shù)據(jù)訪問請(qǐng)求的類型,若為數(shù)據(jù)讀取請(qǐng)求,則執(zhí)行步驟Cl ;若為數(shù)據(jù)同步請(qǐng)求,則執(zhí)行步驟Dl。步驟Cl :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)讀取請(qǐng)求和存儲(chǔ)的第一對(duì)應(yīng)關(guān)系,查找待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到;若是,則根據(jù)查找結(jié)果確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,讀取待讀取的數(shù)據(jù);若否,則根據(jù)第二對(duì)應(yīng)關(guān)系查找并確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,從確定的內(nèi)存服務(wù)器中讀取待讀取的數(shù)據(jù),結(jié)束流程。需要說明的是,若根據(jù)第二對(duì)應(yīng)關(guān)系也無(wú)法查找到待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,則可以進(jìn)行錯(cuò)誤處理,如提示錯(cuò)誤可無(wú)法找到等,結(jié)束流程。
步驟Dl :調(diào)度服務(wù)器判斷數(shù)據(jù)同步請(qǐng)求的請(qǐng)求類型,若為數(shù)據(jù)插入請(qǐng)求,則執(zhí)行步驟El ;若為數(shù)據(jù)更新請(qǐng)求,則執(zhí)行步驟Fl。步驟El :調(diào)度服務(wù)器判斷數(shù)據(jù)同步請(qǐng)求為數(shù)據(jù)插入請(qǐng)求,根據(jù)第二對(duì)應(yīng)關(guān)系,確定待插入的數(shù)據(jù)應(yīng)在的內(nèi)存服務(wù)器,在內(nèi)存服務(wù)器中插入待插入的數(shù)據(jù)。即,直接將待插入數(shù)據(jù)插入第二對(duì)應(yīng)關(guān)系指示的新的服務(wù)器中。步驟Fl :調(diào)度服務(wù)器判斷數(shù)據(jù)同步請(qǐng)求為數(shù)據(jù)更新請(qǐng)求,根據(jù)第一對(duì)應(yīng)關(guān)系,查找待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到,若找到,則執(zhí)行步驟Gl ;若未找至IJ,則執(zhí)行步驟Hl。步驟Gl :調(diào)度服務(wù)器根據(jù)第二對(duì)應(yīng)關(guān)系,將待更新的數(shù)據(jù)遷移到新的內(nèi)存服務(wù)器 并根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù)。步驟Hl :調(diào)度服務(wù)器根據(jù)第二對(duì)應(yīng)關(guān)系查找并確定待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù)。(2)在進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移的過程中步驟A2 :調(diào)度服務(wù)器在進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收到數(shù)據(jù)訪問請(qǐng)求,包括數(shù)據(jù)寫入請(qǐng)求和/或數(shù)據(jù)更新請(qǐng)求。其中,當(dāng)同時(shí)接收到數(shù)據(jù)寫入請(qǐng)求和數(shù)據(jù)更新請(qǐng)求時(shí),數(shù)據(jù)寫入請(qǐng)求和數(shù)據(jù)更新請(qǐng)求可以并行或順序執(zhí)行。步驟B2 :調(diào)度服務(wù)器判斷數(shù)據(jù)訪問請(qǐng)求的類型,若為數(shù)據(jù)寫入請(qǐng)求,則執(zhí)行步驟C2 ;若為數(shù)據(jù)更新請(qǐng)求,則執(zhí)行步驟D2。步驟C2 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)寫入請(qǐng)求和存儲(chǔ)的第二對(duì)應(yīng)關(guān)系,確定待寫入的數(shù)據(jù)應(yīng)在的磁盤服務(wù)器,將待寫入的數(shù)據(jù)寫入磁盤服務(wù)器。S卩,若在數(shù)據(jù)遷移過程中,有數(shù)據(jù)需要寫入,則調(diào)度服務(wù)器將待寫入的數(shù)據(jù)寫入數(shù)據(jù)遷移后的新磁盤服務(wù)器。步驟D2 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)更新請(qǐng)求判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移,若否,執(zhí)行步驟E2 ;若是,執(zhí)行步驟F2。其中,可以通過以下方式判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移,包括調(diào)度服務(wù)器獲取數(shù)據(jù)更新請(qǐng)求中的待更新數(shù)據(jù);根據(jù)第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,分別獲取待更新數(shù)據(jù)所在的第一磁盤服務(wù)器和第二磁盤服務(wù)器;判斷第一磁盤服務(wù)器和第二磁盤服務(wù)器是否為相同的服務(wù)器,若是,則確定待更新的數(shù)據(jù)不需要進(jìn)行數(shù)據(jù)遷移;若否,則確定待更新的數(shù)據(jù)需要進(jìn)行數(shù)據(jù)遷移。例如,可以通過生成第一對(duì)應(yīng)關(guān)系的第一 hash函數(shù)計(jì)算待更新數(shù)據(jù)對(duì)應(yīng)的第一磁盤服務(wù)器,再通過生成第二對(duì)應(yīng)關(guān)系的第二 hash函數(shù)計(jì)算待更新數(shù)據(jù)對(duì)應(yīng)的第二磁盤服務(wù)器,若計(jì)算結(jié)果相同,即第一磁盤服務(wù)器和第二磁盤服務(wù)器為相同的服務(wù)器,則確定不需要進(jìn)行數(shù)據(jù)遷移;若計(jì)算結(jié)果不相同,即第一磁盤服務(wù)器和第二磁盤服務(wù)器為不相同的服務(wù)器,則確定需要進(jìn)行數(shù)據(jù)遷移。步驟E2 :調(diào)度服務(wù)器判斷待更新的數(shù)據(jù)不需要進(jìn)行數(shù)據(jù)遷移,則根據(jù)第一對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,并根據(jù)數(shù)據(jù)更新請(qǐng)求對(duì)磁盤服務(wù)器中的數(shù)據(jù)進(jìn)行更新,結(jié)束本次更新流程。步驟F2 :調(diào)度服務(wù)器判斷待更新的數(shù)據(jù)需要進(jìn)行數(shù)據(jù)遷移,則根據(jù)第二對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,判斷是否能在該磁盤服務(wù)器中查找到待更新的數(shù)據(jù),若能,則執(zhí)行步驟G2 ;若不能,則執(zhí)行步驟H2。步驟G2 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù)。步驟H2 :調(diào)度服務(wù)器根據(jù)第二對(duì)應(yīng)關(guān)系,將待更新的數(shù)據(jù)遷移到新的磁盤服務(wù)器中并根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù)。
通過本實(shí)施例,實(shí)現(xiàn)了分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)的高效組織和管理,能夠方便靈活地進(jìn)行服務(wù)器集群的擴(kuò)容和集群中服務(wù)器的刪減,并且能夠保證數(shù)據(jù)的及時(shí)同步和快速訪問。實(shí)施例三本實(shí)施例以一個(gè)分布式內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)為例,對(duì)本發(fā)明的數(shù)據(jù)訪問方法進(jìn)行說明。本實(shí)施例的分布式內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)如圖3所示,包括寫入層調(diào)度服務(wù)器、數(shù)據(jù)同步服務(wù)器、讀取層調(diào)度服務(wù)器、WDC (Writing-layer Database Cluster,寫入層數(shù)據(jù)庫(kù)集群)、和RDC (Reading-layer Database Cluster,讀取層數(shù)據(jù)庫(kù)集群)。其中,WDC為磁盤數(shù)據(jù)庫(kù)服務(wù)器集群,RDC為內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群。寫入層調(diào)度服務(wù)器、數(shù)據(jù)同步服務(wù)器和讀取層調(diào)度服務(wù)器在物理上屬于同一臺(tái)機(jī)器,但是在邏輯上將其劃分為三個(gè)邏輯節(jié)點(diǎn)。當(dāng)然,也可以是實(shí)際的三臺(tái)物理機(jī)器。其中,寫入層調(diào)度服務(wù)器的主要功能是對(duì)WDC進(jìn)行控制,更新WDC中服務(wù)器列表,分配數(shù)據(jù)訪問請(qǐng)求到相應(yīng)的服務(wù)器節(jié)點(diǎn)上。該調(diào)度服務(wù)器使用一致性hash算法獲取能夠執(zhí)行數(shù)據(jù)寫入服務(wù)的磁盤數(shù)據(jù)庫(kù)服務(wù)器。每當(dāng)有新的數(shù)據(jù)訪問請(qǐng)求(包括數(shù)據(jù)寫入請(qǐng)求和/或數(shù)據(jù)更新請(qǐng)求)進(jìn)入時(shí),該調(diào)度服務(wù)器根據(jù)hash算法獲取當(dāng)前應(yīng)該寫入數(shù)據(jù)的磁盤數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn),將數(shù)據(jù)寫入;當(dāng)WDC中的磁盤數(shù)據(jù)庫(kù)服務(wù)器發(fā)生故障或者需要?jiǎng)h減或者進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器擴(kuò)容時(shí),寫入層調(diào)度服務(wù)器會(huì)自動(dòng)生成新的一致性hash算法(一致性hash算法和服務(wù)器節(jié)點(diǎn)的數(shù)量相關(guān))。例如,使用簡(jiǎn)單的hash函數(shù),該函數(shù)使用如下規(guī)則key=Hash (value), key e [I, Range];n=Find(key) = [key*N/(Range)];其中,value為需要存儲(chǔ)的數(shù)據(jù),Range為key的取值上限,key為通過hash算法得到的值,N為存儲(chǔ)集群中服務(wù)器的臺(tái)數(shù),η為該數(shù)據(jù)應(yīng)該寫入的服務(wù)器編號(hào),并且,η使用了向下取整計(jì)算,以得到服務(wù)器的整數(shù)編號(hào)。那么,當(dāng)服務(wù)器的個(gè)數(shù)由于故障或者擴(kuò)容產(chǎn)生了變化,會(huì)實(shí)時(shí)的更新到計(jì)算公式中,因此計(jì)算得到的數(shù)據(jù)應(yīng)該存儲(chǔ)到哪臺(tái)服務(wù)器上的值也會(huì)改變,也即,服務(wù)器會(huì)自動(dòng)生成新的一致性hash算法。本實(shí)施例中,WDC可以采用持久化的KV (Key-Value,鍵值)存儲(chǔ)系統(tǒng),將數(shù)據(jù)存儲(chǔ)在硬盤中,保證數(shù)據(jù)的不易失性。但不限于此,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明了,其它存儲(chǔ)系統(tǒng)也同樣適用本發(fā)明的數(shù)據(jù)訪問方案。只有當(dāng)讀RDC失敗時(shí),讀取訪問請(qǐng)求才會(huì)訪問WDC讀取數(shù)據(jù)。數(shù)據(jù)同步服務(wù)器負(fù)責(zé)將WDC的數(shù)據(jù)同步到RDC中。讀取層調(diào)度服務(wù)器主要對(duì)RDC進(jìn)行控制,更新RDC的服務(wù)器列表,將數(shù)據(jù)訪問請(qǐng)求(包括數(shù)據(jù)讀取請(qǐng)求和/或數(shù)據(jù)同步請(qǐng)求)分配到相應(yīng)的服務(wù)器節(jié)點(diǎn)上。該調(diào)度服務(wù)器也使用一致性hash算法獲取讀取服務(wù)器節(jié)點(diǎn)。
本實(shí)施例的RDC采用內(nèi)存數(shù)據(jù)庫(kù),保證查詢的實(shí)時(shí)性。RDC只負(fù)責(zé)讀取并返回?cái)?shù)據(jù)給請(qǐng)求的服務(wù),其數(shù)據(jù)由WDC更新。RDC采用了主從同步方式,如圖4所示。圖4展示了RDC的總體框架,其內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群采用了主從同步的方式對(duì)數(shù)據(jù)進(jìn)行備份,預(yù)防單點(diǎn)故障。并且,主從同步服務(wù)器中的主服務(wù)器只負(fù)責(zé)同步寫操作(同步寫操作來自于WDC的同步數(shù)據(jù)),而從服務(wù)器負(fù)責(zé)讀操作。此外,RDC采用虛擬主機(jī)的技術(shù),在一臺(tái)物理數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)上掛載多個(gè)虛擬服務(wù)器節(jié)點(diǎn),在服務(wù)器節(jié)點(diǎn)數(shù)量較少的時(shí)候可以保證負(fù)載均衡?;谝陨辖Y(jié)構(gòu),本實(shí)施例分別從調(diào)度服務(wù)器整體調(diào)度和WDC及RDC的數(shù)據(jù)遷移方面對(duì)本發(fā)明的數(shù)據(jù)訪問方法進(jìn)行說明。以下,首先對(duì)調(diào)度服務(wù)器整體調(diào)度流程進(jìn)行說明。參照?qǐng)D5,示出了根據(jù)本實(shí)施例的一種數(shù)據(jù)訪問方法中的調(diào)度服務(wù)器的處理流程圖。 在該調(diào)度服務(wù)器的處理流程,用戶直接和調(diào)度服務(wù)器進(jìn)行交互,而非數(shù)據(jù)庫(kù)本身。調(diào)度服務(wù)器在物理上屬于同一個(gè)服務(wù)器節(jié)點(diǎn),但是在邏輯上可以分為寫入層調(diào)度器、讀取層調(diào)度器以及數(shù)據(jù)同步調(diào)度器。調(diào)度服務(wù)器根據(jù)數(shù)據(jù)訪問請(qǐng)求的種類,執(zhí)行查詢或者寫入操作,或者更新服務(wù)器的列表(服務(wù)器擴(kuò)容或者出現(xiàn)故障節(jié)點(diǎn))。其中,在處理添加和刪除服務(wù)器請(qǐng)求的時(shí)候,會(huì)在后臺(tái)調(diào)用數(shù)據(jù)庫(kù)遷移工作。該調(diào)度服務(wù)器的處理流程包括以下步驟步驟S302 :調(diào)度服務(wù)器接受數(shù)據(jù)訪問請(qǐng)求。本處理流程中,數(shù)據(jù)訪問請(qǐng)求包括數(shù)據(jù)讀取請(qǐng)求、數(shù)據(jù)寫入請(qǐng)求、添加/刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,以及無(wú)效請(qǐng)求(除數(shù)據(jù)讀取請(qǐng)求、數(shù)據(jù)寫入請(qǐng)求、添加/刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求外的請(qǐng)求均可視為無(wú)效請(qǐng)求)。步驟S304 :調(diào)度服務(wù)器判斷數(shù)據(jù)訪問請(qǐng)求的類型,若為數(shù)據(jù)讀取請(qǐng)求,則執(zhí)行步驟S306 ;若為數(shù)據(jù)寫入請(qǐng)求,則執(zhí)行步驟S312 ;若為添加/刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,則執(zhí)行步驟S318 ;若為無(wú)效請(qǐng)求,則執(zhí)行步驟S328。步驟S306 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)讀取請(qǐng)求,使用一致性hash算法獲取需要連接的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,執(zhí)行步驟S308。本處理流程中的數(shù)據(jù)讀取為非數(shù)據(jù)遷移過程中的數(shù)據(jù)讀取。步驟S308 :調(diào)度服務(wù)器將數(shù)據(jù)讀取請(qǐng)求發(fā)送至相應(yīng)的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,進(jìn)行數(shù)據(jù)讀取,執(zhí)行步驟S310。步驟S310 :調(diào)度服務(wù)器接收內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器返回的數(shù)據(jù)讀取結(jié)果,并返回?cái)?shù)據(jù)讀取結(jié)果至請(qǐng)求方,結(jié)束本次數(shù)據(jù)讀取流程。步驟S312 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)寫入請(qǐng)求,使用一致性hash算法獲取需要連接的磁盤數(shù)據(jù)庫(kù)服務(wù)器,執(zhí)行步驟S314。本處理流程中的數(shù)據(jù)寫入為非數(shù)據(jù)遷移過程中的數(shù)據(jù)讀取。步驟S314 :調(diào)度服務(wù)器將數(shù)據(jù)寫入請(qǐng)求發(fā)送至相應(yīng)的磁盤數(shù)據(jù)庫(kù)服務(wù)器,進(jìn)行數(shù)據(jù)寫入,執(zhí)行步驟S316。步驟S316 :調(diào)度服務(wù)器接收磁盤數(shù)據(jù)庫(kù)服務(wù)器返回的數(shù)據(jù)寫入結(jié)果,并返回?cái)?shù)據(jù)寫入結(jié)果至請(qǐng)求方,結(jié)束本次數(shù)據(jù)寫入流程。步驟S318 :調(diào)度服務(wù)器根據(jù)添加/刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,判斷是添加/刪除磁盤數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,還是添加/刪除內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求;若是添加/刪除磁盤數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,則執(zhí)行步驟S320 ;若是添加/刪除內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,則執(zhí)行步驟S324。步驟S320 :調(diào)度服務(wù)器根據(jù)添加/刪除磁盤數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,添加/刪除寫入數(shù)據(jù)庫(kù)服務(wù)器列表(即磁盤數(shù)據(jù)庫(kù)服務(wù)器列表)中相應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器,執(zhí)行步驟S322。步驟S322 :調(diào)度服務(wù)器進(jìn)行寫入數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)遷移,結(jié)束請(qǐng)求處理流程。寫入數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)遷移將在下文進(jìn)行說明,在此不再詳述。步驟S324 :調(diào)度服務(wù)器根據(jù)添加/刪除內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,添加/刪除讀取數(shù)據(jù)庫(kù)服務(wù)器列表(即內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器列表)中相應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器,執(zhí)行步驟S326。步驟S326 :調(diào)度服務(wù)器進(jìn)行讀取數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)遷移,結(jié)束請(qǐng)求處理流程?!ぷx取數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)遷移將在下文進(jìn)行說明,在此不再詳述。步驟S328 :調(diào)度服務(wù)器對(duì)無(wú)效請(qǐng)求進(jìn)行異常情況處理,結(jié)束無(wú)效請(qǐng)求處理流程。對(duì)無(wú)效請(qǐng)求的處理可以由本領(lǐng)域技術(shù)人員根據(jù)實(shí)際情況采用相關(guān)的適當(dāng)方式進(jìn)行,如不進(jìn)行處理,提示出錯(cuò)等等,本發(fā)明對(duì)此不作限制。以下,對(duì)WDC中磁盤數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)遷移流程進(jìn)行說明。參照?qǐng)D6,示出了根據(jù)本實(shí)施例的一種數(shù)據(jù)訪問方法中的WDC中磁盤數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)遷移流程圖。圖6中,符號(hào)“ I I ”表示并行處理。該WDC中磁盤數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)遷移包括以下步驟步驟S402 :調(diào)度服務(wù)器接收到添加/刪除磁盤數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,添加/刪除磁盤數(shù)據(jù)庫(kù)服務(wù)器列表中相應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器,啟動(dòng)磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移。在磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,調(diào)度服務(wù)器并行接收并處理數(shù)據(jù)訪問請(qǐng)求。步驟S404 :調(diào)度服務(wù)器在進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求。步驟S406 :調(diào)度服務(wù)器判斷數(shù)據(jù)訪問請(qǐng)求的類型,若為數(shù)據(jù)更新請(qǐng)求,則執(zhí)行步驟S408 ;若為數(shù)據(jù)寫入請(qǐng)求,則執(zhí)行步驟S418。步驟S408 :調(diào)度服務(wù)器判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移,若否,執(zhí)行步驟S410 ;若是,執(zhí)行步驟S412。當(dāng)數(shù)據(jù)庫(kù)集群增刪節(jié)點(diǎn)時(shí),hash函數(shù)會(huì)產(chǎn)生變化。系統(tǒng)會(huì)保留原來的舊hash函數(shù)和變化后的新hash函數(shù)這兩個(gè)hash函數(shù)。當(dāng)有數(shù)據(jù)更新請(qǐng)求時(shí),首先需要判斷待更新的數(shù)據(jù)是否需要被遷移,判斷是否需要遷移的方法是使用新舊兩個(gè)hash函數(shù)執(zhí)行計(jì)算,如果返回的服務(wù)器節(jié)點(diǎn)相同,則不需要遷移,否則需要執(zhí)行數(shù)據(jù)的遷移。步驟S410 :調(diào)度服務(wù)器根據(jù)原(舊)hash函數(shù)的計(jì)算結(jié)果確定待更新數(shù)據(jù)所在的磁盤數(shù)據(jù)庫(kù)服務(wù)器,更新該磁盤數(shù)據(jù)庫(kù)服務(wù)器上的待更新數(shù)據(jù)。步驟S412 :調(diào)度服務(wù)器根據(jù)新hash函數(shù)的計(jì)算結(jié)果確定待更新數(shù)據(jù)所在的磁盤數(shù)據(jù)庫(kù)服務(wù)器,判斷在該磁盤數(shù)據(jù)庫(kù)服務(wù)器上是否查找到待更新數(shù)據(jù),若查找到,執(zhí)行步驟S414 ;若未查找到,執(zhí)行步驟S416。當(dāng)數(shù)據(jù)需要遷移的時(shí)候,如果在新的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)中查詢到了對(duì)應(yīng)的數(shù)據(jù),則更新在新的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)中的數(shù)據(jù);否則,將舊數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)中的數(shù)據(jù)刪除,將被更新的數(shù)據(jù)插入到新的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)中,或者,將舊數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)中的數(shù)據(jù)遷移到新的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)后,刪除舊數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)中的數(shù)據(jù),然后更新新數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)上的數(shù)據(jù)。步驟S414 :調(diào)度服務(wù)器在新hash函數(shù)的計(jì)算結(jié)果確定的磁盤數(shù)據(jù)庫(kù)服務(wù)器上更新數(shù)據(jù),結(jié)束本次更新流程。步驟S416 :調(diào)度服務(wù)器將待更新數(shù)據(jù)從原h(huán)ash函數(shù)的計(jì)算結(jié)果確定的磁盤數(shù)據(jù)庫(kù)服務(wù)器遷移到新hash函數(shù)的計(jì)算結(jié)果確定的磁盤數(shù)據(jù)庫(kù)服務(wù)器,并進(jìn)行更新。步驟S418 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)寫入請(qǐng)求,使用新的hash函數(shù)獲取待寫入的磁盤數(shù)據(jù)庫(kù)服務(wù)器,向該磁盤數(shù)據(jù)庫(kù)服務(wù)器寫入數(shù)據(jù)。當(dāng)有數(shù)據(jù)寫入請(qǐng)求時(shí),調(diào)度服務(wù)器使用新的hash函數(shù)獲取數(shù)據(jù)庫(kù)節(jié)點(diǎn),將數(shù)據(jù)寫入對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)中。
在數(shù)據(jù)遷移工作完成之前,所有的數(shù)據(jù)寫入和更新操作都需要按照上述的流程進(jìn)行。通過上述WDC的數(shù)據(jù)遷移過程,保證了在數(shù)據(jù)遷移的過程中仍然可以提供正常的數(shù)據(jù)訪問服務(wù)。以下,對(duì)RDC中內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)遷移流程進(jìn)行說明。參照?qǐng)D7,示出了根據(jù)本實(shí)施例的一種數(shù)據(jù)訪問方法中的RDC中的服務(wù)器的數(shù)據(jù)遷移流程圖。圖7中,符號(hào)“I I”表示并行處理。該RDC中內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)遷移包括以下步驟步驟S502 :調(diào)度服務(wù)器接收到添加/刪除內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,添加/刪除內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器列表中相應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器,啟動(dòng)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移。在內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,調(diào)度服務(wù)器并行接收并處理數(shù)據(jù)訪問請(qǐng)求。步驟S504 :調(diào)度服務(wù)器在進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求。步驟S506 :調(diào)度服務(wù)器判斷數(shù)據(jù)訪問請(qǐng)求的類型,若為數(shù)據(jù)讀取請(qǐng)求,則執(zhí)行步驟S508 ;若為數(shù)據(jù)同步請(qǐng)求,則執(zhí)行步驟S514。步驟S508 :調(diào)度服務(wù)器使用原h(huán)ash函數(shù)查找待讀取數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,若查找到,執(zhí)行步驟S510 ;若未查找到,執(zhí)行步驟S512。步驟S510 :調(diào)度服務(wù)器根據(jù)查找結(jié)果確定待讀取數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,從該內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器讀取數(shù)據(jù),結(jié)束本次數(shù)據(jù)讀取流程。步驟S512 :調(diào)度服務(wù)器使用新hash函數(shù)查找待讀取數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,若查找到,從該內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器讀取數(shù)據(jù);若未查找到,則記錄查找失敗的日志。結(jié)束本次數(shù)據(jù)讀取流程。從上述過程可以看出,在執(zhí)行數(shù)據(jù)遷移的過程中,執(zhí)行數(shù)據(jù)讀取操作時(shí),可以首先查詢舊的hash函數(shù),查看數(shù)據(jù)是否在以前的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)中,如果找到了數(shù)據(jù),則直接返回;否則,說明該數(shù)據(jù)已經(jīng)被遷移了、或者根本不存在,從而需要使用新的hash函數(shù)計(jì)算新的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)位置,并查詢新的數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn),如果查詢到該數(shù)據(jù)則正確返回,否則記錄錯(cuò)誤日志(數(shù)據(jù)不存在等情況)。
因?yàn)镽DC本身也劃分了讀取層(從服務(wù)器)和寫入層(主服務(wù)器),上述讀取過程主要在讀取層進(jìn)行。步驟S514 :調(diào)度服務(wù)器判斷數(shù)據(jù)同步請(qǐng)求具體為數(shù)據(jù)插入請(qǐng)求還是數(shù)據(jù)更新請(qǐng)求,若為數(shù)據(jù)插入請(qǐng)求,則執(zhí)行步驟S516 ;若為數(shù)據(jù)更新請(qǐng)求,則執(zhí)行步驟S518。步驟S516 :調(diào)度服務(wù)器使用新的hash函數(shù)為待插入數(shù)據(jù)確定內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,將待插入數(shù)據(jù)插入該內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器中,結(jié)束本次數(shù)據(jù)同步流程。
步驟S518 :調(diào)度服務(wù)器根據(jù)數(shù)據(jù)更新請(qǐng)求,使用原h(huán)ash函數(shù)查詢待更新數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,若查詢到,執(zhí)行步驟S520 ;若未查詢到,則執(zhí)行步驟S524。步驟S520 :調(diào)度服務(wù)器將待更新數(shù)據(jù)從原內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器遷移到根據(jù)新hash函數(shù)確定的新內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器中,執(zhí)行步驟S522。步驟S522 :調(diào)度服務(wù)器更新遷移到新內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器中的待更新數(shù)據(jù),結(jié)束本次數(shù)據(jù)更新流程。步驟S524 :調(diào)度服務(wù)器使用新hash函數(shù)查詢待更新數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,若查詢到,則更新該內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器中的待更新數(shù)據(jù);若未查找到,則記錄錯(cuò)誤日志,結(jié)束本次數(shù)據(jù)更新流程。因?yàn)镽DC本身也劃分了讀取層(從服務(wù)器)和寫入層(主服務(wù)器),上述同步過程主要在寫入層進(jìn)行。在數(shù)據(jù)遷移工作完成之前,所有的數(shù)據(jù)讀取和同步操作都需要按照上述的流程進(jìn)行。通過上述RDC的數(shù)據(jù)遷移過程,保證了在數(shù)據(jù)遷移的過程中仍然可以提供正常的數(shù)據(jù)訪問服務(wù)。通過實(shí)施例三,能夠使得分布式內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群易于管理,提升了數(shù)據(jù)庫(kù)服務(wù)器動(dòng)態(tài)增刪節(jié)點(diǎn)時(shí)的高可用性,對(duì)于數(shù)據(jù)庫(kù)服務(wù)器集群的擴(kuò)容和故障產(chǎn)生的數(shù)據(jù)同步問題都能夠自動(dòng)化地解決,并且通過將數(shù)據(jù)的存儲(chǔ)細(xì)化為寫入層存儲(chǔ)以及讀取層存儲(chǔ),而讀取層存儲(chǔ)又細(xì)化為主從服務(wù)器存儲(chǔ),實(shí)現(xiàn)了數(shù)據(jù)的分層備份;而從同一份數(shù)據(jù)的存儲(chǔ)次數(shù)的維度來說,本實(shí)施例同一份數(shù)據(jù)在寫入層、讀取層主服務(wù)器和讀取層從服務(wù)器上都有存儲(chǔ),擁有多份備份,實(shí)現(xiàn)了數(shù)據(jù)的多次備份,通過分層備份和多次備份保證了數(shù)據(jù)的高穩(wěn)定性,這樣,對(duì)于對(duì)數(shù)據(jù)敏感的服務(wù)具有很好的支持作用。實(shí)施例四參照?qǐng)D8,示出了根據(jù)本發(fā)明實(shí)施例四的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)框圖。本實(shí)施例的數(shù)據(jù)訪問裝置包括遷移模塊602,用于當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移;存儲(chǔ)模塊604,用于根據(jù)數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存第二對(duì)應(yīng)關(guān)系,以及數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系,其中,第一對(duì)應(yīng)關(guān)系用于指示數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,第二對(duì)應(yīng)關(guān)系用于指示根據(jù)數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系;訪問模塊606,用于在進(jìn)行數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求;根據(jù)數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的服務(wù)器上的待訪問的數(shù)據(jù)進(jìn)行訪問。優(yōu)選地,遷移模塊602,用于當(dāng)接收到指示添加內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器的添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,或者,接收到指示刪除內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器的刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器或待刪除的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移,其中,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)讀取,以及接收磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;或者,遷移模塊602,用于當(dāng)接收到指示添加磁盤數(shù)據(jù)庫(kù)服務(wù)器的添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,或者,接收到指示刪除磁盤數(shù)據(jù)庫(kù)服務(wù)器的刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的磁盤數(shù)據(jù)庫(kù)服務(wù)器或待刪除的磁盤數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行磁盤 數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移,其中,磁盤數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)寫入,以及將磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)發(fā)送到內(nèi)存數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)同步。優(yōu)選地,訪問模塊606,用于在進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收數(shù)據(jù)讀取請(qǐng)求和/或數(shù)據(jù)同步請(qǐng)求;根據(jù)數(shù)據(jù)讀取請(qǐng)求和存儲(chǔ)的第一對(duì)應(yīng)關(guān)系,查找待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到;若是,則根據(jù)查找結(jié)果確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,讀取待讀取的數(shù)據(jù);若否,則根據(jù)第二對(duì)應(yīng)關(guān)系查找并確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,從確定的內(nèi)存服務(wù)器中讀取待讀取的數(shù)據(jù);和/或,判斷數(shù)據(jù)同步請(qǐng)求的請(qǐng)求類型;若為數(shù)據(jù)插入請(qǐng)求,則根據(jù)第二對(duì)應(yīng)關(guān)系,確定待插入的數(shù)據(jù)應(yīng)在的內(nèi)存服務(wù)器,在內(nèi)存服務(wù)器中插入待插入的數(shù)據(jù);若為數(shù)據(jù)更新請(qǐng)求,則根據(jù)第一對(duì)應(yīng)關(guān)系,查找待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到;若是,則根據(jù)第二對(duì)應(yīng)關(guān)系,將待更新的數(shù)據(jù)遷移到新的內(nèi)存服務(wù)器并根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù);若否,則根據(jù)第二對(duì)應(yīng)關(guān)系查找并確定待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù)。優(yōu)選地,訪問模塊606,用于在進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收數(shù)據(jù)寫入請(qǐng)求和/或數(shù)據(jù)更新請(qǐng)求;根據(jù)數(shù)據(jù)寫入請(qǐng)求和存儲(chǔ)的第二對(duì)應(yīng)關(guān)系,確定待寫入的數(shù)據(jù)應(yīng)在的磁盤服務(wù)器,將待寫入的數(shù)據(jù)寫入磁盤服務(wù)器;和/或,根據(jù)數(shù)據(jù)更新請(qǐng)求判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移;若否,則根據(jù)第一對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,并根據(jù)數(shù)據(jù)更新請(qǐng)求對(duì)磁盤服務(wù)器中的數(shù)據(jù)進(jìn)行更新;若是,則根據(jù)第二對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,判斷是否能在磁盤服務(wù)器中查找到待更新的數(shù)據(jù),若能,則根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù);若不能,則根據(jù)第二對(duì)應(yīng)關(guān)系,將待更新的數(shù)據(jù)遷移到新的磁盤服務(wù)器中并根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù)。優(yōu)選地,訪問模塊606在根據(jù)數(shù)據(jù)更新請(qǐng)求判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移時(shí),獲取數(shù)據(jù)更新請(qǐng)求中的待更新數(shù)據(jù);根據(jù)第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,分別獲取待更新數(shù)據(jù)所在的第一磁盤服務(wù)器和第二磁盤服務(wù)器;判斷第一磁盤服務(wù)器和第二磁盤服務(wù)器是否為相同的服務(wù)器,若是,則確定待更新的數(shù)據(jù)不需要進(jìn)行數(shù)據(jù)遷移;若否,則確定待更新的數(shù)據(jù)需要進(jìn)行數(shù)據(jù)遷移。優(yōu)選地,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器包括主內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器和從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,主內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于接收磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)讀取。優(yōu)選地,本實(shí)施例的數(shù)據(jù)訪問裝置還包括虛擬模塊608,用于在遷移模塊602當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移之前,將一個(gè)或多個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器中的每個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器虛擬為多個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)。
本實(shí)施例的數(shù)據(jù)訪問裝置用于實(shí)現(xiàn)前述多個(gè)方法實(shí)施例中相應(yīng)的數(shù)據(jù)訪問方法,并具有相應(yīng)的方法實(shí)施例的有益效果,在此不再贅述。實(shí)施例五參照?qǐng)D9,示出了根據(jù)本發(fā)明實(shí)施例五的一種分布式數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)示意圖。本實(shí)施例的分布式數(shù)據(jù)庫(kù)系統(tǒng)包括調(diào)度服務(wù)器702、磁盤數(shù)據(jù)庫(kù)服務(wù)器集群704和內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群706。 其中,調(diào)度服務(wù)器702包括遷移模塊7022,用于當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移,其中,待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器為磁盤數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器,數(shù)據(jù)遷移為磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移;或者,待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器為內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器,數(shù)據(jù)遷移為內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移;存儲(chǔ)模塊7024,用于根據(jù)數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存第二對(duì)應(yīng)關(guān)系,以及數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系,其中,第一對(duì)應(yīng)關(guān)系用于指示數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,第二對(duì)應(yīng)關(guān)系用于指示根據(jù)數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系;訪問模塊7026,用于在進(jìn)行數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求;根據(jù)數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的服務(wù)器上的待訪問的數(shù)據(jù)進(jìn)行訪問。優(yōu)選地,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器用于數(shù)據(jù)讀取,以及接收磁盤數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器發(fā)送的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;磁盤數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器用于數(shù)據(jù)寫入,以及將磁盤數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器上的數(shù)據(jù)發(fā)送到內(nèi)存數(shù)據(jù)庫(kù)集群中的服務(wù)器上進(jìn)行數(shù)據(jù)同步。優(yōu)選地,訪問模塊7026,用于在進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收數(shù)據(jù)讀取請(qǐng)求和/或數(shù)據(jù)同步請(qǐng)求;根據(jù)數(shù)據(jù)讀取請(qǐng)求和存儲(chǔ)的第一對(duì)應(yīng)關(guān)系,查找待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到;若是,則根據(jù)查找結(jié)果確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,讀取待讀取的數(shù)據(jù);若否,則根據(jù)第二對(duì)應(yīng)關(guān)系查找并確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,從確定的內(nèi)存服務(wù)器中讀取所述待讀取的數(shù)據(jù);和/或,判斷數(shù)據(jù)同步請(qǐng)求的請(qǐng)求類型;若為數(shù)據(jù)插入請(qǐng)求,則根據(jù)第二對(duì)應(yīng)關(guān)系,確定待插入的數(shù)據(jù)應(yīng)在的內(nèi)存服務(wù)器,在內(nèi)存服務(wù)器中插入所述待插入的數(shù)據(jù);若為數(shù)據(jù)更新請(qǐng)求,則根據(jù)第一對(duì)應(yīng)關(guān)系,查找待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到;若是,則根據(jù)第二對(duì)應(yīng)關(guān)系,將待更新的數(shù)據(jù)遷移到新的內(nèi)存服務(wù)器并根據(jù)數(shù)據(jù)更新請(qǐng)求更新所述待更新的數(shù)據(jù);若否,則根據(jù)第二對(duì)應(yīng)關(guān)系查找并確定待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù)。優(yōu)選地,訪問模塊7026,用于在進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收數(shù)據(jù)寫入請(qǐng)求和/或數(shù)據(jù)更新請(qǐng)求;根據(jù)數(shù)據(jù)寫入請(qǐng)求和存儲(chǔ)的第二對(duì)應(yīng)關(guān)系,確定待寫入的數(shù)據(jù)應(yīng)在的磁盤服務(wù)器,將待寫入的數(shù)據(jù)寫入磁盤服務(wù)器;和/或,根據(jù)數(shù)據(jù)更新請(qǐng)求判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移;若否,則根據(jù)第一對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,并根據(jù)數(shù)據(jù)更新請(qǐng)求對(duì)磁盤服務(wù)器中的數(shù)據(jù)進(jìn)行更新;若是,則根據(jù)第二對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,判斷是否能在磁盤服務(wù)器中查找到待更新的數(shù)據(jù),若能,則根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù);若不能,則根據(jù)第二對(duì)應(yīng)關(guān)系,將待更新的數(shù)據(jù)遷移到新的磁盤服務(wù)器中并根據(jù)數(shù)據(jù)更新請(qǐng)求更新待更新的數(shù)據(jù)。優(yōu)選地,訪問模塊7026在根據(jù)數(shù)據(jù)更新請(qǐng)求判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移時(shí),獲取數(shù)據(jù)更新請(qǐng)求中的待更新數(shù)據(jù);根據(jù)第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,分別獲取待更新數(shù)據(jù)所在的第一磁盤服務(wù)器和第二磁盤服務(wù)器;判斷第一磁盤服務(wù)器和第二磁盤服務(wù)器是否為相同的服務(wù)器,若是,則確定待更新的數(shù)據(jù)不需要進(jìn)行數(shù)據(jù)遷移;若否,則確定待更新的數(shù)據(jù)需要進(jìn)行數(shù)據(jù)遷移。優(yōu)選地,內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器包括主內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器和從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,主內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于接收磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)讀取。優(yōu)選地,調(diào)度服務(wù)器702還包括虛擬模塊7028,用于在遷移模塊7022當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的 數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移之前,將一個(gè)或多個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器中的每個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器虛擬為多個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)。本實(shí)施例的分布式數(shù)據(jù)庫(kù)系統(tǒng)可以實(shí)現(xiàn)前述多個(gè)方法實(shí)施例中相應(yīng)的數(shù)據(jù)訪問方法,并具有相應(yīng)的方法實(shí)施例的有益效果,在此不再贅述。需要說明的是,本發(fā)明的多個(gè)實(shí)施例中,使內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器和磁盤數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行了不同的功能,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明了,常規(guī)的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,即,既可提供數(shù)據(jù)讀取服務(wù)又可提供數(shù)據(jù)寫入服務(wù)的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器也同樣適用本發(fā)明的數(shù)據(jù)訪問方案。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對(duì)于裝置和系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上對(duì)本發(fā)明所提供的一種數(shù)據(jù)訪問方法、裝置、和分布式數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種數(shù)據(jù)訪問方法,其特征在于,包括 當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移; 根據(jù)所述數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存所述第二對(duì)應(yīng)關(guān)系,以及所述數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系,其中,所述第一對(duì)應(yīng)關(guān)系用于指示所述數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,所述第二對(duì)應(yīng)關(guān)系用于指示根據(jù)所述數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系; 在進(jìn)行所述數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求; 根據(jù)所述數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系和所述第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的所述服務(wù)器上的所述待訪問的數(shù)據(jù)進(jìn)行訪問。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于, 當(dāng)所述添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求指示添加內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,或者,所述刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求指示刪除內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器時(shí),所述對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移的步驟包括對(duì)待添加的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器或待刪除的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移,其中,所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)讀取,以及接收磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步; 當(dāng)所述添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求指示添加磁盤數(shù)據(jù)庫(kù)服務(wù)器,或者,所述刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求指示刪除磁盤數(shù)據(jù)庫(kù)服務(wù)器時(shí),所述對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移的步驟包括對(duì)待添加的磁盤數(shù)據(jù)庫(kù)服務(wù)器或待刪除的磁盤數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移,其中,所述磁盤數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)寫入,以及將磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)發(fā)送到內(nèi)存數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)同步。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于, 所述在進(jìn)行所述數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求的步驟包括在進(jìn)行所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收數(shù)據(jù)讀取請(qǐng)求和/或數(shù)據(jù)同步請(qǐng)求; 所述根據(jù)所述數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系和所述第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的所述服務(wù)器上的所述待訪問的數(shù)據(jù)進(jìn)行訪問的步驟包括 根據(jù)所述數(shù)據(jù)讀取請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系,查找待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到;若是,則根據(jù)查找結(jié)果確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,讀取所述待讀取的數(shù)據(jù);若否,則根據(jù)所述第二對(duì)應(yīng)關(guān)系查找并確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,從確定的所述內(nèi)存服務(wù)器中讀取所述待讀取的數(shù)據(jù); 和/或, 判斷所述數(shù)據(jù)同步請(qǐng)求的請(qǐng)求類型;若為數(shù)據(jù)插入請(qǐng)求,則根據(jù)所述第二對(duì)應(yīng)關(guān)系,確定待插入的數(shù)據(jù)應(yīng)在的內(nèi)存服務(wù)器,在所述內(nèi)存服務(wù)器中插入所述待插入的數(shù)據(jù);若為數(shù)據(jù)更新請(qǐng)求,則根據(jù)所述第一對(duì)應(yīng)關(guān)系,查找待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到;若是,則根據(jù)所述第二對(duì)應(yīng)關(guān)系,將所述待更新的數(shù)據(jù)遷移到新的內(nèi)存服務(wù)器并根據(jù)所述數(shù)據(jù)更新請(qǐng)求更新所述待更新的數(shù)據(jù);若否,則根據(jù)所述第二對(duì)應(yīng)關(guān)系查找并確定待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,根據(jù)所述數(shù)據(jù)更新請(qǐng)求更新所述待更新的數(shù)據(jù)。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在進(jìn)行所述數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求的步驟包括在進(jìn)行所述磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收數(shù)據(jù)寫入請(qǐng)求和/或數(shù)據(jù)更新請(qǐng)求; 所述根據(jù)所述數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系和所述第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的所述服務(wù)器上的所述待訪問的數(shù)據(jù)進(jìn)行訪問的步驟包括 根據(jù)所述數(shù)據(jù)寫入請(qǐng)求和存儲(chǔ)的所述第二對(duì)應(yīng)關(guān)系,確定待寫入的數(shù)據(jù)應(yīng)在的磁盤服務(wù)器,將所述待寫入的數(shù)據(jù)寫入所述磁盤服務(wù)器; 和/或, 根據(jù)所述數(shù)據(jù)更新請(qǐng)求判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移;若否,則根據(jù)所述第一對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,并根據(jù)所述數(shù)據(jù)更新請(qǐng)求對(duì)所述磁盤服務(wù)器中的數(shù)據(jù)進(jìn)行更新;若是,則根據(jù)所述第二對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,判斷是否能在所述磁盤服務(wù)器中查找到所述待更新的數(shù)據(jù),若能,則根據(jù)所述數(shù)據(jù)更新請(qǐng)求更新所述待更新的數(shù)據(jù);若不能,則根據(jù)所述第二對(duì)應(yīng)關(guān)系,將所述待更新的數(shù)據(jù)遷移到新的磁盤服務(wù)器中并根據(jù)所述數(shù)據(jù)更新請(qǐng)求更新所述待更新的數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述數(shù)據(jù)更新請(qǐng)求判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移的步驟包括 獲取所述數(shù)據(jù)更新請(qǐng)求中的待更新數(shù)據(jù); 根據(jù)所述第一對(duì)應(yīng)關(guān)系和所述第二對(duì)應(yīng)關(guān)系,分別獲取所述待更新數(shù)據(jù)所在的第一磁盤服務(wù)器和第二磁盤服務(wù)器; 判斷所述第一磁盤服務(wù)器和所述第二磁盤服務(wù)器是否為相同的服務(wù)器,若是,則確定所述待更新的數(shù)據(jù)不需要進(jìn)行數(shù)據(jù)遷移;若否,則確定所述待更新的數(shù)據(jù)需要進(jìn)行數(shù)據(jù)遷移。
6.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器包括主內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器和從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器,所述主內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于接收所述磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,所述從內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)讀取。
7.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移的步驟之前,還包括 將一個(gè)或多個(gè)所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器中的每個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器虛擬為多個(gè)內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)。
8.一種數(shù)據(jù)訪問裝置,其特征在于,包括 遷移模塊,用于當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移; 存儲(chǔ)模塊,用于根據(jù)所述數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存所述第二對(duì)應(yīng)關(guān)系,以及所述數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系,其中,所述第一對(duì)應(yīng)關(guān)系用于指示所述數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,所述第二對(duì)應(yīng)關(guān)系用于指示根據(jù)所述數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系; 訪問模塊,用于在進(jìn)行所述數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求;根據(jù)所述數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系和所述第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的所述服務(wù)器上的所述待訪問的數(shù)據(jù)進(jìn)行訪問。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于, 所述遷移模塊,用于當(dāng)接收到指示添加內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器的添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,或者,接收到指示刪除內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器的刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器或待刪除的內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移,其中,所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)讀取,以及接收磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)同 或者, 所述遷移模塊,用于當(dāng)接收到指示添加磁盤數(shù)據(jù)庫(kù)服務(wù)器的添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求,或者,接收到指示刪除磁盤數(shù)據(jù)庫(kù)服務(wù)器的刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的磁盤數(shù)據(jù)庫(kù)服務(wù)器或待刪除的磁盤數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移,其中,所述磁盤數(shù)據(jù)庫(kù)服務(wù)器用于數(shù)據(jù)寫入,以及將磁盤數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)發(fā)送到內(nèi)存數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)同步。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于, 所述訪問模塊,用于在進(jìn)行所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收數(shù)據(jù)讀取請(qǐng)求和/或數(shù)據(jù)同步請(qǐng)求; 根據(jù)所述數(shù)據(jù)讀取請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系,查找待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到;若是,則根據(jù)查找結(jié)果確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,讀取所述待讀取的數(shù)據(jù);若否,則根據(jù)所述第二對(duì)應(yīng)關(guān)系查找并確定待讀取的數(shù)據(jù)所在的內(nèi)存服務(wù)器,從確定的所述內(nèi)存服務(wù)器中讀取所述待讀取的數(shù)據(jù); 和/或, 判斷所述數(shù)據(jù)同步請(qǐng)求的請(qǐng)求類型;若為數(shù)據(jù)插入請(qǐng)求,則根據(jù)所述第二對(duì)應(yīng)關(guān)系,確定待插入的數(shù)據(jù)應(yīng)在的內(nèi)存服務(wù)器,在所述內(nèi)存服務(wù)器中插入所述待插入的數(shù)據(jù);若為數(shù)據(jù)更新請(qǐng)求,則根據(jù)所述第一對(duì)應(yīng)關(guān)系,查找待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,并判斷是否查找到;若是,則根據(jù)所述第二對(duì)應(yīng)關(guān)系,將所述待更新的數(shù)據(jù)遷移到新的內(nèi)存服務(wù)器并根據(jù)所述數(shù)據(jù)更新請(qǐng)求更新所述待更新的數(shù)據(jù);若否,則根據(jù)所述第二對(duì)應(yīng)關(guān)系查找并確定待更新的數(shù)據(jù)所在的內(nèi)存服務(wù)器,根據(jù)所述數(shù)據(jù)更新請(qǐng)求更新所述待更新的數(shù)據(jù)。
11.根據(jù)權(quán)利要求9所述的裝置,其特征在于, 所述訪問模塊,用于在進(jìn)行所述磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移過程中,接收數(shù)據(jù)寫入請(qǐng)求和/或數(shù)據(jù)更新請(qǐng)求; 根據(jù)所述數(shù)據(jù)寫入請(qǐng)求和存儲(chǔ)的所述第二對(duì)應(yīng)關(guān)系,確定待寫入的數(shù)據(jù)應(yīng)在的磁盤服務(wù)器,將所述待寫入的數(shù)據(jù)寫入所述磁盤服務(wù)器; 和/或, 根據(jù)所述數(shù)據(jù)更新請(qǐng)求判斷待更新的數(shù)據(jù)是否需要進(jìn)行數(shù)據(jù)遷移;若否,則根據(jù)所述第一對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,并根據(jù)所述數(shù)據(jù)更新請(qǐng)求對(duì)所述磁盤服務(wù)器中的數(shù)據(jù)進(jìn)行更新;若是,則根據(jù)所述第二對(duì)應(yīng)關(guān)系確定待更新的數(shù)據(jù)所在的磁盤服務(wù)器,判斷是否能在所述磁盤服務(wù)器中查找到所述待更新的數(shù)據(jù),若能,則根據(jù)所述數(shù)據(jù)更新請(qǐng)求更新所述待更新的數(shù)據(jù);若不能,則根據(jù)所述第二對(duì)應(yīng)關(guān)系,將所述待更新的數(shù)據(jù)遷移到新的磁盤服務(wù)器中并根據(jù)所述數(shù)據(jù)更新請(qǐng)求更新所述待更新的數(shù)據(jù)。
12.—種分布式數(shù)據(jù)庫(kù)系統(tǒng),其特征在于,包括調(diào)度服務(wù)器、磁盤數(shù)據(jù)庫(kù)服務(wù)器集群和內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群; 所述調(diào)度服務(wù)器包括 遷移模塊,用于當(dāng)接收到所述添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或所述刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移,其中,所述待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器為所述磁盤數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器,所述數(shù)據(jù)遷移為所述磁盤數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移;或者,所述待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器為所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器集群中的服務(wù)器,所述數(shù)據(jù)遷移為所述內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)遷移; 存儲(chǔ)模塊,用于根據(jù)所述數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存所述第二對(duì)應(yīng)關(guān)系,以及所述數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系,其中,所述第一對(duì)應(yīng)關(guān)系用于指示所述數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,所述第二對(duì)應(yīng)關(guān)系用于指示根據(jù)所述數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服 務(wù)器的對(duì)應(yīng)關(guān)系; 訪問模塊,用于在進(jìn)行所述數(shù)據(jù)遷移的過程中,接收所述數(shù)據(jù)訪問請(qǐng)求;根據(jù)所述數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的所述第一對(duì)應(yīng)關(guān)系和所述第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的所述服務(wù)器上的所述待訪問的數(shù)據(jù)進(jìn)行訪問。
全文摘要
本發(fā)明提供了一種數(shù)據(jù)訪問方法裝置和分布式數(shù)據(jù)庫(kù)系統(tǒng),其中,數(shù)據(jù)訪問方法包括當(dāng)接收到添加數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求或刪除數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求時(shí),對(duì)待添加的數(shù)據(jù)庫(kù)服務(wù)器或待刪除的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)遷移;根據(jù)數(shù)據(jù)遷移生成第二對(duì)應(yīng)關(guān)系,保存第二對(duì)應(yīng)關(guān)系以及數(shù)據(jù)遷移前的第一對(duì)應(yīng)關(guān)系,第一對(duì)應(yīng)關(guān)系用于指示數(shù)據(jù)遷移前的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系,第二對(duì)應(yīng)關(guān)系用于指示根據(jù)數(shù)據(jù)遷移生成的新的數(shù)據(jù)與服務(wù)器的對(duì)應(yīng)關(guān)系;在進(jìn)行數(shù)據(jù)遷移的過程中,接收數(shù)據(jù)訪問請(qǐng)求;根據(jù)數(shù)據(jù)訪問請(qǐng)求和存儲(chǔ)的第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,確定待訪問的數(shù)據(jù)所在的服務(wù)器,對(duì)確定的服務(wù)器上的待訪問的數(shù)據(jù)進(jìn)行訪問。通過本發(fā)明,提高了系統(tǒng)的可擴(kuò)容性。
文檔編號(hào)G06F17/30GK102955845SQ20121040794
公開日2013年3月6日 申請(qǐng)日期2012年10月23日 優(yōu)先權(quán)日2012年10月23日
發(fā)明者劉書良, 元張毅, 羅峰, 黃蘇支, 李娜 申請(qǐng)人:北京億贊普網(wǎng)絡(luò)技術(shù)有限公司