一種分庫數(shù)據(jù)庫系統(tǒng)及其路由方法
【專利摘要】本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,公開了一種分庫數(shù)據(jù)庫系統(tǒng)及其路由方法。本發(fā)明中,分庫數(shù)據(jù)庫系統(tǒng)包括:L個(gè)分片數(shù)據(jù)庫和N個(gè)分庫服務(wù)器,L、N均為大于1的自然數(shù),分庫數(shù)據(jù)庫系統(tǒng)的路由方法包括:各分庫服務(wù)器在接收到來自客戶端的操作請(qǐng)求時(shí),解析得到操作請(qǐng)求攜帶的查詢條件;在需計(jì)算目標(biāo)分片數(shù)據(jù)庫時(shí),根據(jù)查詢條件計(jì)算操作請(qǐng)求對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫;其中,各分庫服務(wù)器保存查詢條件與目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系,并將對(duì)應(yīng)關(guān)系同步更新至分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器;將操作請(qǐng)求發(fā)送至目標(biāo)分片數(shù)據(jù)庫。本發(fā)明與現(xiàn)有技術(shù)相比,通過減少分片路由的重復(fù)計(jì)算以解決分片路由多次計(jì)算的問題,從而提高了分庫數(shù)據(jù)庫系統(tǒng)的處理效率。
【專利說明】
一種分庫數(shù)據(jù)庫系統(tǒng)及其路由方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,特別涉及一種分庫數(shù)據(jù)庫系統(tǒng)及其路由方法。
【背景技術(shù)】
[0002]在互聯(lián)網(wǎng)網(wǎng)絡(luò)應(yīng)用中,隨著業(yè)務(wù)的發(fā)展,數(shù)據(jù)庫積累的數(shù)據(jù)越來越多,那么在處理大量用戶訪問、高并發(fā)請(qǐng)求的時(shí)候,單個(gè)數(shù)據(jù)庫的處理瓶頸很快就能顯現(xiàn)出來,這時(shí)一臺(tái)數(shù)據(jù)庫將很快無法滿足應(yīng)用需求,因此,目前通常采用數(shù)據(jù)庫分庫分表的方案來提高數(shù)據(jù)庫性能。
[0003]傳統(tǒng)的分庫分表方案一般是設(shè)置一個(gè)數(shù)據(jù)庫表中的分片字段,并配置分庫的分片策略,在使用時(shí),根據(jù)應(yīng)用傳入的值配合分片策略進(jìn)行計(jì)算,通過計(jì)算得出使用的分片節(jié)點(diǎn)(即目標(biāo)分片數(shù)據(jù)庫),由此可知,分片字段在分庫數(shù)據(jù)庫系統(tǒng)中對(duì)目標(biāo)分片數(shù)據(jù)庫的路由起到關(guān)鍵作用。除可設(shè)置分片字段外,還可以設(shè)置一個(gè)主鍵字段,主鍵字段為此數(shù)據(jù)庫表經(jīng)常操作的條件字段,當(dāng)使用主鍵字段進(jìn)行查詢、更新等操作后,分庫數(shù)據(jù)庫系統(tǒng)會(huì)將該主鍵字段的值和目標(biāo)分片數(shù)據(jù)庫對(duì)應(yīng)關(guān)系,以鍵值對(duì)的方式保存在分庫服務(wù)器的本地緩存中,下次使用時(shí)可直接從本地緩存中獲得對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫?,F(xiàn)結(jié)合圖1,對(duì)傳統(tǒng)分庫數(shù)據(jù)庫的路由方法進(jìn)行說明,其包括以下步驟:
[0004]步驟101:從來自客戶端的請(qǐng)求中解析出查詢條件,比如,解析出的查詢條件包括分片字段和/或主鍵字段。
[0005]步驟102:根據(jù)解析出的查詢條件判斷是否在本地緩存中命中目標(biāo)分片數(shù)據(jù)庫。如果在本地緩存中命中目標(biāo),則執(zhí)行步驟105;反之,如果本地緩存中沒有緩存相應(yīng)數(shù)據(jù)(即查詢條件與目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系),則執(zhí)行步驟103。
[0006]步驟103:根據(jù)解析出的查詢條件計(jì)算得到目標(biāo)分片數(shù)據(jù)庫。本步驟中,可以根據(jù)分片字段的傳入值配合分庫數(shù)據(jù)庫系統(tǒng)的分片策略計(jì)算得到目標(biāo)分片數(shù)據(jù)庫,或者根據(jù)主鍵字段在整個(gè)數(shù)據(jù)庫中進(jìn)行執(zhí)行,計(jì)算得到目標(biāo)分片數(shù)據(jù)庫。
[0007]步驟104:保存目標(biāo)分片數(shù)據(jù)庫和請(qǐng)求的對(duì)應(yīng)關(guān)系至本地緩存,以便下次同樣操作請(qǐng)求時(shí)可以在本地緩存中直接命中目標(biāo)分片數(shù)據(jù)庫。
[0008]步驟105:將操作請(qǐng)求發(fā)送至目標(biāo)分片數(shù)據(jù)庫。
[0009]現(xiàn)有技術(shù)中,為防止單點(diǎn)問題,通常采用集群方式部署分庫,那么一個(gè)分庫數(shù)據(jù)庫系統(tǒng)就包括有多個(gè)分庫服務(wù)器,各分庫服務(wù)器分別用于根據(jù)從客戶端發(fā)送的操作請(qǐng)求中解析出的查詢條件計(jì)算目標(biāo)分片數(shù)據(jù)庫。如果系統(tǒng)的多個(gè)分庫服務(wù)器實(shí)現(xiàn)高可用,即各個(gè)分庫服務(wù)器同時(shí)在執(zhí)行目標(biāo)分片數(shù)據(jù)庫的路由任務(wù),那么必然會(huì)存在目標(biāo)分片數(shù)據(jù)庫的多次計(jì)算或執(zhí)行的問題,造成寶貴的(PU的浪費(fèi),降低了硬件資源的有效利用率。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的在于提供一種分庫數(shù)據(jù)庫系統(tǒng)及其路由方法,通過減少目標(biāo)分片數(shù)據(jù)庫的重復(fù)計(jì)算以提高分庫數(shù)據(jù)庫系統(tǒng)的處理效率,進(jìn)而提高系統(tǒng)硬件的使用效率。
[0011]為解決上述技術(shù)問題,本發(fā)明的實(shí)施方式提供了一種分庫數(shù)據(jù)庫系統(tǒng)的路由方法,所述分庫數(shù)據(jù)庫系統(tǒng)包括:L個(gè)分片數(shù)據(jù)庫和N個(gè)分庫服務(wù)器,所述L、N均為大于I的自然數(shù),其特征在于,包括以下步驟:所述各分庫服務(wù)器在接收到來自客戶端的操作請(qǐng)求時(shí),解析得到所述操作請(qǐng)求攜帶的查詢條件;在需計(jì)算目標(biāo)分片數(shù)據(jù)庫時(shí),根據(jù)所述查詢條件計(jì)算所述操作請(qǐng)求對(duì)應(yīng)的分片數(shù)據(jù)庫;其中,所述各分庫服務(wù)器保存所述查詢條件與目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系,并將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器;將所述操作請(qǐng)求發(fā)送至所述目標(biāo)分片數(shù)據(jù)庫。
[0012]本發(fā)明的實(shí)施方式還提供了一種分庫數(shù)據(jù)庫系統(tǒng),包括:L個(gè)分片數(shù)據(jù)庫和N個(gè)分庫服務(wù)器,所述L、N均為大于I的自然數(shù);所述分庫服務(wù)器包括解析模塊、計(jì)算模塊、保存模塊、同步模塊和發(fā)送模塊;所述解析模塊用于在所述分庫服務(wù)器接收到來自客戶端的操作請(qǐng)求時(shí),解析得到所述操作請(qǐng)求攜帶的查詢條件;所述計(jì)算模塊用于在需要計(jì)算目標(biāo)分片數(shù)據(jù)庫時(shí),根據(jù)所述查詢條件計(jì)算所述操作請(qǐng)求對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫;所述所述保存模塊用于將所述查詢條件和所述計(jì)算模塊計(jì)算出的目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系保存至所述分庫服務(wù)器的本地緩存;所述同步模塊用于將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器;所述發(fā)送模塊用于將所述操作請(qǐng)求發(fā)送至所述目標(biāo)分片數(shù)據(jù)庫。
[0013]本發(fā)明實(shí)施方式相對(duì)于現(xiàn)有技術(shù)而言,針對(duì)需要根據(jù)來自客戶端的操作請(qǐng)求進(jìn)行計(jì)算處理以路由到目標(biāo)分片數(shù)據(jù)庫的情形,將計(jì)算得到的操作請(qǐng)求與目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系進(jìn)行本地保存,同時(shí)同步更新至分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器,從而通過分庫數(shù)據(jù)庫系統(tǒng)中的多個(gè)分庫服務(wù)器之間的數(shù)據(jù)同步的方式減少相同操作請(qǐng)求的重復(fù)計(jì)算,有助于提高分庫數(shù)據(jù)庫系統(tǒng)的處理效率。
[0014]優(yōu)選地,在將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器中,將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中未處理該操作請(qǐng)求的所有分庫服務(wù)器。從而使得系統(tǒng)具有較高的運(yùn)行效率。
[0015]優(yōu)選地,將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器,具體包括:所述分庫服務(wù)器將所述對(duì)應(yīng)關(guān)系同步更新至集中式緩存服務(wù)器;所述集中式緩存服務(wù)器將更新的所述對(duì)應(yīng)關(guān)系,同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器。通過集中式緩存服務(wù)器進(jìn)行數(shù)據(jù)更新中轉(zhuǎn),一方面有利于降低各分庫服務(wù)器的負(fù)擔(dān),另一方面,有利于對(duì)計(jì)算結(jié)果進(jìn)行較長時(shí)間的保存。
[0016]優(yōu)選地,所述集中式緩存服務(wù)器將更新的所述對(duì)應(yīng)關(guān)系,同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器,具體包括:所述集中式緩存服務(wù)器發(fā)布關(guān)于所述對(duì)應(yīng)關(guān)系的更新消息;所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器在監(jiān)聽到所述集中式緩存服務(wù)器發(fā)布的更新消息時(shí)進(jìn)行同步更新。從而使得各分庫服務(wù)器之間的數(shù)據(jù)更新可以快速同步。
【附圖說明】
[0017]圖1是根據(jù)現(xiàn)有技術(shù)分庫數(shù)據(jù)庫系統(tǒng)的路由方法的流程圖;
[0018]圖2是根據(jù)本發(fā)明第一實(shí)施方式分庫數(shù)據(jù)庫系統(tǒng)的路由方法的流程圖;
[0019]圖3是根據(jù)本發(fā)明第二實(shí)施方式分庫數(shù)據(jù)庫系統(tǒng)的路由方法的流程圖;
[0020]圖4是根據(jù)本發(fā)明第三實(shí)施方式分庫數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)示意圖;
[0021]圖5是根據(jù)本發(fā)明第三實(shí)施方式分庫數(shù)據(jù)庫系統(tǒng)各分庫服務(wù)器的結(jié)構(gòu)示意圖;
[0022]圖6是根據(jù)本發(fā)明第四實(shí)施方式分庫數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)示意圖;
[0023]圖7是根據(jù)本發(fā)明第四實(shí)施方式分庫服務(wù)器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0024]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明的各實(shí)施方式進(jìn)行詳細(xì)的闡述。然而,本領(lǐng)域的普通技術(shù)人員可以理解,在本發(fā)明各實(shí)施方式中,為了使讀者更好地理解本申請(qǐng)而提出了許多技術(shù)細(xì)節(jié)。但是,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化和修改,也可以實(shí)現(xiàn)本申請(qǐng)各權(quán)利要求所要求保護(hù)的技術(shù)方案。
[0025]本發(fā)明的第一實(shí)施方式涉及一種分庫數(shù)據(jù)庫系統(tǒng)的路由方法,作為舉例而非限制,該分庫數(shù)據(jù)庫系統(tǒng)的路由方法可以應(yīng)用于電子商務(wù)、金融、電信等的應(yīng)用。其中,分庫數(shù)據(jù)庫系統(tǒng)包括:L個(gè)分片數(shù)據(jù)庫和N個(gè)分庫服務(wù)器,L、N均為大于I的自然數(shù)。N個(gè)分庫服務(wù)器采用集群部署方式,對(duì)接收到的操作請(qǐng)求進(jìn)行目標(biāo)分片數(shù)據(jù)庫的路由。
[0026]如圖2所示,該分庫數(shù)據(jù)庫系統(tǒng)的路由方法的包括以下步驟:
[0027]步驟201:各分庫服務(wù)器在接收到來自客戶端的操作請(qǐng)求時(shí),解析得到操作請(qǐng)求攜帶的查詢條件。比如,操作請(qǐng)求中可以攜帶用于指示操作的操作值,用于對(duì)分片數(shù)據(jù)庫進(jìn)行路由的查詢條件,以及查詢條件對(duì)應(yīng)的值等,當(dāng)然,本領(lǐng)域技術(shù)人員可以知曉操作請(qǐng)求攜帶的信息的其他變形。
[0028]步驟202:根據(jù)查詢條件在分庫服務(wù)器的本地緩存中定位目標(biāo)分片數(shù)據(jù)庫。
[0029]步驟203:判斷在本地緩存中是否命中到目標(biāo)分片數(shù)據(jù)庫。
[0030]具體而言,分庫服務(wù)器的本地緩存中比如存儲(chǔ)有主鍵字段的值與分片對(duì)應(yīng)關(guān)系的鍵值對(duì),則當(dāng)傳入的值為主鍵值且有對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫時(shí),即可在本地緩存中命中該操作請(qǐng)求對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫。本實(shí)施方式中如果根據(jù)查詢條件未在分庫服務(wù)器的本地緩存中命中目標(biāo)分片數(shù)據(jù)庫,則執(zhí)行步驟204;如果根據(jù)查詢條件在分庫服務(wù)器的本地緩存中命中目標(biāo)分片數(shù)據(jù)庫,則執(zhí)行步驟209。
[0031]步驟204:判斷查詢條件是否包括主鍵字段。如果查詢條件包括主鍵字段,則執(zhí)行步驟206,本實(shí)施方式中,如果查詢條件不包括主鍵字段,則默認(rèn)查詢條件包含分段路由,則執(zhí)行步驟205。
[0032]步驟205:根據(jù)分片路由的字段值以及分庫服務(wù)器支持的分片策略計(jì)算得到目標(biāo)分片數(shù)據(jù)庫。
[0033]步驟206:根據(jù)主鍵字段的傳入值計(jì)算查詢條件對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫。
[0034]本領(lǐng)域技術(shù)人員知曉在步驟205、206中可以采用現(xiàn)有分庫數(shù)據(jù)庫路由的計(jì)算方法進(jìn)行路由計(jì)算,此處不再贅述。值得一提的是,在根據(jù)主鍵字段的傳入值計(jì)算得到查詢條件對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫時(shí),將該主鍵字段與該目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系保存為鍵值對(duì)。
[0035]步驟207:各分庫服務(wù)器保存查詢條件與分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系。本實(shí)施方式中,各分庫服務(wù)器將查詢條件與目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系保存至本地緩存。即根據(jù)步驟205或者步驟206的計(jì)算結(jié)果將查詢條件與目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系進(jìn)行保存。
[0036]步驟208:將對(duì)應(yīng)關(guān)系同步更新至分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器。
[0037]作為舉例而非限制,本實(shí)施方式中將對(duì)應(yīng)關(guān)系同步更新至分庫數(shù)據(jù)庫系統(tǒng)中未處理該操作請(qǐng)求的所有分庫服務(wù)器。換句話說,即是將該對(duì)應(yīng)關(guān)系同步更新至未處理該操作請(qǐng)求的L-1個(gè)分庫服務(wù)器。在集群式分庫部署方案中,分庫服務(wù)器越多,數(shù)據(jù)庫系統(tǒng)的路由能力越強(qiáng),響應(yīng)速度越快。通過將各分庫服務(wù)器實(shí)時(shí)計(jì)算得到的操作請(qǐng)求與分片數(shù)據(jù)庫的對(duì)應(yīng)結(jié)果同步至系統(tǒng)中其他的分庫服務(wù)器,就可以減少系統(tǒng)處理相同請(qǐng)求時(shí)的重復(fù)計(jì)算次數(shù),相當(dāng)于同步提高了其他分庫服務(wù)器在處理相同請(qǐng)求時(shí)的處理速度,從而提高系統(tǒng)的處理速度,在高并發(fā)的訪問情況下可以有效節(jié)省寶貴的(PU資源,提高硬件資源的使用率。
[0038]步驟209:將操作請(qǐng)求發(fā)送至目標(biāo)分片數(shù)據(jù)庫。即根據(jù)操作請(qǐng)求在對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫(即L個(gè)分片數(shù)據(jù)庫中實(shí)際存放數(shù)據(jù)表的一個(gè)數(shù)據(jù)庫)執(zhí)行相應(yīng)的增、刪、查、改等的操作。
[0039]需要說明的是,本實(shí)施方式中客戶端請(qǐng)求可以由負(fù)載均衡器轉(zhuǎn)發(fā)至分庫服務(wù)器,從而在高并發(fā)場(chǎng)景下,較好地協(xié)調(diào)各分庫服務(wù)器地處理任務(wù)。
[0040]值得一提的是,本實(shí)施方式中,分庫數(shù)據(jù)庫系統(tǒng)的路由方法還包括以下步驟:根據(jù)分庫服務(wù)器中更新的對(duì)應(yīng)關(guān)系的使用頻率對(duì)分庫服務(wù)器的本地緩存進(jìn)行動(dòng)態(tài)清理。由于各分庫服務(wù)器本地緩存的存儲(chǔ)能力有限,并且一個(gè)分庫服務(wù)器本地緩存還要與其他分庫服務(wù)器的計(jì)算結(jié)果同步,導(dǎo)致分庫服務(wù)器中存儲(chǔ)的數(shù)據(jù)量會(huì)快速增加,當(dāng)本地緩存中的數(shù)據(jù)積累到一定程度時(shí),將無法同步更新,因此,就需要對(duì)本地緩存中的數(shù)據(jù)進(jìn)行及時(shí)清理,本實(shí)施方式中,根據(jù)本地緩存中數(shù)據(jù)的使用頻率進(jìn)行清理,本領(lǐng)域技術(shù)人員亦知曉其他本地緩存的清理策略,此處不再贅述。
[0041]本實(shí)施方式與現(xiàn)有技術(shù)相比,當(dāng)未在分庫服務(wù)器的本地緩存中命中來自客戶端的操作請(qǐng)求的目標(biāo)分片數(shù)據(jù)庫時(shí),根據(jù)操作請(qǐng)求解析出的查詢條件進(jìn)行計(jì)算,從而得到查詢條件對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫。本實(shí)施方式不僅能夠?qū)τ?jì)算結(jié)果進(jìn)行本地緩存,而且可以將計(jì)算結(jié)果同步更新至其他分庫服務(wù)器,從而在高并發(fā)的情況下,相同的操作請(qǐng)求進(jìn)行一次計(jì)算即可,大大減小了重復(fù)計(jì)算量,進(jìn)而減少各分庫服務(wù)器的任務(wù)量,從而有利于提高分庫數(shù)據(jù)庫系統(tǒng)的處理效率。
[0042]本發(fā)明的第二實(shí)施方式涉及一種分庫數(shù)據(jù)庫系統(tǒng)的路由方法。第二實(shí)施方式與第一實(shí)施方式大致相同,主要區(qū)別之處在于:在第一實(shí)施方式中,各分庫服務(wù)器之間直接進(jìn)行查詢條件和目標(biāo)服務(wù)器的對(duì)應(yīng)關(guān)系的同步更新,在第二實(shí)施方式中,利用集中式緩存服務(wù)器將請(qǐng)求和分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系同步更新至其他分庫服務(wù)器。
[0043]如圖3所示,本實(shí)施方式中,步驟301至步驟307與第一實(shí)施方式中步驟201至步驟207對(duì)應(yīng)相同,步驟309與第二實(shí)施方式步驟209對(duì)應(yīng)相同。在步驟308中,在將對(duì)應(yīng)關(guān)系同步更新至分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器的步驟之中,包括以下子步驟:
[0044]子步驟3080:各分庫服務(wù)器將對(duì)應(yīng)關(guān)系同步更新至集中式緩存服務(wù)器。
[0045]子步驟3081:將集中式緩存服務(wù)器更新的對(duì)應(yīng)關(guān)系同步更新至分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器。
[0046]在子步驟3080中,各分庫服務(wù)器可以實(shí)時(shí)地將對(duì)應(yīng)關(guān)系保存至集中式緩存服務(wù)器,而在子步驟3081中,集中式緩存服務(wù)器發(fā)布關(guān)于對(duì)應(yīng)關(guān)系的更新消息,分庫數(shù)據(jù)庫系統(tǒng)中未處理該操作請(qǐng)求的所有分庫服務(wù)器在監(jiān)聽到集中式緩存服務(wù)器發(fā)布的更新消息時(shí)進(jìn)行同步更新。由于本實(shí)施方式增加了集中式緩存服務(wù)器,從而可以方便地將各分庫服務(wù)器中本地緩存中新增的對(duì)應(yīng)關(guān)系同步更新至集中器緩存服務(wù)器,并由集中式緩存服務(wù)器負(fù)責(zé)將該對(duì)應(yīng)關(guān)系同步至其他未處理該操作請(qǐng)求的分庫服務(wù)器,從而將各分庫服務(wù)器還需要實(shí)時(shí)與其他分庫服務(wù)器之間進(jìn)行數(shù)據(jù)同步的負(fù)擔(dān)中解放出來,降低了各分庫服務(wù)器數(shù)據(jù)同步的復(fù)雜度。
[0047]需要說明的是,本實(shí)施方式中,集中式緩存服務(wù)器中的數(shù)據(jù)(存儲(chǔ)的對(duì)應(yīng)關(guān)系)會(huì)不斷增加,導(dǎo)致占用較多的磁盤空間,因此,本實(shí)施方式中還可以根據(jù)預(yù)設(shè)條件對(duì)集中式緩存服務(wù)器保存的對(duì)應(yīng)關(guān)系進(jìn)行清理。具體而言,可以采用以下預(yù)設(shè)條件,比如:達(dá)到預(yù)設(shè)清理周期或者達(dá)到預(yù)設(shè)的保存數(shù)據(jù)量。當(dāng)預(yù)設(shè)條件為達(dá)到預(yù)設(shè)清理周期時(shí),預(yù)設(shè)清理設(shè)置可以設(shè)置為I個(gè)月,這樣,每個(gè)月會(huì)對(duì)集中式緩存服務(wù)器中的數(shù)據(jù)進(jìn)行清理,當(dāng)預(yù)設(shè)條件為達(dá)到預(yù)設(shè)的保存數(shù)據(jù)量時(shí),預(yù)設(shè)數(shù)據(jù)量比如為500GB,這樣可以避免集中式緩存服務(wù)器中的數(shù)據(jù)量過大。
[0048]本實(shí)施方式通過集中式緩存服務(wù)器對(duì)于各分庫服務(wù)器的計(jì)算結(jié)果進(jìn)行保存,然后再向其他分庫服務(wù)器發(fā)布更新消息,而其他分庫服務(wù)器則可以在較為空閑時(shí)對(duì)本地緩存進(jìn)行更新,從而使得各分庫服務(wù)器之間可以更加協(xié)調(diào)地進(jìn)行工作。并且,由于增加了集中式緩存服務(wù)器,在整個(gè)分庫數(shù)據(jù)庫系統(tǒng)進(jìn)行分庫、分表擴(kuò)展時(shí),某個(gè)分庫服務(wù)器中的分片數(shù)據(jù)庫和分片字段之間的對(duì)應(yīng)關(guān)系可能會(huì)發(fā)生變更,從而可以通過集中式緩存服務(wù)器將一個(gè)分庫服務(wù)器中的變化同步至其他分庫服務(wù)器。
[0049]上面各種方法的步驟劃分,只是為了描述清楚,實(shí)現(xiàn)時(shí)可以合并為一個(gè)步驟或者對(duì)某些步驟進(jìn)行拆分,分解為多個(gè)步驟,只要包含包括相同的邏輯關(guān)系,都在本專利的保護(hù)范圍內(nèi);對(duì)算法中或者流程中添加無關(guān)緊要的修改或者引入無關(guān)緊要的設(shè)計(jì),但不改變其算法和流程的核心設(shè)計(jì)都在該專利的保護(hù)范圍內(nèi)。
[0050]本發(fā)明第三實(shí)施方式涉及一種分庫數(shù)據(jù)庫系統(tǒng),包括:L個(gè)分片數(shù)據(jù)庫I和N個(gè)分庫服務(wù)器2,L、N均為大于I的自然數(shù)。如圖4、5所示,分庫服務(wù)器2包括解析模塊20、計(jì)算模塊21、保存模塊22、同步模塊23、發(fā)送模塊24和本地緩存25。
[0051]解析模塊用于在分庫服務(wù)器接收到來自客戶端的操作請(qǐng)求時(shí),解析得到操作請(qǐng)求攜帶的查詢條件。計(jì)算模塊用于在需要計(jì)算目標(biāo)分片數(shù)據(jù)庫時(shí),本實(shí)施方式中,計(jì)算模塊用于在該分庫服務(wù)器未在本地緩存中命中目標(biāo)分片數(shù)據(jù)庫時(shí),根據(jù)查詢條件計(jì)算所述操作請(qǐng)求對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫。保存模塊用于將查詢條件和計(jì)算模塊計(jì)算出的目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系保存至分庫服務(wù)器的本地緩存25。同步模塊用于將對(duì)應(yīng)關(guān)系同步更新至分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器。本實(shí)施方式中,同步模塊用于將對(duì)應(yīng)關(guān)系同步更新至分庫數(shù)據(jù)庫系統(tǒng)中所有未處理該操作請(qǐng)求的分庫服務(wù)器。發(fā)送模塊用于將操作請(qǐng)求發(fā)送至目標(biāo)分片數(shù)據(jù)庫。
[0052]不難發(fā)現(xiàn),本實(shí)施方式為與第一實(shí)施方式相對(duì)應(yīng)的系統(tǒng)實(shí)施例,本實(shí)施方式可與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實(shí)施方式中。
[0053]值得一提的是,本實(shí)施方式中所涉及到的各模塊均為邏輯模塊,在實(shí)際應(yīng)用中,一個(gè)邏輯單元可以是一個(gè)物理單元,也可以是一個(gè)物理單元的一部分,還可以以多個(gè)物理單元的組合實(shí)現(xiàn)。此外,為了突出本發(fā)明的創(chuàng)新部分,本實(shí)施方式中并沒有將與解決本發(fā)明所提出的技術(shù)問題關(guān)系不太密切的單元引入,但這并不表明本實(shí)施方式中不存在其它的單
J L ο
[0054]本發(fā)明第四實(shí)施方式涉及一種分庫數(shù)據(jù)庫系統(tǒng)。第四實(shí)施方式與第三實(shí)施方式的基礎(chǔ)大致相同,主要區(qū)別之處在于:在第三實(shí)施方式中,各分庫服務(wù)器之間直接進(jìn)行同步,在第四實(shí)施方式中,如圖6所示,分庫數(shù)據(jù)庫系統(tǒng)還包括集中式緩存服務(wù)器3。各分庫服務(wù)器2的同步模塊用于將查詢條件和目標(biāo)分片數(shù)據(jù)庫I的對(duì)應(yīng)關(guān)系同步更新至集中式緩存服務(wù)器3,并將集中式緩存服務(wù)器3更新的對(duì)應(yīng)關(guān)系同步更新至分庫數(shù)據(jù)庫系統(tǒng)中未處理該操作請(qǐng)求的所有分庫服務(wù)器2。
[0055]由于第二實(shí)施方式與本實(shí)施方式相互對(duì)應(yīng),因此本實(shí)施方式可與第二實(shí)施方式互相配合實(shí)施。第二實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,在第二實(shí)施方式中所能達(dá)到的技術(shù)效果在本實(shí)施方式中也同樣可以實(shí)現(xiàn),為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第二實(shí)施方式中。
[0056]在實(shí)際應(yīng)用中,如圖7所示,分庫服務(wù)器可以包含:處理器、存儲(chǔ)器和收發(fā)器,存儲(chǔ)器和收發(fā)器均連接于處理器。在分庫服務(wù)器接收到來自客戶端的操作請(qǐng)求時(shí),處理器從操作請(qǐng)求中解析出查詢條件,并訪問存儲(chǔ)器,判斷存儲(chǔ)器中是否存儲(chǔ)有與查詢條件對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫,當(dāng)在存儲(chǔ)器中未查到與查詢條件對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫時(shí),則處理器根據(jù)查詢條件計(jì)算得到目標(biāo)分片數(shù)據(jù)庫,比如,處理器根據(jù)查詢條件中的分片字段的傳入值與分片策略計(jì)算得到目標(biāo)分片數(shù)據(jù)庫或者根據(jù)查詢條件中的主鍵字段的傳入值計(jì)算得到目標(biāo)分片數(shù)據(jù)庫,處理器通過收發(fā)器將操作請(qǐng)求發(fā)送至對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫。同時(shí),處理器將查詢條件與計(jì)算得到的目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系保存入存儲(chǔ)器,并通過收發(fā)器將該對(duì)應(yīng)關(guān)系發(fā)送至集中式緩存服務(wù)器,同時(shí),處理器將該對(duì)應(yīng)關(guān)系發(fā)送至集中式緩存服務(wù)器。集中式緩存服務(wù)器對(duì)該對(duì)應(yīng)關(guān)系進(jìn)行存儲(chǔ)并向分庫數(shù)據(jù)庫系統(tǒng)中其他未處理該操作請(qǐng)求的分庫服務(wù)器發(fā)布關(guān)于該存儲(chǔ)事件的消息,監(jiān)聽到該存儲(chǔ)事件的消息的分庫服務(wù)器則從集中式緩存服務(wù)器中獲取該對(duì)應(yīng)關(guān)系,并將該對(duì)應(yīng)關(guān)系存儲(chǔ)在本地存儲(chǔ)器中。
[0057]本領(lǐng)域的普通技術(shù)人員可以理解,上述各實(shí)施方式是實(shí)現(xiàn)本發(fā)明的具體實(shí)施例,而在實(shí)際應(yīng)用中,可以在形式上和細(xì)節(jié)上對(duì)其作各種改變,而不偏離本發(fā)明的精神和范圍。
【主權(quán)項(xiàng)】
1.一種分庫數(shù)據(jù)庫系統(tǒng)的路由方法,所述分庫數(shù)據(jù)庫系統(tǒng)包括:L個(gè)分片數(shù)據(jù)庫和N個(gè)分庫服務(wù)器,所述L、N均為大于I的自然數(shù),其特征在于,包括: 所述各分庫服務(wù)器在接收到來自客戶端的操作請(qǐng)求時(shí),解析得到所述操作請(qǐng)求攜帶的查詢條件; 在需計(jì)算目標(biāo)分片數(shù)據(jù)庫時(shí),根據(jù)所述查詢條件計(jì)算所述操作請(qǐng)求對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫;所述各分庫服務(wù)器保存所述查詢條件與目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系,并將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器; 將所述操作請(qǐng)求發(fā)送至所述目標(biāo)分片數(shù)據(jù)庫。2.根據(jù)權(quán)利要求1所述的分庫數(shù)據(jù)庫系統(tǒng)的路由方法,其特征在于, 在將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器中,將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中未處理該操作請(qǐng)求的所有分庫服務(wù)器。3.根據(jù)權(quán)利要求1所述的分庫數(shù)據(jù)庫系統(tǒng)的路由方法,其特征在于,將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器,具體包括: 所述分庫服務(wù)器將所述對(duì)應(yīng)關(guān)系同步更新至集中式緩存服務(wù)器; 所述集中式緩存服務(wù)器將更新的所述對(duì)應(yīng)關(guān)系,同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器。4.根據(jù)權(quán)利要求3所述的分庫數(shù)據(jù)庫系統(tǒng)的路由方法,其特征在于, 所述集中式緩存服務(wù)器將更新的所述對(duì)應(yīng)關(guān)系,同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器,具體包括: 所述集中式緩存服務(wù)器發(fā)布關(guān)于所述對(duì)應(yīng)關(guān)系的更新消息; 所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器在監(jiān)聽到所述集中式緩存服務(wù)器發(fā)布的更新消息時(shí)進(jìn)行同步更新。5.根據(jù)權(quán)利要求1所述的分庫數(shù)據(jù)庫系統(tǒng)的路由方法,其特征在于,還包括: 在所述解析得到所述操作請(qǐng)求攜帶的查詢條件后,根據(jù)所述查詢條件在所述分庫服務(wù)器的本地緩存中定位所述目標(biāo)分片數(shù)據(jù)庫; 如果根據(jù)所述查詢條件未在所述本地緩存中命中所述目標(biāo)分片數(shù)據(jù)庫,則需計(jì)算目標(biāo)分片數(shù)據(jù)庫; 如果根據(jù)所述查詢條件在所述本地緩存中命中所述目標(biāo)分片數(shù)據(jù)庫,則將所述操作請(qǐng)求發(fā)送至所述目標(biāo)分片數(shù)據(jù)庫。6.根據(jù)權(quán)利要求1所述的分庫數(shù)據(jù)庫系統(tǒng)的路由方法,其特征在于,在根據(jù)所述查詢條件計(jì)算所述操作請(qǐng)求對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫前,還包括: 判斷所述查詢條件是否包括主鍵字段; 如果所述查詢條件未包括主鍵字段,則根據(jù)所述查詢條件中的分片路由的字段值以及所述分庫服務(wù)器支持的分片策略計(jì)算得到所述目標(biāo)分片數(shù)據(jù)庫; 如果所述查詢條件包括主鍵字段,則根據(jù)所述主鍵字段的傳入值計(jì)算所述主鍵字段對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫。7.根據(jù)權(quán)利要求6所述的分庫數(shù)據(jù)庫系統(tǒng)的路由方法,其特征在于, 在根據(jù)所述主鍵字段的傳入值計(jì)算所述主鍵字段對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫后,還包括: 將所述主鍵字段和所述主鍵字段對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫保存為鍵值對(duì)。8.根據(jù)權(quán)利要求3所述的分庫數(shù)據(jù)庫系統(tǒng)的路由方法,其特征在于,在將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器后,還包括: 根據(jù)預(yù)設(shè)條件對(duì)所述集中式緩存服務(wù)器保存的對(duì)應(yīng)關(guān)系進(jìn)行清理;其中,所述預(yù)設(shè)條件包括:達(dá)到預(yù)設(shè)清理周期或者達(dá)到預(yù)設(shè)保存數(shù)據(jù)量。9.一種分庫數(shù)據(jù)庫系統(tǒng),包括:L個(gè)分片數(shù)據(jù)庫和N個(gè)分庫服務(wù)器,所述L、N均為大于I的自然數(shù);其特征在于,所述分庫服務(wù)器包括解析模塊、計(jì)算模塊、保存模塊、同步模塊和發(fā)送豐旲塊; 所述解析模塊用于在接收到來自客戶端的操作請(qǐng)求時(shí),解析得到所述操作請(qǐng)求攜帶的查詢條件; 所述計(jì)算模塊用于在需要計(jì)算目標(biāo)分片數(shù)據(jù)庫時(shí),根據(jù)所述查詢條件計(jì)算所述操作請(qǐng)求對(duì)應(yīng)的目標(biāo)分片數(shù)據(jù)庫; 所述保存模塊用于將所述計(jì)算模塊計(jì)算出的查詢條件與目標(biāo)分片數(shù)據(jù)庫的對(duì)應(yīng)關(guān)系保存至本分庫服務(wù)器的本地緩存; 所述同步模塊用于將所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器; 所述發(fā)送模塊用于將所述操作請(qǐng)求發(fā)送至所述目標(biāo)分片數(shù)據(jù)庫。10.根據(jù)權(quán)利要求9所述的分庫數(shù)據(jù)庫系統(tǒng),其特征在于,所述分庫數(shù)據(jù)庫系統(tǒng)還包括集中式緩存服務(wù)器; 所述同步模塊用于將所述對(duì)應(yīng)關(guān)系同步更新至集中式緩存服務(wù)器,所述集中式緩存服務(wù)器將更新的所述對(duì)應(yīng)關(guān)系同步更新至所述分庫數(shù)據(jù)庫系統(tǒng)中至少一未處理該操作請(qǐng)求的分庫服務(wù)器。
【文檔編號(hào)】G06F17/30GK106055587SQ201610342340
【公開日】2016年10月26日
【申請(qǐng)日】2016年5月21日
【發(fā)明人】李秋偉
【申請(qǐng)人】樂視控股(北京)有限公司, 樂視電子商務(wù)(北京)有限公司