本申請(qǐng)涉及分布式數(shù)據(jù)庫(kù)領(lǐng)域,尤其涉及分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法及裝置。
背景技術(shù):
:為了解決單級(jí)數(shù)據(jù)庫(kù)的擴(kuò)容問題,分布式數(shù)據(jù)庫(kù)作為一種解決方法被廣泛采用。相對(duì)于傳統(tǒng)人工分庫(kù)分表的數(shù)據(jù)庫(kù)部署,分布式數(shù)據(jù)庫(kù)提供了數(shù)據(jù)分區(qū)的功能以支持?jǐn)?shù)據(jù)橫向擴(kuò)展。分布式數(shù)據(jù)庫(kù)可以使用由多個(gè)獨(dú)立節(jié)點(diǎn)組成、節(jié)點(diǎn)間采用網(wǎng)絡(luò)互聯(lián)的計(jì)算機(jī)集群實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分布式存儲(chǔ)、計(jì)算等功能。分布式數(shù)據(jù)庫(kù)可以使用相互獨(dú)立的計(jì)算節(jié)點(diǎn),則同一張數(shù)據(jù)表的不同數(shù)據(jù)可以根據(jù)分區(qū)策略被分配到不同的節(jié)點(diǎn)進(jìn)行存儲(chǔ),考慮到網(wǎng)絡(luò)時(shí)延和帶寬原因,跨節(jié)點(diǎn)的數(shù)據(jù)操作效率一般遠(yuǎn)小于節(jié)點(diǎn)內(nèi)部的數(shù)據(jù)操作效率,為了保證分布式數(shù)據(jù)庫(kù)的高效運(yùn)行,針對(duì)不同數(shù)據(jù)的數(shù)據(jù)操作請(qǐng)求需要被盡可能地路由到其對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn),其中,數(shù)據(jù)操作請(qǐng)求可以是諸如結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,SQL)請(qǐng)求等可用于請(qǐng)求操作分布式數(shù)據(jù)庫(kù)中數(shù)據(jù)的請(qǐng)求。在現(xiàn)有技術(shù)中,由于分布式數(shù)據(jù)庫(kù)的分區(qū)規(guī)則的復(fù)雜性,數(shù)據(jù)操作請(qǐng)求路由往往通過少量的服務(wù)器(稱為路由代理服務(wù)器)集中部署。具體地,分布式數(shù)據(jù)庫(kù)對(duì)應(yīng)的客戶端可以與路由代理服務(wù)器建立會(huì)話并發(fā)出數(shù)據(jù)操作請(qǐng)求,路由代理服務(wù)器接收到數(shù)據(jù)操作請(qǐng)求后,根據(jù)數(shù)據(jù)操作請(qǐng)求所依賴的數(shù)據(jù)分區(qū),將數(shù)據(jù)操作請(qǐng)求轉(zhuǎn)發(fā)到該分區(qū)所處節(jié)點(diǎn)進(jìn)行處理,由于處理結(jié)果也需要路由代理服務(wù)器轉(zhuǎn)發(fā)回到客戶端。但是,由于路由代理服務(wù)器往往只有少數(shù)機(jī)器組成,其接受數(shù)據(jù)處理請(qǐng)求的吞吐量較小,從而導(dǎo)致數(shù)據(jù)操作請(qǐng)求路由效率低。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)實(shí)施例提供分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法及裝置,用以解決現(xiàn)有技術(shù)中分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求路由方式效率低的問題。本申請(qǐng)實(shí)施例采用下述技術(shù)方案:本申請(qǐng)實(shí)施例提供的一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法,包括:客戶端接收數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名;所述客戶端根據(jù)所述關(guān)鍵字和所述表名,當(dāng)確定所述數(shù)據(jù)表為分區(qū)表時(shí),獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;所述客戶端根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。本申請(qǐng)實(shí)施例提供的一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置,所述裝置位于客戶端,包括:第一接收模塊,接收數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名;第一獲取模塊,根據(jù)所述關(guān)鍵字和所述表名,當(dāng)確定所述數(shù)據(jù)表為分區(qū)表時(shí),獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;發(fā)送模塊,根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。本申請(qǐng)實(shí)施例提供的另一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法,包括:服務(wù)端接收客戶端發(fā)送的數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名,所述數(shù)據(jù)表為分區(qū)表;所述服務(wù)端根據(jù)所述關(guān)鍵字和所述表名,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;所述服務(wù)端將所述分區(qū)策略返回給所述客戶端,以便于所述客戶端根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。本申請(qǐng)實(shí)施例提供的另一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置,所述裝置位于服務(wù)端,包括:第二接收模塊,接收客戶端發(fā)送的數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名,所述數(shù)據(jù)表為分區(qū)表;第二獲取模塊,根據(jù)所述關(guān)鍵字和所述表名,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;返回模塊,將所述分區(qū)策略返回給所述客戶端,以便于所述客戶端根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。本申請(qǐng)實(shí)施例提供的再一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法,包括:客戶端接收數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名;所述客戶端對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行解析,獲得所述表名;所述客戶端根據(jù)所述表名,當(dāng)確定所述數(shù)據(jù)表為分區(qū)表時(shí),對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行參數(shù)化處理,獲得所述關(guān)鍵字;所述客戶端根據(jù)所述表名和所述關(guān)鍵字,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;所述客戶端根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。本申請(qǐng)實(shí)施例提供的再一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置,所述裝置位于客戶端,包括:請(qǐng)求接收模塊,收數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名;解析模塊,對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行解析,獲得所述表名;參數(shù)化處理模塊,根據(jù)所述表名,當(dāng)確定所述數(shù)據(jù)表為分區(qū)表時(shí),對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行參數(shù)化處理,獲得所述關(guān)鍵字;分區(qū)策略第一獲取模塊,根據(jù)所述表名和所述關(guān)鍵字,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;請(qǐng)求轉(zhuǎn)發(fā)模塊,根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:將原來由少數(shù)服務(wù)器完成的數(shù)據(jù)操作請(qǐng)求路由工作,轉(zhuǎn)移至由分布式數(shù)據(jù)庫(kù)中的各客戶端完成,由各客戶端對(duì)數(shù)據(jù)操作請(qǐng)求進(jìn)行轉(zhuǎn)發(fā),從而可以提高接收數(shù)據(jù)處理請(qǐng)求的吞吐量,提高數(shù)據(jù)操作請(qǐng)求路由效率,因此,可以部分或全部地解決現(xiàn)有技術(shù)中的問題。附圖說明此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:圖1為本申請(qǐng)實(shí)施例提供的一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法的流程示意圖;圖2為本申請(qǐng)實(shí)施例提供的另一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法的流程示意圖;圖3為本申請(qǐng)實(shí)施例提供的再一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法的流程示意圖;圖4為本申請(qǐng)實(shí)施例提供的在一種實(shí)際應(yīng)用場(chǎng)景下,分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法對(duì)應(yīng)的一種系統(tǒng)結(jié)構(gòu)示意圖;圖5為本申請(qǐng)實(shí)施例提供的在一種實(shí)際應(yīng)用場(chǎng)景下,分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法的詳細(xì)流程示意圖;圖6為本申請(qǐng)實(shí)施例提供的對(duì)應(yīng)于圖1的分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置結(jié)構(gòu)示意圖;圖7為本申請(qǐng)實(shí)施例提供的對(duì)應(yīng)于圖2的分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置結(jié)構(gòu)示意圖;圖8為本申請(qǐng)實(shí)施例提供的對(duì)應(yīng)于圖3的分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置結(jié)構(gòu)示意圖。具體實(shí)施方式為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。本申請(qǐng)的方案的核心思想是:通過客戶端與服務(wù)端的動(dòng)態(tài)交互,以及客戶端上保存(為了提高速度,具體可以保存在相應(yīng)的緩存中)的服務(wù)于數(shù)據(jù)操作請(qǐng)求路由過程的相關(guān)數(shù)據(jù),實(shí)現(xiàn)基于復(fù)雜分區(qū)規(guī)則的全自動(dòng)數(shù)據(jù)操作請(qǐng)求路由過程。需要說明的是,本申請(qǐng)中提到的“路由”均是指分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求的路由,而非一般理解的IP數(shù)據(jù)包的路由。在本申請(qǐng)實(shí)施例中,分布式數(shù)據(jù)庫(kù)中可以有兩類數(shù)據(jù)表。第一類是未分區(qū)表,對(duì)于一張未分區(qū)表,其可以存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中的某一臺(tái)設(shè)備上;第二類是分區(qū)表,分區(qū)表被拆分為至少兩部分(每一部分可以稱為一個(gè)分區(qū)),不同分區(qū)一般分別處于分布式數(shù)據(jù)庫(kù)中的不同的設(shè)備上,和/或分別處于分布式數(shù)據(jù)庫(kù)中的某一臺(tái)設(shè)備的不同存儲(chǔ)區(qū)域中,其中,用于存儲(chǔ)數(shù)據(jù)表的設(shè)備一般為作分布式數(shù)據(jù)庫(kù)中的各服務(wù)器。在實(shí)際應(yīng)用中,涉及未分區(qū)表或分區(qū)表的數(shù)據(jù)操作請(qǐng)求都有可能需要在分布式數(shù)據(jù)庫(kù)中進(jìn)行路由,不同之處在于涉及分區(qū)表的數(shù)據(jù)操作請(qǐng)求路由更加復(fù)雜,因?yàn)?,涉及同一張分區(qū)表的不同數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)可能處于不同的服務(wù)器上,則不同數(shù)據(jù)操作請(qǐng)求相應(yīng)地可能會(huì)被轉(zhuǎn)發(fā)至不同的服務(wù)器進(jìn)行處理。本申請(qǐng)的方案對(duì)于這兩類數(shù)據(jù)表均是適用的,需要說明的是,在分區(qū)表的場(chǎng)景下,尤其能體現(xiàn)出本申請(qǐng)的方案相比于現(xiàn)有技術(shù)的優(yōu)點(diǎn)。因此,以下主要是以基于分區(qū)表的場(chǎng)景進(jìn)行說明的。下面分別從客戶端、服務(wù)端的角度對(duì)本申請(qǐng)的方案進(jìn)行詳細(xì)說明。圖1為本申請(qǐng)實(shí)施例提供的一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法的流程示意圖。圖1中的流程的執(zhí)行主體可以是分布式數(shù)據(jù)庫(kù)對(duì)應(yīng)的客戶端(以下簡(jiǎn)稱為:客戶端)。其中,分布式數(shù)據(jù)庫(kù)可以對(duì)應(yīng)多個(gè)客戶端以及多個(gè)服務(wù)端,每個(gè)客戶端可以有其對(duì)應(yīng)的至少一個(gè)服務(wù)端。本申請(qǐng)對(duì)搭載客戶端或服務(wù)端的設(shè)備并不做限定,以下僅列舉一些設(shè)備作為示例,比如,個(gè)人計(jì)算機(jī)、大中型計(jì)算機(jī)、計(jì)算機(jī)集群、手機(jī)、平板電腦、智能手表、車載移動(dòng)臺(tái)等。圖1中的流程可以包括以下步驟:S101:客戶端接收數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名。在本申請(qǐng)實(shí)施例中,所述數(shù)據(jù)操作請(qǐng)求可以是:諸如SQL請(qǐng)求等可用于請(qǐng)求操作分布式數(shù)據(jù)庫(kù)中數(shù)據(jù)的請(qǐng)求。所述數(shù)據(jù)操作請(qǐng)求可以是分布式數(shù)據(jù)庫(kù)的用戶所發(fā)送的。所述關(guān)鍵字可以為數(shù)據(jù)庫(kù)記錄中包含的鍵值對(duì)中的“鍵(key)”。以某數(shù)據(jù)操作請(qǐng)求為有如下SQL語句為例:select*fromt1wherec1=1andc2=2。該數(shù)據(jù)操作請(qǐng)求中包含的其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字為“c1”和“c2”,其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)表的表名為“t1”。S102:所述客戶端根據(jù)所述關(guān)鍵字和所述表名,當(dāng)確定所述數(shù)據(jù)表為分區(qū)表時(shí),獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略。在本申請(qǐng)實(shí)施例中,客戶端在接收到數(shù)據(jù)操作請(qǐng)求后,可以判斷數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)表是否為分區(qū)表;若是,則可以執(zhí)行步驟S102;否則,可以直接根據(jù)數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)表的表名,查詢?cè)摂?shù)據(jù)表所處的服務(wù)器,進(jìn)而將數(shù)據(jù)操作請(qǐng)求發(fā)送至該數(shù)據(jù)表所處的服務(wù)器(也即,對(duì)于對(duì)應(yīng)的數(shù)據(jù)表為非分區(qū)表的數(shù)據(jù)操作請(qǐng)求的路由過程)。客戶端和/或客戶端的服務(wù)端上可以預(yù)先保存有分布式數(shù)據(jù)庫(kù)中的分區(qū)表的分區(qū)表模式信息,基于分區(qū)表模式信息,客戶端可以判斷數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)表是否為分區(qū)表,其中,分區(qū)表模式信息可以用于表明對(duì)應(yīng)的分區(qū)表是采用哪種分區(qū)模式進(jìn)行分區(qū)的,分區(qū)模式可以包括范圍(range)分區(qū)模式、哈希(hash)分區(qū)模式等。以實(shí)際應(yīng)用中的某分區(qū)表為例,假定該分區(qū)表記作t1=(c1int,c2int,c3int),采用hash分區(qū)模式,其中,c1、c2、c3均為t1的列名,數(shù)值類型為整型。這些信息可以包含在t1對(duì)應(yīng)的分區(qū)表模式信息中,需要說明的是,該例中只是對(duì)分區(qū)表模式信息進(jìn)行了示例性說明,并非是對(duì)分區(qū)表模式信息所包含內(nèi)容的限定,只要根據(jù)分區(qū)表模式信息包含的內(nèi)容足以判斷t1是否為分區(qū)表即可。需要說明的是,在實(shí)際應(yīng)用中,可以用于判斷數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)表是否為分區(qū)表的依據(jù)并不限于分區(qū)表模式信息,所述依據(jù)還可以是用于表明對(duì)應(yīng)的數(shù)據(jù)表是否為分區(qū)表的標(biāo)記信息等,標(biāo)記信息可以攜帶在數(shù)據(jù)表的表名中,等等。在本申請(qǐng)實(shí)施例中,不同的數(shù)據(jù)操作請(qǐng)求包含的關(guān)鍵字可以不同,不同的數(shù)據(jù)操作請(qǐng)求對(duì)包含的各關(guān)鍵字的取值限定情況也可以不同,相應(yīng)地可以導(dǎo)致不同的數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)也不同,可能屬于不同的分區(qū)。步驟S102中所述的與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略可以指:可用于確定所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)屬于所述分區(qū)表劃分出的哪個(gè)分區(qū)的策略。S103:所述客戶端根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。在本申請(qǐng)實(shí)施例中,客戶端根據(jù)分區(qū)策略以及數(shù)據(jù)操作請(qǐng)求,可以確定數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)屬于分區(qū)表劃分出的哪個(gè)分區(qū),進(jìn)而,可以根據(jù)該分區(qū)的相關(guān)信息,確定該分區(qū)所處服務(wù)器(也即,數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器)的地址,并將數(shù)據(jù)操作請(qǐng)求發(fā)送給該服務(wù)器,以便于該服務(wù)器對(duì)響應(yīng)于接收到的數(shù)據(jù)操作請(qǐng)求,對(duì)數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的的數(shù)據(jù)執(zhí)行相應(yīng)的操作。通過圖1中的方法,可以將原來由少數(shù)服務(wù)器完成的數(shù)據(jù)操作請(qǐng)求路由工作,轉(zhuǎn)移至由分布式數(shù)據(jù)庫(kù)中的各客戶端完成,由各客戶端對(duì)數(shù)據(jù)操作請(qǐng)求進(jìn)行轉(zhuǎn)發(fā),從而可以提高接收數(shù)據(jù)處理請(qǐng)求的吞吐量,提高數(shù)據(jù)操作請(qǐng)求路由效率,因此,可以部分或全部地解決現(xiàn)有技術(shù)中的問題?;趫D1中的方法,本申請(qǐng)實(shí)施例還提供了圖1中的方法的一些具體實(shí)施方案,以及擴(kuò)展方案,下面進(jìn)行說明。在本申請(qǐng)實(shí)施例中,前面已經(jīng)提到,可以根據(jù)分區(qū)表模式信息或標(biāo)記信息等判斷數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)表是否為分區(qū)表,由于分區(qū)表模式信息在后續(xù)步驟的實(shí)施過程中還可以有其他用途,因此,以分區(qū)表模式信息作為判斷依據(jù)即可,一般無需采用標(biāo)記信息。在這種情況下,對(duì)于步驟S102,所述客戶端根據(jù)所述關(guān)鍵字和所述表名,當(dāng)確定所述數(shù)據(jù)表為分區(qū)表時(shí),獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略,具體可以包括:所述客戶端對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行解析,獲得所述表名;所述客戶端根據(jù)所述表名,在所述客戶端上保存的分區(qū)表模式信息和/或所述客戶端的服務(wù)端上保存的分區(qū)表模式信息中進(jìn)行查詢,以確定所述數(shù)據(jù)表是否為分區(qū)表;若是,對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行參數(shù)化處理,獲得所述關(guān)鍵字,并根據(jù)所述關(guān)鍵字和所述表名,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略。。分區(qū)表模式信息與分區(qū)表的表名可以是一一對(duì)應(yīng)的,則客戶端對(duì)數(shù)據(jù)操作請(qǐng)求進(jìn)行解析時(shí),至少可以解析出數(shù)據(jù)操作請(qǐng)求中包含的表名,確定出了表名即確定出了數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)表。進(jìn)一步地,客戶端上保存的分區(qū)表模式信息與所述客戶端的服務(wù)端上保存的分區(qū)表模式信息可以不完全一致,客戶端上保存的分區(qū)表模式信息可以是源于客戶端的服務(wù)端的。在這種情況下,上述的所述客戶端根據(jù)所述表名,在所述客戶端上保存的分區(qū)表模式信息和/或所述客戶端的服務(wù)端上保存的分區(qū)表模式信息中進(jìn)行查詢,以確定所述數(shù)據(jù)表是否為分區(qū)表,具體可以包括:所述客戶端根據(jù)所述表名,在所述客戶端上保存的分區(qū)表模式信息中進(jìn)行查詢,以確定所述客戶端上保存的分區(qū)表模式信息是否包含所述數(shù)據(jù)表對(duì)應(yīng)的分區(qū)表模式信息;若是,根據(jù)所述客戶端上保存的分區(qū)表模式信息,確定所述數(shù)據(jù)表是否為分區(qū)表;否則,根據(jù)所述表名,在所述客戶端的服務(wù)端上保存的分區(qū)表模式信息中查詢,以確定所述數(shù)據(jù)表是否為分區(qū)表,以及若查詢獲得所述數(shù)據(jù)表對(duì)應(yīng)的分區(qū)表模式信息,將所述數(shù)據(jù)表對(duì)應(yīng)的分區(qū)表模式信息保存至所述客戶端上,如此,客戶端以后可以直接使用該分區(qū)表模式信息,而無需再?gòu)姆?wù)端獲取,可以提高效率。在本申請(qǐng)實(shí)施例中,根據(jù)對(duì)于步驟S102的說明可知,不同的數(shù)據(jù)操作請(qǐng)求及分區(qū)表對(duì)應(yīng)的分區(qū)策略也可能不同,則分區(qū)策略可能有多種。這些分區(qū)策略可以部分或全部地保存在客戶端的服務(wù)端上,也可以部分或全部地保存在客戶端上。則對(duì)于步驟S102,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略,具體可以包括:所述客戶端根據(jù)所述關(guān)鍵字和所述表名,從所述客戶端和/或所述客戶端的服務(wù)端,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略。進(jìn)一步地,客戶端上保存的分區(qū)策略可以是源于客戶端的服務(wù)端的,保存的各分區(qū)策略可以分別與一個(gè)或多個(gè)參數(shù)化(或者,也可以稱為模板化)的數(shù)據(jù)操作請(qǐng)求建立有對(duì)應(yīng)關(guān)系,其中,每個(gè)參數(shù)化的數(shù)據(jù)操作請(qǐng)求可以反映某一個(gè)或某一類數(shù)據(jù)操作請(qǐng)求包含的關(guān)鍵字以及關(guān)鍵字的取值限定情況等,每一類數(shù)據(jù)操作請(qǐng)求參數(shù)化處理結(jié)果可以是相同的,參數(shù)化處理結(jié)果至少可以包括數(shù)據(jù)操作請(qǐng)求包含的關(guān)鍵字。在這種情況下,上述的所述客戶端根據(jù)所述關(guān)鍵字和所述表名,從所述客戶端和/或所述客戶端的服務(wù)端,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略,具體可以包括:所述客戶端根據(jù)所述關(guān)鍵字和所述表名,確定所述客戶端上保存的分區(qū)策略中是否包含與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;若是,從所述客戶端獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;否則,從所述客戶端的服務(wù)端上的保存的分區(qū)策略中獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略,以及將與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略保存至所述客戶端上,如此,客戶端以后可以直接使用該分區(qū)策略,而無需再?gòu)姆?wù)端獲取,可以提高效率。其中,所述關(guān)鍵字和所述表名是客戶端通過對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行解析和參數(shù)化處理而獲得的。進(jìn)一步地,若客戶端從服務(wù)端獲取分區(qū)策略,服務(wù)端也需要獲得數(shù)據(jù)操作請(qǐng)求或數(shù)據(jù)操作請(qǐng)求相關(guān)的信息才能夠確定對(duì)應(yīng)的分區(qū)策略,因此,上述的從所述客戶端的服務(wù)端獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略,具體可以包括:所述客戶端將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述客戶端的服務(wù)端,以使所述客戶端的服務(wù)端根據(jù)所述數(shù)據(jù)操作請(qǐng)求包含的所述關(guān)鍵字和所述表名,確定與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略并返回給所述客戶端??蛻舳讼蚍?wù)端發(fā)送數(shù)據(jù)操作請(qǐng)求時(shí),可以僅發(fā)送數(shù)據(jù)操作請(qǐng)求本身,也可以將數(shù)據(jù)操作請(qǐng)求攜帶在其他請(qǐng)求(比如查詢請(qǐng)求等)中,再將其他請(qǐng)求發(fā)送給服務(wù)端,總之,只要使得服務(wù)端可以獲得該數(shù)據(jù)操作操作請(qǐng)求即可。以所述其他請(qǐng)求為虛擬表查詢請(qǐng)求為例,上述的所述客戶端將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述客戶端的服務(wù)端,具體可以包括:所述客戶端將攜帶所述數(shù)據(jù)操作請(qǐng)求的虛擬表查詢請(qǐng)求發(fā)送給所述客戶端的服務(wù)端,以使所述服務(wù)端通過對(duì)應(yīng)的虛擬表,確定與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略并返回給所述客戶端。這種方式的優(yōu)點(diǎn)是:可以利用已有的數(shù)據(jù)庫(kù)查詢接口從服務(wù)端獲取分區(qū)策略,而無需專門定義用于獲取分區(qū)策略的應(yīng)用程序接口,可以節(jié)省成本,避免使用定制遠(yuǎn)程過程調(diào)用協(xié)議(RemoteProcedureCallProtocol,RPC),也可以增加方案的靈活性和通用性。在本申請(qǐng)實(shí)施例中,客戶端在獲取分區(qū)策略后,可以確定數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處分區(qū),進(jìn)而確定該分區(qū)所處服務(wù)器。一種實(shí)施方式如下:對(duì)于步驟S103,所述客戶端根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器,具體可以包括:所述客戶端根據(jù)所述分區(qū)策略以及所述關(guān)鍵字,確定所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處分區(qū)的分區(qū)物理標(biāo)識(shí);根據(jù)所述分區(qū)物理標(biāo)記,在保存的分區(qū)物理位置信息中確定所述分區(qū)物理標(biāo)記對(duì)應(yīng)的分區(qū)物理位置信息;根據(jù)所述分區(qū)物理標(biāo)記對(duì)應(yīng)的分區(qū)物理位置信息,確定所述數(shù)據(jù)所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器的地址,并將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述服務(wù)器。在本申請(qǐng)實(shí)施例中,當(dāng)分區(qū)為hash分區(qū)時(shí),可以根據(jù)數(shù)據(jù)操作請(qǐng)求的參數(shù)以及獲得的分區(qū)策略,直接計(jì)算出分區(qū)物理標(biāo)識(shí),而當(dāng)分區(qū)為range分區(qū)時(shí),還需要獲取用于表明range分區(qū)的范圍的信息,該信息一般包含在分區(qū)表模式信息中。則當(dāng)所述分區(qū)為范圍range分區(qū)時(shí),上述的所述客戶端所述分區(qū)策略以及所述關(guān)鍵字,確定所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處分區(qū)的分區(qū)物理標(biāo)識(shí),具體可以包括:所述客戶端獲取所述分區(qū)表對(duì)應(yīng)的分區(qū)表模式信息;所述客戶端根據(jù)所述分區(qū)表對(duì)應(yīng)的分區(qū)表模式信息、所述分區(qū)策略以及所述關(guān)鍵字,確定所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處分區(qū)的分區(qū)物理標(biāo)識(shí);其中,所述分區(qū)表模式信息包含用于表明所述range分區(qū)的范圍的信息。進(jìn)一步地,上述的分區(qū)物理位置信息可以保存在客戶端上和/或客戶端的服務(wù)端上,客戶端上保存的分區(qū)物理位置信息可以源于服務(wù)端。在本申請(qǐng)實(shí)施例中,根據(jù)上面的說明可知,客戶端上可以保存部分或全部用于實(shí)現(xiàn)數(shù)據(jù)操作請(qǐng)求路由的信息,比如,分區(qū)策略、分區(qū)表模式信息、分區(qū)物理位置信息等。在實(shí)際應(yīng)用中,可以將這些信息存儲(chǔ)在客戶端上的緩存(cache)中,以實(shí)現(xiàn)對(duì)這些信息的高速讀寫,從而可以提高本申請(qǐng)的方案的效率。具體地,所述客戶端上保存的分區(qū)策略和/或分區(qū)表模式信息和/或分區(qū)物理位置信息可以分別保存在對(duì)應(yīng)的緩存中,這些信息中的部分或全部可以分別保存在自己獨(dú)占的緩存中,也可以保存在共用緩存中。上面從客戶端角度對(duì)本申請(qǐng)的方案進(jìn)行了說明。基于同樣的思路,本申請(qǐng)實(shí)施例還提供了另一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法,是從服務(wù)端角度出發(fā)的,下面進(jìn)行說明。圖2為本申請(qǐng)實(shí)施例提供的另一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法的流程示意圖。圖2中的流程的執(zhí)行主體可以是分布式數(shù)據(jù)庫(kù)對(duì)應(yīng)的服務(wù)端。圖2中的流程可以包括以下步驟:S201:服務(wù)端接收客戶端發(fā)送的數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名,所述數(shù)據(jù)表為分區(qū)表。S202:所述服務(wù)端根據(jù)所述關(guān)鍵字和所述表名,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略。S203:所述服務(wù)端將所述分區(qū)策略返回給所述客戶端,以便于所述客戶端根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。通過圖2中的方法,可以將原來由少數(shù)服務(wù)器完成的數(shù)據(jù)操作請(qǐng)求路由工作,轉(zhuǎn)移至由分布式數(shù)據(jù)庫(kù)對(duì)應(yīng)的各客戶端完成,由各客戶端對(duì)數(shù)據(jù)操作請(qǐng)求進(jìn)行轉(zhuǎn)發(fā),從而可以提高接收數(shù)據(jù)處理請(qǐng)求的吞吐量,提高數(shù)據(jù)操作請(qǐng)求路由效率,因此,可以部分或全部地解決現(xiàn)有技術(shù)中的問題?;趫D2中的方法,本申請(qǐng)實(shí)施例還提供了圖2中的方法的一些具體實(shí)施方案,以及擴(kuò)展方案,下面進(jìn)行說明。在本申請(qǐng)實(shí)施例中,對(duì)于步驟S201,服務(wù)端接收客戶端發(fā)送的數(shù)據(jù)操作請(qǐng)求,具體可以包括:服務(wù)端接收客戶端發(fā)送的攜帶數(shù)據(jù)操作請(qǐng)求的虛擬表查詢請(qǐng)求。進(jìn)一步地,對(duì)于步驟S202,所述服務(wù)端根據(jù)所述數(shù)據(jù)操作請(qǐng)求,確定與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略,具體可以包括:所述服務(wù)端響應(yīng)于所述虛擬表查詢請(qǐng)求,通過對(duì)應(yīng)的虛擬表對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行解析,確定與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略。在本申請(qǐng)實(shí)施例中,對(duì)于步驟S203,所述服務(wù)端將所述分區(qū)策略返回給所述客戶端,具體可以包括:所述服務(wù)端將所述分區(qū)策略序列化;所述服務(wù)端將序列化的分區(qū)策略返回給所述服務(wù)端,以便于所述客戶端對(duì)所述序列化的分區(qū)策略反序列化后使用。對(duì)分區(qū)策略序列化的原因是為了便于通過已有的查詢接口返回分區(qū)策略,而無需專門定義用于返回分區(qū)策略的應(yīng)用程序接口。當(dāng)然,在實(shí)際應(yīng)用中,即使不對(duì)分區(qū)策略序列化,服務(wù)端仍然可以實(shí)現(xiàn)將分區(qū)策略返回給客戶端,本申請(qǐng)對(duì)具體的返回方式并不做限定,將分區(qū)策略序列化后返回僅是返回方式的一種示例。本申請(qǐng)實(shí)施例還提供了再一種分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法的流程示意圖,如圖3所示,是對(duì)圖1中流程進(jìn)一步的細(xì)化。圖3中的流程可以包括以下步驟:S301:客戶端接收數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名。S302:所述客戶端對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行解析,獲得所述表名。S303:所述客戶端根據(jù)所述表名,當(dāng)確定所述數(shù)據(jù)表為分區(qū)表時(shí),對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行參數(shù)化處理,獲得所述關(guān)鍵字。S304:所述客戶端根據(jù)所述表名和所述關(guān)鍵字,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略。S305:所述客戶端根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。上面分別從客戶端、服務(wù)端對(duì)本申請(qǐng)的方案進(jìn)行了說明。本申請(qǐng)實(shí)施例還提供了在一種實(shí)際應(yīng)用場(chǎng)景下,分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法對(duì)應(yīng)的一種系統(tǒng)結(jié)構(gòu)示意圖,以及對(duì)應(yīng)的數(shù)據(jù)操作請(qǐng)求處理方法的詳細(xì)流程示意圖,如圖4、圖5所示。圖4為本申請(qǐng)實(shí)施例提供的在一種實(shí)際應(yīng)用場(chǎng)景下,分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法的詳細(xì)流程示意圖。在圖4中,上述的數(shù)據(jù)操作請(qǐng)求具體可以為SQL請(qǐng)求,上述的分區(qū)策略具體可以為分區(qū)計(jì)算公式,需要說明的是,在實(shí)際應(yīng)用中,分區(qū)策略也可以是公式形式以外的其他形式的信息。客戶端中包含有:SQL請(qǐng)求快速參數(shù)化模塊,用于對(duì)接收到的SQL請(qǐng)求進(jìn)行參數(shù)化處理,參數(shù)化處理結(jié)果包括但不限于該SQL請(qǐng)求中的關(guān)鍵字;SQL請(qǐng)求分區(qū)計(jì)算公式緩存,用于保存分區(qū)計(jì)算公式;分區(qū)表模式緩存,用于保存分區(qū)表模式信息;分區(qū)物理位置緩存,用于保存分區(qū)物理位置信息。服務(wù)端中包含有:分區(qū)計(jì)算公式虛擬表,用于處理客戶端發(fā)送的分區(qū)計(jì)算公式虛擬表查詢請(qǐng)求;SQL請(qǐng)求解析模塊,用于解析分區(qū)計(jì)算公式虛擬表查詢請(qǐng)求中攜帶的SQL請(qǐng)求,以便于確定與該SQL請(qǐng)求對(duì)應(yīng)的分區(qū)計(jì)算公式;分區(qū)表模式記錄,用于保存分區(qū)表模式信息,以及向客戶端提供客戶端上尚未保存的分區(qū)表模式信息。圖5為本申請(qǐng)實(shí)施例提供的在一種實(shí)際應(yīng)用場(chǎng)景下,分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法的詳細(xì)流程示意圖。圖5中的詳細(xì)流程可以概括為以下七個(gè)步驟:步驟一:客戶端接收用戶發(fā)送的SQL請(qǐng)求,首先利用SQL請(qǐng)求快速參數(shù)化模塊對(duì)SQL請(qǐng)求涉及的表名進(jìn)行解析,以判斷SQL請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)表是否為分區(qū)表,如果不是分區(qū)表,則可以直接查詢分區(qū)物理標(biāo)識(shí)(比如,可以將非分區(qū)表的分區(qū)ID統(tǒng)一設(shè)置為0),如果是分區(qū)表,則進(jìn)入步驟二。步驟二:客戶端利用通過步驟一得到的參數(shù)化處理后的SQL請(qǐng)求,查詢SQL請(qǐng)求分區(qū)計(jì)算公式緩存,如果命中,則進(jìn)入步驟四,如果未命中,則進(jìn)入步驟三。步驟三:客戶端通過發(fā)送SQL請(qǐng)求,查詢服務(wù)端的分區(qū)計(jì)算公式虛擬表,服務(wù)端在接收到請(qǐng)求后,驅(qū)動(dòng)SQL請(qǐng)求解析模塊,解析請(qǐng)求并將SQL請(qǐng)求對(duì)應(yīng)的分區(qū)計(jì)算公式序列化,通過結(jié)果集合返回給客戶端。步驟四:客戶端利用服務(wù)端返回的分區(qū)計(jì)算公式,將其反序列化,再結(jié)合SQL請(qǐng)求的參數(shù),計(jì)算分區(qū)信息,并可以將該分區(qū)計(jì)算公式保存在SQL請(qǐng)求分區(qū)計(jì)算公式緩存中以便于以后使用。其中,如果SQL請(qǐng)求對(duì)應(yīng)的分區(qū)是hash分區(qū),則可以直接計(jì)算出分區(qū)物理標(biāo)識(shí),如果是range分區(qū),則進(jìn)入步驟五。步驟五:客戶端查詢r(jià)ange分區(qū)表模式緩存,如果命中,則進(jìn)入步驟七,如果未命中,則進(jìn)入步驟六。步驟六:客戶端查詢服務(wù)端的分區(qū)表模式記錄,并通過服務(wù)端返回的結(jié)果,計(jì)算分區(qū)物理標(biāo)識(shí)。步驟七:客戶端通過計(jì)算得到的分區(qū)物理標(biāo)識(shí),查詢分區(qū)物理位置緩存,找到所在的服務(wù)器的地址,并將用戶的SQL請(qǐng)求轉(zhuǎn)發(fā)至該服務(wù)器。為了進(jìn)一步地幫助理解本申請(qǐng)的方案,基于以上概括出的步驟,以下還提供了3個(gè)更具體的應(yīng)用實(shí)例,下面分別進(jìn)行說明。實(shí)例一:假設(shè)分區(qū)表為t1(c1int,c2int,c3int),其中,分區(qū)模式為hash,分區(qū)鍵為c1+c2,分區(qū)個(gè)數(shù)為256個(gè)??蛻舳水?dāng)接收到用戶的如下SQL請(qǐng)求:select*fromt1wherec1=1andc2=2;步驟一中,利用SQL請(qǐng)求快速參數(shù)化模塊解析出SQL請(qǐng)求涉及的表名為“t1”,通過查詢分區(qū)模式表緩存可知t1為分區(qū)表,進(jìn)入步驟二。步驟二中,假定SQL請(qǐng)求分區(qū)計(jì)算公式緩存中無對(duì)應(yīng)的記錄,則進(jìn)入步驟三。步驟三中,假定服務(wù)端的分區(qū)計(jì)算公式虛擬表為proxy_route,客戶端可以向服務(wù)端發(fā)送如下虛擬表查詢請(qǐng)求:selectpartition_type,partition_cnt,partition_calc_formulafromproxy_routewheresql_string=‘select*fromt1wherec1=1andc2=2’;其中,“partition_type”表示分區(qū)模式,“partition_cnt”表示分區(qū)個(gè)數(shù),“partition_calc_formula”表示分區(qū)計(jì)算公式。服務(wù)器端通過解析該請(qǐng)求,對(duì)應(yīng)地返回類似如下的結(jié)果:‘hash’,256,‘0100010111010….’;‘0100010111010….’即為對(duì)應(yīng)于用戶的SQL請(qǐng)求的分區(qū)計(jì)算公式,在此場(chǎng)景下也可以將其理解為:‘@1+@2’。其中@1為快速參數(shù)化的第一個(gè)關(guān)鍵字,此例中為c=1中的1,@2為第二個(gè)關(guān)鍵字,即為c2=2中的2。該分區(qū)計(jì)算公式的內(nèi)容依賴于快速參數(shù)化所得到的關(guān)鍵字列表,因此對(duì)于不同SQL請(qǐng)求會(huì)有所不同。步驟四中,服務(wù)器端通過計(jì)算‘@1+@2’,即‘1+2’得到3,并調(diào)動(dòng)內(nèi)建hash函數(shù)計(jì)算得到hash值,例如假定計(jì)算得到的hash為300,然后通過hash分區(qū)物理標(biāo)識(shí)的計(jì)算規(guī)則,即300取模256,得到分區(qū)物理標(biāo)識(shí)為44。進(jìn)入到步驟七(并非是range分區(qū),因此,無需執(zhí)行步驟五、步驟六),假設(shè)分區(qū)表的第44號(hào)分區(qū)的物理位置緩存為18.220.2.25,則將該請(qǐng)求轉(zhuǎn)發(fā)到地址為18.220.2.25的服務(wù)器上。另外,步驟三得到的分區(qū)計(jì)算表達(dá)式可以保存在客戶端的分區(qū)計(jì)算公式緩存中,則客戶端再次收到形式相同但關(guān)鍵字不同的請(qǐng)求后,例如select*fromt1wherec1=5andc2=7,則會(huì)命中該緩存,并利用公式計(jì)算出5+7=12,進(jìn)而執(zhí)行步驟四之后的過程。實(shí)例二:客戶端當(dāng)接收到用戶的如下SQL請(qǐng)求:select*fromt1wheret1=1andt3=2andt2=4;由于該SQL請(qǐng)求不同于實(shí)例一中的請(qǐng)求,無法命中分區(qū)計(jì)算式緩存,需要重新發(fā)送到服務(wù)端解析,解析后的分區(qū)表達(dá)式也不同于上例中的‘@1+@2’,而是變?yōu)椤瓳1+@3’,客戶端根據(jù)新的分區(qū)計(jì)算公式計(jì)算出1+4=5,并重復(fù)對(duì)應(yīng)于實(shí)例一的后續(xù)步驟。在實(shí)例一和實(shí)例二發(fā)生后,客戶端的SQL請(qǐng)求分區(qū)計(jì)算公式緩存中可以保存有如下表1中的內(nèi)容:表1實(shí)例三:假定有range分區(qū)表t2(c1int,c2int,c3int),其分區(qū)鍵為c1,分區(qū)模式為range分區(qū)模式,具體如下:“0<c1<=10→分區(qū)010<c1<=20→分區(qū)120<c1<=30→分區(qū)230<c1→分區(qū)4”。客戶端當(dāng)接收到用戶的如下SQL請(qǐng)求:select*fromt2wherec1=c2andc3=4andc2>15andc2<20;則對(duì)應(yīng)的分區(qū)計(jì)算表達(dá)式可以為(@2,@3),注意:由于c1與c2相等,則c2的條件自動(dòng)等價(jià)到c1上。假設(shè)此時(shí)分區(qū)表模式緩存中沒有對(duì)應(yīng)的記錄,則需要通過步驟五,查詢服務(wù)端的分區(qū)表模式記錄,并將服務(wù)端返回的結(jié)果保存在分區(qū)表模式緩存中,則分區(qū)表模式緩存可以保存有如下表2中的內(nèi)容:表2表名分區(qū)分區(qū)模式T20(0,10]T21(10,20]T22(20,30]T23(30,40)通過分區(qū)計(jì)算公式(@2,@3),可以得到計(jì)算結(jié)果落在分區(qū)區(qū)間(15,20)中,查詢可得1號(hào)分區(qū),進(jìn)而可以執(zhí)行后續(xù)步驟,在此不贅述。上面對(duì)本申請(qǐng)的方案進(jìn)行了詳細(xì)說明。下面再對(duì)本申請(qǐng)的方案的優(yōu)點(diǎn)集中總結(jié)如下:第一,充分利用客戶端的緩存,在同一數(shù)據(jù)操作請(qǐng)求反復(fù)出現(xiàn)的場(chǎng)景下避免多次訪問服務(wù)端而可以直接計(jì)算出分區(qū)物理標(biāo)識(shí),可以加快數(shù)據(jù)操作請(qǐng)求轉(zhuǎn)發(fā)速度;第二,客戶端與服務(wù)端直接可以通過分區(qū)表模式記錄內(nèi)部表訪問所需的分區(qū)表模式信息,減少了對(duì)服務(wù)端代碼的依賴,這樣可以大大簡(jiǎn)化客戶端的代碼,有利于實(shí)現(xiàn)客戶端與服務(wù)端的解耦。第三,通過緩存分區(qū)計(jì)算表達(dá)式,可以處理很多復(fù)雜的數(shù)據(jù)操作請(qǐng)求及復(fù)雜的分區(qū)模式,可以提高客戶端進(jìn)行數(shù)據(jù)操作請(qǐng)求路由的準(zhǔn)確率。第四、客戶端可以對(duì)緩存策略進(jìn)行控制,針對(duì)不同的內(nèi)存配置、時(shí)延容忍度采用不同的緩存策略,靈活性較高。第五、使用通用的虛擬表模式實(shí)現(xiàn)客戶端與服務(wù)端的交互,避免了使用定制RPC,增加了方案的靈活性和通用性,有利于客戶端與服務(wù)端相互獨(dú)立地維護(hù)、升級(jí),提高了兼容性。以上為本申請(qǐng)實(shí)施例提供的分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理方法,基于同樣的思路,本申請(qǐng)實(shí)施例還提供相應(yīng)的分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置,如圖6、圖7、圖8所示。圖6為本申請(qǐng)實(shí)施例提供的對(duì)應(yīng)于圖1的分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置結(jié)構(gòu)示意圖,該裝置位于客戶端,包括:第一接收模塊601,接收數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名;第一獲取模塊602,根據(jù)所述關(guān)鍵字和所述表名,當(dāng)確定所述數(shù)據(jù)表為分區(qū)表時(shí),獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;發(fā)送模塊603,根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器??蛇x地,第一獲取模塊602,對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行解析,獲得所述表名,根據(jù)所述表名,在所述客戶端上保存的分區(qū)表模式信息和/或所述客戶端的服務(wù)端上保存的分區(qū)表模式信息中進(jìn)行查詢,以確定所述數(shù)據(jù)表是否為分區(qū)表,若是,對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行參數(shù)化處理,獲得所述關(guān)鍵字,并根據(jù)所述關(guān)鍵字和所述表名,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略??蛇x地,第一獲取模塊602,根據(jù)所述表名,在所述客戶端上保存的分區(qū)表模式信息中進(jìn)行查詢,以確定所述客戶端上保存的分區(qū)表模式信息是否包含所述數(shù)據(jù)表對(duì)應(yīng)的分區(qū)表模式信息,若是,根據(jù)所述客戶端上保存的分區(qū)表模式信息,確定所述數(shù)據(jù)表是否為分區(qū)表,否則,根據(jù)所述表名,在所述客戶端的服務(wù)端上保存的分區(qū)表模式信息中查詢,以確定所述數(shù)據(jù)表是否為分區(qū)表,以及若查詢獲得所述數(shù)據(jù)表對(duì)應(yīng)的分區(qū)表模式信息,將所述數(shù)據(jù)表對(duì)應(yīng)的分區(qū)表模式信息保存至所述客戶端上??蛇x地,第一獲取模塊602,根據(jù)所述關(guān)鍵字和所述表名,從所述客戶端和/或所述客戶端的服務(wù)端,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略??蛇x地,第一獲取模塊602,根據(jù)所述關(guān)鍵字和所述表名,確定所述客戶端上保存的分區(qū)策略中是否包含與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略,若是,從所述客戶端獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略,否則,從所述客戶端的服務(wù)端獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略,以及將與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略保存至所述客戶端上??蛇x地,第一獲取模塊602,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述客戶端的服務(wù)端,以使所述客戶端的服務(wù)端根據(jù)所述數(shù)據(jù)操作請(qǐng)求包含的所述關(guān)鍵字和所述表名,確定與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略并返回給所述客戶端。可選地,第一獲取模塊602,將攜帶所述數(shù)據(jù)操作請(qǐng)求的虛擬表查詢請(qǐng)求發(fā)送給所述客戶端的服務(wù)端,以使所述服務(wù)端通過對(duì)應(yīng)的虛擬表,確定與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略并返回給所述客戶端??蛇x地,發(fā)送模塊603,根據(jù)所述分區(qū)策略以及所述關(guān)鍵字,確定所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處分區(qū)的分區(qū)物理標(biāo)識(shí),根據(jù)所述分區(qū)物理標(biāo)記,在保存的分區(qū)物理位置信息中確定所述分區(qū)物理標(biāo)記對(duì)應(yīng)的分區(qū)物理位置信息,根據(jù)所述分區(qū)物理標(biāo)記對(duì)應(yīng)的分區(qū)物理位置信息,確定所述數(shù)據(jù)所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器的地址,并將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述服務(wù)器??蛇x地,當(dāng)所述分區(qū)為范圍range分區(qū)時(shí),發(fā)送模塊603,獲取所述分區(qū)表對(duì)應(yīng)的分區(qū)表模式信息,根據(jù)所述分區(qū)表對(duì)應(yīng)的分區(qū)表模式信息、所述分區(qū)策略以及所述關(guān)鍵字,確定所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處分區(qū)的分區(qū)物理標(biāo)識(shí)??蛇x地,所述客戶端上保存的分區(qū)策略和/或分區(qū)表模式信息和/或分區(qū)物理位置信息分別保存在對(duì)應(yīng)的緩存中。圖7為本申請(qǐng)實(shí)施例提供的對(duì)應(yīng)于圖2的分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置結(jié)構(gòu)示意圖,該裝置位于服務(wù)端,包括:第二接收模塊701,接收客戶端發(fā)送的數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名,所述數(shù)據(jù)表為分區(qū)表;第二獲取模塊702,根據(jù)所述關(guān)鍵字和所述表名,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;返回模塊703,將所述分區(qū)策略返回給所述客戶端,以便于所述客戶端根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器??蛇x地,第二接收模塊701,接收客戶端發(fā)送的攜帶數(shù)據(jù)操作請(qǐng)求的虛擬表查詢請(qǐng)求。可選地,第二獲取模塊702,響應(yīng)于所述虛擬表查詢請(qǐng)求,通過對(duì)應(yīng)的虛擬表對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行解析,確定與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略??蛇x地,返回模塊703,將所述分區(qū)策略序列化,將序列化的分區(qū)策略返回給所述服務(wù)端,以便于所述客戶端對(duì)所述序列化的分區(qū)策略反序列化后使用。圖8為本申請(qǐng)實(shí)施例提供的對(duì)應(yīng)于圖3的分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)操作請(qǐng)求處理裝置結(jié)構(gòu)示意圖,該裝置位于客戶端,包括:請(qǐng)求接收模塊801,收數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求中包含其所請(qǐng)求操作的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字和數(shù)據(jù)表的表名;解析模塊802,對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行解析,獲得所述表名;參數(shù)化處理模塊803,根據(jù)所述表名,當(dāng)確定所述數(shù)據(jù)表為分區(qū)表時(shí),對(duì)所述數(shù)據(jù)操作請(qǐng)求進(jìn)行參數(shù)化處理,獲得所述關(guān)鍵字;分區(qū)策略獲取模塊804,根據(jù)所述表名和所述關(guān)鍵字,獲取與所述數(shù)據(jù)操作請(qǐng)求和所述分區(qū)表對(duì)應(yīng)的分區(qū)策略;請(qǐng)求轉(zhuǎn)發(fā)模塊805,根據(jù)所述分區(qū)策略,將所述數(shù)據(jù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)操作請(qǐng)求所請(qǐng)求操作的數(shù)據(jù)所處的服務(wù)器。本申請(qǐng)?zhí)峁┑难b置是與本申請(qǐng)?zhí)峁┑姆椒ㄒ灰粚?duì)應(yīng)的,因此,所述裝置也具有與所述方法類似的有益技術(shù)效果,由于上面已經(jīng)對(duì)所述方法的有益技術(shù)效果進(jìn)行了詳細(xì)說明,因此,這里不再贅述所述裝置的有益技術(shù)效果。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flashRAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。當(dāng)前第1頁1 2 3