專利名稱::處理數(shù)據(jù)庫操作請求的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)庫技術(shù),尤其涉及一種處理數(shù)據(jù)庫操作請求的方法和設(shè)備。
背景技術(shù):
:在計算機(jī)時代,出現(xiàn)了專門用于存儲、管理數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng),而且數(shù)據(jù)庫系統(tǒng)在網(wǎng)絡(luò)應(yīng)用上日益普及。一般來說,數(shù)據(jù)庫系統(tǒng)中會包括一個或者多個數(shù)據(jù)庫,專門用于存儲某個應(yīng)用的數(shù)據(jù)。在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)一般分布在多張數(shù)據(jù)表中,每張數(shù)據(jù)表存在某個方面的數(shù)據(jù)。例如在一個常用的網(wǎng)絡(luò)應(yīng)用的數(shù)據(jù)庫中,有一張數(shù)據(jù)表存儲用戶的基本信息,有另一張數(shù)據(jù)表存儲用戶的登錄信息等。隨著時代的發(fā)展和技術(shù)的進(jìn)步,目前人類社會每天產(chǎn)生的數(shù)據(jù)量相當(dāng)驚人,海量數(shù)據(jù)造成關(guān)系型數(shù)據(jù)庫(例如諸如MySQL)的數(shù)據(jù)表容量越來越大,一張表的條目(記錄)數(shù)可達(dá)幾千萬甚至上億條。數(shù)據(jù)庫在對數(shù)據(jù)表進(jìn)行處理時,需要鎖表、操作、解鎖等幾個階段,一張數(shù)據(jù)表的記錄數(shù)過多,會造成很多操作同時等待解鎖,造成數(shù)據(jù)庫處理大型數(shù)據(jù)表時顯得力不從心,性能下降嚴(yán)重。為了提高數(shù)據(jù)庫操作數(shù)據(jù)表的性能,有必要將邏輯上的一張較大的表拆分成物理上的多張較小的子表。最常見的分表方案是在表結(jié)構(gòu)里設(shè)置一個特殊的字段,以下稱其為分表字段,其類型一般為整數(shù),也可能為字符串等等。不同的記錄根據(jù)分表字段值的不同,使用哈希等方式,將分表字段值與某個編號的子表關(guān)聯(lián)。此方案最大的缺點是需要應(yīng)用編寫人員自己控制數(shù)據(jù)與具體的子表之間的對應(yīng)關(guān)系,應(yīng)用編寫人員必須對數(shù)據(jù)庫底層子表的實現(xiàn)方式非常了解,在編寫具體的業(yè)務(wù)邏輯的同時,還要分心于邏輯表與物理子表的關(guān)系處理上,開發(fā)效率受到嚴(yán)重影響。其次,此方案的分表策略定得過于死板,不夠靈活。如果要調(diào)整子表數(shù)量或是修改分表字段值與子表序號的對應(yīng)關(guān)系,則應(yīng)用編寫人員必須也對代碼作出相應(yīng)修改,才能使應(yīng)用在新的分表架構(gòu)上正確運行,應(yīng)用系統(tǒng)的維護(hù)成本很高。
發(fā)明內(nèi)容鑒于上述問題,提出了本發(fā)明,以便提供一種克服上述問題或者至少部分地解決上述問題的分配數(shù)據(jù)庫操作請求的方法和設(shè)備。依據(jù)本發(fā)明的一個方面,提供了一種處理數(shù)據(jù)庫操作請求的方法,其包括步驟接收對于數(shù)據(jù)庫的操作請求;解析該操作請求,以獲取該操作請求中的第一數(shù)據(jù)表名;根據(jù)分表信息解析該操作請求,以獲取該操作請求中與該第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段以及與該分表字段相對應(yīng)的字段值,其中該分表信息包括要進(jìn)行分表的數(shù)據(jù)表的數(shù)據(jù)表名以及與該數(shù)據(jù)表名相關(guān)聯(lián)的分表字段;根據(jù)該分表信息和所獲取的分表字段相對應(yīng)的字段值,將該操作請求中的第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名;以及將修改后的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器??蛇x地,根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的方法還包括步驟如果該操作請求中不存在第一數(shù)據(jù)表名,則將該操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器??蛇x地,根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的方法還包括步驟在該根據(jù)分表信息解析操作請求的步驟中,如果該第一數(shù)據(jù)表名不在該分表信息中,則將該操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器;如果該第一數(shù)據(jù)表名在該分表信息中、但未從該操作請求中解析出與該第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段及該分表字段相對應(yīng)的字段值,則返回錯誤提/Jnο可選地,在根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的方法中,該分表信息還包括要進(jìn)行分表的數(shù)據(jù)表的子表數(shù)量,該將操作請求中的第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名的步驟還包括根據(jù)與該分表字段相對應(yīng)的字段值以及該數(shù)據(jù)表的子表數(shù)量,將該第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名??蛇x地,在根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的方法中,該第二數(shù)據(jù)表名對應(yīng)于第一數(shù)據(jù)表分表之后生成的多個第二數(shù)據(jù)表之一,其包括第一數(shù)據(jù)表名以及第二數(shù)據(jù)表標(biāo)識。可選地,在根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的方法中,該操作請求包括數(shù)據(jù)庫程序語言語句。可選地,在根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的方法中,該數(shù)據(jù)庫程序語言語句是結(jié)構(gòu)化查詢語言SQL語句,該數(shù)據(jù)庫是MySQL數(shù)據(jù)庫。依據(jù)本發(fā)明的另一方面,提供了一種處理數(shù)據(jù)庫操作請求的設(shè)備,包括應(yīng)用程序接口,適于從應(yīng)用服務(wù)器接收對于數(shù)據(jù)庫的操作請求;解析器,適于解析該操作請求,以獲取該操作請求中的第一數(shù)據(jù)表名,并且根據(jù)分表信息解析該操作請求,以獲取該操作請求中與該第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段以及與該分表字段相對應(yīng)的字段值,其中該分表信息包括要進(jìn)行分表的數(shù)據(jù)表的數(shù)據(jù)表名以及與該數(shù)據(jù)表名相關(guān)聯(lián)的分表字段;操作請求修改器,適于根據(jù)該分表信息和所獲取的分表字段相對應(yīng)的字段值,將該操作請求中的第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名;以及數(shù)據(jù)庫接口,適于將修改后的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器??蛇x地,在根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的設(shè)備中,如果該操作請求中不存在第一數(shù)據(jù)表名,則該數(shù)據(jù)庫接口將該操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。可選地,在根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的設(shè)備中,在該解析器根據(jù)分表信息解析操作請求時,如果該第一數(shù)據(jù)表名不在該分表信息中,則該數(shù)據(jù)庫接口將該操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器;如果該第一數(shù)據(jù)表名在該分表信息中、但該解析器未從該操作請求中解析出與該第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段及該分表字段相對應(yīng)的字段值,則返回錯誤提示??蛇x地,在根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的設(shè)備中,該分表信息還包括要進(jìn)行分表的數(shù)據(jù)表的子表數(shù)量,該操作請求修改器根據(jù)與該分表字段相對應(yīng)的字段值以及該數(shù)據(jù)表的子表數(shù)量,將該第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名。本發(fā)明提供了上述處理數(shù)據(jù)庫操作請求的方法和設(shè)備。根據(jù)本發(fā)明的實施例,根據(jù)來自數(shù)據(jù)庫服務(wù)器的分表信息,解析應(yīng)用服務(wù)器對于數(shù)據(jù)庫的操作請求,以獲取第一數(shù)據(jù)表名、與其相關(guān)聯(lián)的分表字段以及字段值,并且根據(jù)該分表信息和字段值將第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名,并將修改后的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。由此,使得分表的過程對應(yīng)用服務(wù)透明化,應(yīng)用編寫人員不再需要控制數(shù)據(jù)與具體的子表之間的對應(yīng)關(guān)系,無論物理上存在多少張子表,應(yīng)用編寫人員所面對的是始終是邏輯上的一張表,應(yīng)用編寫人員不再需要關(guān)心數(shù)據(jù)庫分表策略的實現(xiàn)細(xì)節(jié),可以專注于編寫具體的業(yè)務(wù)代碼,只需在對于數(shù)據(jù)庫的操作請求中包含分表字段的值即可。另外,根據(jù)本發(fā)明的實施例,通過更新分表信息,可以避免子表數(shù)量等分表信息的變化對應(yīng)用代碼的影響,應(yīng)用只需要開發(fā)一次,不再需要由于數(shù)據(jù)庫分表信息的調(diào)整而修改應(yīng)用程序本身,極大地降低了維護(hù)成本。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖1是根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的方法的流程圖;圖2是根據(jù)本發(fā)明的一個實施例的處理數(shù)據(jù)庫操作請求的方法各步驟的流程圖;以及圖3是根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的設(shè)備以及系統(tǒng)的框圖。具體實施例方式下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。圖1示意性地圖示了根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的方法的流程圖,并且圖2示意性地圖示了根據(jù)本發(fā)明的一個實施例的處理數(shù)據(jù)庫操作請求的方法各步驟的流程圖。下面將接合圖1和圖2對本發(fā)明進(jìn)行詳細(xì)的描述。根據(jù)本發(fā)明的實施例,數(shù)據(jù)庫例如可以是MySQL數(shù)據(jù)庫。在下文中,以MySQL數(shù)據(jù)庫為例,對本發(fā)明的原理進(jìn)行描述,然而,這只是為了示例的目的,本發(fā)明的范圍并不限于此,本發(fā)明的原理同樣適用于其它類型的數(shù)據(jù)庫,例如IBMDB2,Oracle10等數(shù)據(jù)庫。如圖1所示,根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的方法100適于步驟S101,其中,接收對于數(shù)據(jù)庫的操作請求。該對于數(shù)據(jù)庫的操作請求例如來自于一個或者多個應(yīng)用服務(wù)器。同樣參見圖2,首先,可以存儲來自例如一個或者多個數(shù)據(jù)庫服務(wù)器的分表信息。根據(jù)本發(fā)明的實施例,該分表信息可以包括要進(jìn)行分表的數(shù)據(jù)表的數(shù)據(jù)表名以及與該數(shù)據(jù)表名相關(guān)聯(lián)的分表字段。接下來,在步驟SlOl中,從一個或者多個應(yīng)用服務(wù)器接收對于數(shù)據(jù)庫的操作請求,如果沒有接收到,則繼續(xù)等待;如果已經(jīng)接收到,則進(jìn)入下一步驟,即圖1所示的步驟S103。根據(jù)本發(fā)明的實施例,該操作請求可以包括數(shù)據(jù)庫程序語言語句??蛇x地,該數(shù)據(jù)庫程序語言語句可以是SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)語句。然而,SQL語言和SQL語句僅為示例,用于幫助讀者理解本發(fā)明的原理,本發(fā)明的范圍并不限于此,而是同樣適用于其它適當(dāng)?shù)臄?shù)據(jù)庫程序語言和相對應(yīng)的語句。在步驟S103中,解析該操作請求,以獲取該操作請求中的第一數(shù)據(jù)表名(例如table)。此時,如果該操作請求中不存在第一數(shù)據(jù)表名(例如不存在table),則說明該操作請求不是針對某張表的操作,那么就可以將操作請求直接發(fā)送給數(shù)據(jù)庫服務(wù)器。而如果操作請求中存在第一數(shù)據(jù)表名,則執(zhí)行如圖1所示的步驟S105,其中,根據(jù)分表信息解析該操作請求,以獲取該操作請求中與第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段以及與該分表字段相對應(yīng)的字段值。例如,假設(shè)將數(shù)據(jù)表table拆分為100張子表,分別稱為table_0、tablej、…、table_99,整數(shù)型字段id被設(shè)置為分表字段。此時,如果操作請求中所包括的SQL語句為SELECT*FR0MtableWHEREname=“zhangsan”ANDid=123,則操作請求中與第一數(shù)據(jù)表名table相關(guān)聯(lián)的分表字段為id,與該分表字段相對應(yīng)的字段值為123。在步驟S105中,如果第一數(shù)據(jù)表名不在分表信息中,則說明第一數(shù)據(jù)表名所代表的數(shù)據(jù)表未被拆分為多張分表,那么就可以直接將操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。而如果第一數(shù)據(jù)表名在該分表信息中、但未從操作請求中解析出與第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段及該分表字段相對應(yīng)的字段值,則無法判斷該操作請求是針對哪張子表進(jìn)行操作,就可以返回錯誤提示,例如,向應(yīng)用服務(wù)器返回“操作請求錯誤,未包含分表字段”的錯誤提示。接下來,執(zhí)行步驟S107,其中,根據(jù)分表信息和所獲取的分表字段相對應(yīng)的字段值,將操作請求中的第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名。根據(jù)本發(fā)明的實施例,分表信息還可以包括要進(jìn)行分表的數(shù)據(jù)表的子表數(shù)量,在步驟S107中,可以根據(jù)與分表字段相對應(yīng)的字段值以及數(shù)據(jù)表的子表數(shù)量,將第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名。根據(jù)本發(fā)明的實施例,第二數(shù)據(jù)表名對應(yīng)于第一數(shù)據(jù)表分表之后生成的多個第二數(shù)據(jù)表之一,其包括第一數(shù)據(jù)表名以及第二數(shù)據(jù)表標(biāo)識。例如,仍以上述SQL語句SELECT*FR0MtableWHEREname=“zhangsan”ANDid=123為例進(jìn)行描述。根據(jù)與分表字段相對應(yīng)的字段值123以及數(shù)據(jù)表的子表數(shù)量100,可以采用求模方式的分表策略,即,123對100求模,得到23,則說明該SQL語句實際是要對子表table_23進(jìn)行操作,第二數(shù)據(jù)表名即為table_23,包括第一數(shù)據(jù)表名table以及第二數(shù)據(jù)表標(biāo)識23,從而可以將操作請求中的SQL語句修改為SELECT*FR0Mtable_23WHEREname=“zhangsan”ANDid=123,即,從子表table_23中選擇“zhangsan”字段進(jìn)行操作。之后,如圖1所示,執(zhí)行步驟S109,將修改后的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。例如,將包括修改后的SQL語句SELECT*FR0Mtable_23WHEREname=“zhangsan”ANDid=123的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。根據(jù)本發(fā)明的實施例,如圖2所示,方法100還可以包括以下步驟檢查分表信息是否已經(jīng)更新(例如,子表數(shù)量變化,新拆分了某些表等),如果已更新,則在上述步驟SlOl之前,存儲更新后的分表信息,并在步驟S105中,根據(jù)更新后的分表信息來解析操作請求。下面,為了幫助讀者理解本發(fā)明,結(jié)合一個具體示例來說明本發(fā)明的原理。假設(shè)第一數(shù)據(jù)表名為person的數(shù)據(jù)表被分為10張子表,分表字段為pid,第一數(shù)據(jù)表名為student的數(shù)據(jù)表被分為100張子表,分表字段為no,則分表信息可以如下table[I]={person,10,pid},table[2]={student,100,no}。假設(shè)操作請求中包括的SQL語句為SELECT*FR0MpersonWHEREpid=123。首先,解析操作請求,獲取第一數(shù)據(jù)表名person,然后根據(jù)分表信息解析得到分表字段pid以及與分表字段相對應(yīng)的字段值123,將123對10求模,得到結(jié)果3。于是,就可以將原SQL語句中的第一數(shù)據(jù)表名person修改為第二數(shù)據(jù)表名person_3,然后將包括修改后的SQL語句SELECT*FR0Mperson_3WHEREpid=123的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器來執(zhí)行。另外,假設(shè)操作請求中包括的SQL語句為INSERTINTOstudent('no','name')VALUES(246,‘zhangsan’)。首先,解析操作請求,獲取第一數(shù)據(jù)表名student,然后根據(jù)分表信息解析得到分表字段no以及與分表字段相對應(yīng)的字段值,將246對100取模,得到結(jié)果46。于是,就可以將原SQL語句中的第一數(shù)據(jù)表名student修改為第二數(shù)據(jù)表名student_46,然后將包括修改后的SQL語句INSERTINTOstudent_46('no','name')VALUES(246,‘zhangsan’)的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器來執(zhí)行。本發(fā)明公開了一種處理數(shù)據(jù)庫操作請求的方法。根據(jù)本發(fā)明的實施例,根據(jù)來自數(shù)據(jù)庫服務(wù)器的分表信息,解析應(yīng)用服務(wù)器對于數(shù)據(jù)庫的操作請求,以獲取第一數(shù)據(jù)表名、與其相關(guān)聯(lián)的分表字段以及字段值,并且根據(jù)分表信息和字段值將第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名,并將修改后的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。由此,使得分表的過程對應(yīng)用透明化,應(yīng)用編寫人員不再需要控制數(shù)據(jù)與具體的子表之間的對應(yīng)關(guān)系,無論物理上存在多少張子表,應(yīng)用編寫人員所面對的是始終是邏輯上的一張表,應(yīng)用編寫人員不再需要關(guān)心數(shù)據(jù)庫分表策略的實現(xiàn)細(xì)節(jié),可以專注于編寫具體的業(yè)務(wù)代碼,只需在對于數(shù)據(jù)庫的操作請求中包含分表字段的值即可。另外,根據(jù)本發(fā)明的實施例,通過更新分表信息,可以避免子表數(shù)量等分表信息的變化對應(yīng)用的影響,應(yīng)用只需要開發(fā)一次,不再需要由于數(shù)據(jù)庫分表信息的調(diào)整而修改應(yīng)用本身,極大地降低了維護(hù)成本。與上述方法100相對應(yīng),本發(fā)明還提供了一種處理數(shù)據(jù)庫操作請求的設(shè)備200。圖3示意性地圖示了根據(jù)本發(fā)明的實施例的處理數(shù)據(jù)庫操作請求的設(shè)備200。參見圖3,設(shè)備200主要包括應(yīng)用程序接口201、解析器203、操作請求修改器205、以及數(shù)據(jù)庫接口207。根據(jù)本發(fā)明的實施例,應(yīng)用接口201從應(yīng)用服務(wù)器300-1到300_n接收對于數(shù)據(jù)庫的操作請求。然后解析器203對應(yīng)用接口201接收的操作請求進(jìn)行解析,以獲取操作請求中的第一數(shù)據(jù)表名,并且根據(jù)分表信息解析操作請求,以獲取操作請求中與第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段以及與該分表字段相對應(yīng)的字段值。分表信息包括要進(jìn)行分表的數(shù)據(jù)表的數(shù)據(jù)表名以及與該數(shù)據(jù)表名相關(guān)聯(lián)的分表字段。例如,假設(shè)第一數(shù)據(jù)表名為person的數(shù)據(jù)表被分為10張子表,分表字段為pid,第一數(shù)據(jù)表名為student的數(shù)據(jù)表被分為100張子表,分表字段為no,則分表信息可以如下table[I]={person,10,pid},table[2]={student,100,no}。操作請求修改器205根據(jù)分表信息和解析器203所獲取的分表字段相對應(yīng)的字段值,將操作請求中的第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名。假設(shè)操作請求中包括的SQL語句為SELECT*FR0MpersonWHEREpid=123。解析器203獲取的第一數(shù)據(jù)表名為person,與分表字段pid相對應(yīng)的字段值123。操作請求修改器205將123對10求模,得到結(jié)果3。于是,操作請求修改器205就可以將原SQL語句中的第一數(shù)據(jù)表名person修改為第二數(shù)據(jù)表名person_3。數(shù)據(jù)庫接口207將操作請求修改器205修改后的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。應(yīng)用接口201可以用于執(zhí)行上述處理數(shù)據(jù)庫操作請求的方法100中的步驟S101,解析器203可以用于執(zhí)行步驟S103和S105,操作請求修改器205可以用于執(zhí)行步驟S107,數(shù)據(jù)庫接口可以用于執(zhí)行步驟S109。根據(jù)本發(fā)明的實施例,操作請求可以包括數(shù)據(jù)庫程序語言語句??蛇x地,數(shù)據(jù)庫程序語言語句可以是SQL語句,數(shù)據(jù)庫可以是MySQL數(shù)據(jù)庫。如上所述,SQL語句和MySQL數(shù)據(jù)庫僅為本發(fā)明的示例,并不意在限制本發(fā)明。根據(jù)本發(fā)明的實施例,如果解析器203解析操作請求時、操作請求中不存在第一數(shù)據(jù)表名,則說明該操作請求不是針對某張表的操作,那么數(shù)據(jù)庫接口207就可以將操作請求直接發(fā)送給數(shù)據(jù)庫服務(wù)器。而在解析器203根據(jù)分表信息解析操作請求時,如果第一數(shù)據(jù)表名不在分表信息中,則說明第一數(shù)據(jù)表名所代表的數(shù)據(jù)表未被拆分為多張分表,那么數(shù)據(jù)庫接口207就可以將操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。如果第一數(shù)據(jù)表名在分表信息中、但解析器203未從操作請求中解析出與第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段及該分表字段相對應(yīng)的字段值,則返回錯誤提示,例如,向應(yīng)用服務(wù)器300-1到300-n返回“操作請求錯誤,未包含分表字段”的錯誤提示。根據(jù)本發(fā)明的實施例,分表信息還包括要進(jìn)行分表的數(shù)據(jù)表的子表數(shù)量,操作請求修改器205根據(jù)與分表字段相對應(yīng)的字段值以及數(shù)據(jù)表的子表數(shù)量,將第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名,第二數(shù)據(jù)表名對應(yīng)于第一數(shù)據(jù)表分表之后生成的多個第二數(shù)據(jù)表之一,其包括第一數(shù)據(jù)表名以及第二數(shù)據(jù)表標(biāo)識。仍以上面針對方法100描述的SQL語句為例,可以將第一數(shù)據(jù)表名table修改為第二數(shù)據(jù)表名table_23,然后將包括修改后的SQL語句SELECT*FR0Mtable_23WHEREname=“zhangsan”ANDid=123的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。根據(jù)本發(fā)明的實施例,數(shù)據(jù)庫接口207還可以檢查分表信息是否已經(jīng)更新(例如,子表數(shù)量變化,新拆分了某些表等),如果已更新,則存儲更新后的分表信息,供解析器203用來解析操作請求。由于上述各設(shè)備實施例與前述各方法實施例相對應(yīng),因此不再對各設(shè)備實施例進(jìn)行詳細(xì)描述。根據(jù)本發(fā)明的又一方面,還提供了一種分配數(shù)據(jù)庫操作請求的系統(tǒng)1000。參見圖3,系統(tǒng)1000包括上述設(shè)備200;—個或者多個應(yīng)用服務(wù)器300-1,…,300_n,適于向設(shè)備200發(fā)送對于數(shù)據(jù)庫的操作請求;以及數(shù)據(jù)庫服務(wù)器400-1,…,400-n,適于向設(shè)備200提供分表信息,并且接收設(shè)備200發(fā)送的修改后的操作請求。在此提供的算法和顯示不與任何特定計算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的裝置中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個裝置中??梢园褜嵤├械娜舾赡K組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者模塊中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個裝置實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的裝置中的一些或者全部模塊的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。權(quán)利要求1.一種處理數(shù)據(jù)庫操作請求的方法(100),包括步驟接收對于數(shù)據(jù)庫的操作請求(SlOl);解析所述操作請求,以獲取所述操作請求中的第一數(shù)據(jù)表名(S103);根據(jù)分表信息解析所述操作請求,以獲取所述操作請求中與所述第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段以及與該分表字段相對應(yīng)的字段值,其中所述分表信息包括要進(jìn)行分表的數(shù)據(jù)表的數(shù)據(jù)表名以及與該數(shù)據(jù)表名相關(guān)聯(lián)的分表字段(S105);根據(jù)所述分表信息和所獲取的分表字段相對應(yīng)的字段值,將所述操作請求中的第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名(S107);以及將修改后的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器(S109)。2.如權(quán)利要求1所述的方法,還包括步驟如果所述操作請求中不存在第一數(shù)據(jù)表名,則將所述操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。3.如權(quán)利要求1或2所述的方法,還包括步驟在所述根據(jù)分表信息解析操作請求的步驟中,如果所述第一數(shù)據(jù)表名不在所述分表信息中,則將所述操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器;如果所述第一數(shù)據(jù)表名在所述分表信息中、但未從所述操作請求中解析出與所述第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段及該分表字段相對應(yīng)的字段值,則返回錯誤提示。4.如權(quán)利要求1至3中的任一項所述的方法,其中所述分表信息還包括要進(jìn)行分表的數(shù)據(jù)表的子表數(shù)量,所述將操作請求中的第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名的步驟還包括根據(jù)與所述分表字段相對應(yīng)的字段值以及所述數(shù)據(jù)表的子表數(shù)量,將所述第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名。5.如權(quán)利要求1至4中的任一項所述的方法,其中所述第二數(shù)據(jù)表名對應(yīng)于第一數(shù)據(jù)表分表之后生成的多個第二數(shù)據(jù)表之一,其包括第一數(shù)據(jù)表名以及第二數(shù)據(jù)表標(biāo)識。6.如權(quán)利要求1至5中的任一項所述的方法,其中所述操作請求包括數(shù)據(jù)庫程序語言語句。7.如權(quán)利要求6所述的方法,其中所述數(shù)據(jù)庫程序語言語句是結(jié)構(gòu)化查詢語言SQL語句,所述數(shù)據(jù)庫是MySQL數(shù)據(jù)庫。8.—種處理數(shù)據(jù)庫操作請求的設(shè)備(200),包括應(yīng)用程序接口(201),適于從應(yīng)用服務(wù)器接收對于數(shù)據(jù)庫的操作請求;解析器(203),適于解析所述操作請求,以獲取所述操作請求中的第一數(shù)據(jù)表名,并且根據(jù)分表信息解析所述操作請求,以獲取所述操作請求中與所述第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段以及與該分表字段相對應(yīng)的字段值,其中所述分表信息包括要進(jìn)行分表的數(shù)據(jù)表的數(shù)據(jù)表名以及與該數(shù)據(jù)表名相關(guān)聯(lián)的分表字段;操作請求修改器(205),適于根據(jù)所述分表信息和所獲取的分表字段相對應(yīng)的字段值,將所述操作請求中的第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名;以及數(shù)據(jù)庫接口(207),適于將修改后的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。9.如權(quán)利要求8所述的設(shè)備,其中如果所述操作請求中不存在第一數(shù)據(jù)表名,則所述數(shù)據(jù)庫接口(207)將所述操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。10.如權(quán)利要求8或9所述的設(shè)備,其中在所述解析器(203)根據(jù)分表信息解析操作請求時,如果所述第一數(shù)據(jù)表名不在所述分表信息中,則所述數(shù)據(jù)庫接口(207)將所述操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器;如果所述第一數(shù)據(jù)表名在所述分表信息中、但所述解析器(203)未從所述操作請求中解析出與所述第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段及該分表字段相對應(yīng)的字段值,則返回錯誤提示。11.如權(quán)利要求8至10中的任一項所述的設(shè)備,其中所述分表信息還包括要進(jìn)行分表的數(shù)據(jù)表的子表數(shù)量,所述操作請求修改器(205)根據(jù)與所述分表字段相對應(yīng)的字段值以及所述數(shù)據(jù)表的子表數(shù)量,將所述第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名。12.如權(quán)利要求8至11中的任一項所述的設(shè)備,其中所述第二數(shù)據(jù)表名對應(yīng)于第一數(shù)據(jù)表分表之后生成的多個第二數(shù)據(jù)表之一,其包括第一數(shù)據(jù)表名以及第二數(shù)據(jù)表標(biāo)識。13.如權(quán)利要求8至12中的任一項所述的設(shè)備,其中所述操作請求包括數(shù)據(jù)庫程序語H語句。14.如權(quán)利要求13所述的設(shè)備,其中所述數(shù)據(jù)庫程序語言語句是結(jié)構(gòu)化查詢語言SQL語句,所述數(shù)據(jù)庫是MySQL數(shù)據(jù)庫。全文摘要本發(fā)明公開了一種處理數(shù)據(jù)庫操作請求的方法和設(shè)備,其中該方法包括接收對于數(shù)據(jù)庫的操作請求;解析所述操作請求,以獲取所述操作請求中的第一數(shù)據(jù)表名;根據(jù)分表信息解析所述操作請求,以獲取所述操作請求中與所述第一數(shù)據(jù)表名相關(guān)聯(lián)的分表字段以及與該分表字段相對應(yīng)的字段值,其中所述分表信息包括要進(jìn)行分表的數(shù)據(jù)表的數(shù)據(jù)表名以及與該數(shù)據(jù)表名相關(guān)聯(lián)的分表字段;根據(jù)所述分表信息和所獲取的分表字段相對應(yīng)的字段值,將所述操作請求中的第一數(shù)據(jù)表名修改為第二數(shù)據(jù)表名;以及將修改后的操作請求發(fā)送給數(shù)據(jù)庫服務(wù)器。文檔編號G06F17/30GK103020193SQ201210511128公開日2013年4月3日申請日期2012年12月3日優(yōu)先權(quán)日2012年12月3日發(fā)明者朱超,陳超,桂勇哲,代兵,王超申請人:北京奇虎科技有限公司,奇智軟件(北京)有限公司