讀寫(xiě)分離的方法、系統(tǒng)和數(shù)據(jù)庫(kù)代理服務(wù)器的制造方法
【專利摘要】本發(fā)明公開(kāi)了一種讀寫(xiě)分離的方法、系統(tǒng)和數(shù)據(jù)庫(kù)代理服務(wù)器,屬于通信技術(shù)領(lǐng)域。所述方法包括:數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端ID;所述數(shù)據(jù)庫(kù)代理服務(wù)器接收所述客戶端的寫(xiě)請(qǐng)求時(shí),通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將所述客戶端ID發(fā)送至所述主數(shù)據(jù)庫(kù),使所述主數(shù)據(jù)庫(kù)將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶由所述公用ID更改為所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由所述公用ID對(duì)應(yīng)的權(quán)限更改為所述客戶端ID對(duì)應(yīng)的權(quán)限;所述數(shù)據(jù)庫(kù)代理服務(wù)器將所述寫(xiě)請(qǐng)求通過(guò)所述主庫(kù)連接轉(zhuǎn)發(fā)至所述主數(shù)據(jù)庫(kù),對(duì)所述主數(shù)據(jù)庫(kù)進(jìn)行寫(xiě)操作。本發(fā)明可以提高安全性。
【專利說(shuō)明】
讀寫(xiě)分離的方法、系統(tǒng)和數(shù)據(jù)庫(kù)代理服務(wù)器
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種讀寫(xiě)分離的方法、系統(tǒng)和數(shù)據(jù)庫(kù)代理服務(wù)器?!颈尘凹夹g(shù)】
[0002]數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)。數(shù)據(jù)庫(kù)中的數(shù)據(jù)以一定方式儲(chǔ)存在一起,可以供多個(gè)客戶端共享使用。為了方便多個(gè)客戶端共享使用數(shù)據(jù)庫(kù),緩解只有一個(gè)數(shù)據(jù)庫(kù)的壓力,目前常常會(huì)設(shè)置一個(gè)主數(shù)據(jù)庫(kù),對(duì)主數(shù)據(jù)庫(kù)進(jìn)行主備復(fù)制得到多個(gè)備數(shù)據(jù)庫(kù)(備數(shù)據(jù)庫(kù)中的數(shù)據(jù)與主數(shù)據(jù)庫(kù)中的數(shù)據(jù)相同),然后應(yīng)用讀寫(xiě)分離技術(shù),即客戶端的讀請(qǐng)求(客戶端在執(zhí)行查詢語(yǔ)句時(shí))訪問(wèn)備數(shù)據(jù)庫(kù),客戶端的寫(xiě)請(qǐng)求 (客戶端在執(zhí)行更新語(yǔ)句時(shí))訪問(wèn)主數(shù)據(jù)庫(kù)。
[0003]現(xiàn)有讀寫(xiě)分離的具體過(guò)程如下:數(shù)據(jù)庫(kù)代理服務(wù)器接收客戶端的備庫(kù)連接請(qǐng)求, 其中,備庫(kù)連接請(qǐng)求中攜帶客戶端ID(標(biāo)識(shí))和客戶端密碼。數(shù)據(jù)庫(kù)代理服務(wù)器根據(jù)客戶端ID,將備庫(kù)連接請(qǐng)求發(fā)送到對(duì)應(yīng)的備數(shù)據(jù)庫(kù)。備數(shù)據(jù)庫(kù)接收備庫(kù)連接請(qǐng)求,獲取客戶端 ID和客戶端密碼,對(duì)客戶端進(jìn)行驗(yàn)證,如果驗(yàn)證通過(guò),則與數(shù)據(jù)庫(kù)代理服務(wù)器建立連接。數(shù)據(jù)庫(kù)代理服務(wù)器接收客戶端的操作請(qǐng)求,如果是讀請(qǐng)求,則數(shù)據(jù)庫(kù)代理服務(wù)器直接對(duì)備數(shù)據(jù)庫(kù)進(jìn)行與讀請(qǐng)求對(duì)應(yīng)的讀操作;如果是寫(xiě)請(qǐng)求,則數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼,與主數(shù)據(jù)庫(kù)建立連接,對(duì)主數(shù)據(jù)庫(kù)進(jìn)行與讀請(qǐng)求對(duì)應(yīng)的寫(xiě)操作。
[0004] 然而,現(xiàn)有讀寫(xiě)分離的方法,多個(gè)客戶端均通過(guò)同一公用ID與主數(shù)據(jù)庫(kù)建立連接,公用ID的權(quán)限設(shè)置為多個(gè)客戶端的權(quán)限的并集,從而使某些客戶端擁有本來(lái)不屬于他的權(quán)限,對(duì)主數(shù)據(jù)庫(kù)進(jìn)行超越權(quán)限的操作,安全性差。例如:客戶端A原來(lái)的權(quán)限是只可以對(duì)主數(shù)據(jù)庫(kù)中的A部分?jǐn)?shù)據(jù)進(jìn)行寫(xiě)操作,客戶端B原來(lái)的權(quán)限是可以對(duì)主數(shù)據(jù)庫(kù)中的A部分?jǐn)?shù)據(jù)和B部分?jǐn)?shù)據(jù)進(jìn)行寫(xiě)操作,客戶端A和客戶端B通過(guò)同一公用ID與主數(shù)據(jù)庫(kù)建立連接,公用ID的權(quán)限設(shè)置為可以對(duì)主數(shù)據(jù)庫(kù)中的A部分?jǐn)?shù)據(jù)和B部分?jǐn)?shù)據(jù)進(jìn)行寫(xiě)操作,從而客戶端A也可以對(duì)主數(shù)據(jù)庫(kù)中的B部分?jǐn)?shù)據(jù)進(jìn)行寫(xiě)操作。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的問(wèn)題,本發(fā)明提供了一種讀寫(xiě)分離的方法、系統(tǒng)和數(shù)據(jù)庫(kù)代理服務(wù)器,數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,當(dāng)接收到寫(xiě)請(qǐng)求時(shí),數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將客戶端ID發(fā)送至主數(shù)據(jù)庫(kù),從而使主數(shù)據(jù)庫(kù)接收客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶由公用ID更改為客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限, 使得客戶端不能擁有本來(lái)不屬于他的權(quán)限,對(duì)主數(shù)據(jù)庫(kù)進(jìn)行超越權(quán)限的操作,提高安全性。
[0006]為了解決上述問(wèn)題,本發(fā)明公開(kāi)了一種讀寫(xiě)分離的方法,所述方法包括:
[0007]數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端ID ;
[0008]所述數(shù)據(jù)庫(kù)代理服務(wù)器接收所述客戶端的操作請(qǐng)求;
[0009]當(dāng)所述操作請(qǐng)求為寫(xiě)請(qǐng)求時(shí),所述數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將所述客戶端ID發(fā)送至所述主數(shù)據(jù)庫(kù),從而使所述主數(shù)據(jù)庫(kù)接收所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶由所述公用ID更改為所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由所述公用ID對(duì)應(yīng)的權(quán)限更改為所述客戶端ID對(duì)應(yīng)的權(quán)限;
[0010]所述數(shù)據(jù)庫(kù)代理服務(wù)器將所述寫(xiě)請(qǐng)求通過(guò)所述主庫(kù)連接轉(zhuǎn)發(fā)至所述主數(shù)據(jù)庫(kù),對(duì)所述主數(shù)據(jù)庫(kù)進(jìn)行與所述寫(xiě)請(qǐng)求對(duì)應(yīng)且符合所述客戶端ID對(duì)應(yīng)的權(quán)限的寫(xiě)操作。
[0011]進(jìn)一步地,數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端ID,包括:
[0012]所述數(shù)據(jù)庫(kù)代理服務(wù)器接收所述客戶端發(fā)送的備庫(kù)連接請(qǐng)求,其中,所述備庫(kù)連接請(qǐng)求中攜帶所述客戶端ID和客戶端密碼;
[0013]所述數(shù)據(jù)庫(kù)代理服務(wù)器將所述備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),從而使所述備數(shù)據(jù)庫(kù)接收并從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID和所述客戶端密碼,根據(jù)所述客戶端ID和所述客戶端密碼,對(duì)所述客戶端進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立備庫(kù)連接;
[0014]所述數(shù)據(jù)庫(kù)代理服務(wù)器從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID,并保存所述客戶端ID。
[0015]進(jìn)一步地,所述數(shù)據(jù)庫(kù)代理服務(wù)器接收客戶端的操作請(qǐng)求之后,還包括:
[0016]當(dāng)所述操作請(qǐng)求為讀請(qǐng)求時(shí),所述數(shù)據(jù)庫(kù)代理服務(wù)器將所述讀請(qǐng)求通過(guò)所述備庫(kù)連接轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),對(duì)所述備數(shù)據(jù)庫(kù)進(jìn)行與所述讀請(qǐng)求對(duì)應(yīng)的讀操作。
[0017]進(jìn)一步地,所述數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,包括:
[0018]所述數(shù)據(jù)庫(kù)代理服務(wù)器將所述公用ID和所述公用密碼發(fā)送至所述主數(shù)據(jù)庫(kù),從而使所述主數(shù)據(jù)庫(kù)接收并根據(jù)所述公用ID和所述公用密碼對(duì)所述數(shù)據(jù)庫(kù)代理服務(wù)器進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立主庫(kù)連接。
[0019]進(jìn)一步地,數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接之后,還包括:
[0020]所述數(shù)據(jù)庫(kù)代理服務(wù)器緩存所述主庫(kù)連接。
[0021]為了解決上述問(wèn)題,本發(fā)明還公開(kāi)了一種數(shù)據(jù)庫(kù)代理服務(wù)器,所述數(shù)據(jù)庫(kù)代理服務(wù)器包括:
[0022]獲取模塊,用于在所述數(shù)據(jù)庫(kù)代理服務(wù)器與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端ID ;
[0023]接收模塊,用于接收所述客戶端的操作請(qǐng)求;
[0024]建立模塊,用于當(dāng)所述操作請(qǐng)求為寫(xiě)請(qǐng)求時(shí),通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將所述客戶端ID發(fā)送至所述主數(shù)據(jù)庫(kù),從而使所述主數(shù)據(jù)庫(kù)接收所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶由所述公用ID更改為所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由所述公用ID對(duì)應(yīng)的權(quán)限更改為所述客戶端ID對(duì)應(yīng)的權(quán)限;
[0025]寫(xiě)操作模塊,用于將所述寫(xiě)請(qǐng)求通過(guò)所述主庫(kù)連接轉(zhuǎn)發(fā)至所述主數(shù)據(jù)庫(kù),對(duì)所述主數(shù)據(jù)庫(kù)進(jìn)行與所述寫(xiě)請(qǐng)求對(duì)應(yīng)且符合所述客戶端ID對(duì)應(yīng)的權(quán)限的寫(xiě)操作。
[0026]進(jìn)一步地,所述獲取模塊包括:
[0027]接收單元,用于接收所述客戶端發(fā)送的備庫(kù)連接請(qǐng)求,其中,所述備庫(kù)連接請(qǐng)求中攜帶所述客戶端ID和客戶端密碼;
[0028]轉(zhuǎn)發(fā)單元,用于將所述備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),從而使所述備數(shù)據(jù)庫(kù)接收并從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID和所述客戶端密碼,根據(jù)所述客戶端ID和所述客戶端密碼,對(duì)所述客戶端進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立備庫(kù)連接;
[0029]保存單元,用于從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID,并保存所述客戶端 ID〇[〇〇3〇]進(jìn)一步地,所述數(shù)據(jù)庫(kù)代理服務(wù)器還包括:
[0031]讀操作模塊,用于當(dāng)所述操作請(qǐng)求為讀請(qǐng)求時(shí),將所述讀請(qǐng)求通過(guò)所述備庫(kù)連接轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),對(duì)所述備數(shù)據(jù)庫(kù)進(jìn)行與所述讀請(qǐng)求對(duì)應(yīng)的讀操作。
[0032]進(jìn)一步地,所述建立模塊包括:
[0033]建立單元,用于將所述公用ID和所述公用密碼發(fā)送至所述主數(shù)據(jù)庫(kù),從而使所述主數(shù)據(jù)庫(kù)接收并根據(jù)所述公用ID和所述公用密碼對(duì)所述數(shù)據(jù)庫(kù)代理服務(wù)器進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立主庫(kù)連接。
[0034]進(jìn)一步地,所述數(shù)據(jù)庫(kù)代理服務(wù)器還包括:
[0035]緩存模塊,用于當(dāng)通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接后,緩存所述主庫(kù)連接。
[0036]為了解決上述問(wèn)題,本發(fā)明還公開(kāi)了一種讀寫(xiě)分離的系統(tǒng),所述系統(tǒng)包括:數(shù)據(jù)庫(kù)代理服務(wù)器和主數(shù)據(jù)庫(kù);
[0037]其中,所述數(shù)據(jù)庫(kù)代理服務(wù)器包括:
[0038]獲取模塊,用于在所述數(shù)據(jù)庫(kù)代理服務(wù)器與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端ID ;
[0039]接收模塊,用于接收所述客戶端的操作請(qǐng)求;
[0040]建立模塊,用于當(dāng)所述操作請(qǐng)求為寫(xiě)請(qǐng)求時(shí),通過(guò)公用ID和公用密碼與所述主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將所述客戶端ID發(fā)送至所述主數(shù)據(jù)庫(kù);
[0041]其中,所述主數(shù)據(jù)庫(kù)包括:
[0042]更改模塊,用于接收所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶由所述公用ID更改為所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由所述公用ID對(duì)應(yīng)的權(quán)限更改為所述客戶端ID對(duì)應(yīng)的權(quán)限;
[0043]相應(yīng)地,所述數(shù)據(jù)庫(kù)代理服務(wù)器還包括:
[0044]寫(xiě)操作模塊,用于在所述更改模塊將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由所述公用 ID對(duì)應(yīng)的權(quán)限更改為所述客戶端ID對(duì)應(yīng)的權(quán)限后,將所述寫(xiě)請(qǐng)求通過(guò)所述主庫(kù)連接轉(zhuǎn)發(fā)至所述主數(shù)據(jù)庫(kù),對(duì)所述主數(shù)據(jù)庫(kù)進(jìn)行與所述寫(xiě)請(qǐng)求對(duì)應(yīng)且符合所述客戶端ID對(duì)應(yīng)的權(quán)限的寫(xiě)操作。
[0045]進(jìn)一步地,所述獲取模塊包括:
[0046]接收單元,用于接收所述客戶端發(fā)送的備庫(kù)連接請(qǐng)求,其中,所述備庫(kù)連接請(qǐng)求中攜帶所述客戶端ID和客戶端密碼;
[0047]轉(zhuǎn)發(fā)單元,用于將所述備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù);
[0048]相應(yīng)地,所述系統(tǒng)還包括:備數(shù)據(jù)庫(kù);所述備數(shù)據(jù)庫(kù)包括:
[0049]第一驗(yàn)證模塊,用于接收并從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID和所述客戶端密碼,根據(jù)所述客戶端ID和所述客戶端密碼,對(duì)所述客戶端進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后, 與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立備庫(kù)連接;
[0050]相應(yīng)地,所述獲取模塊還包括:
[0051]保存單元,用于在所述第一驗(yàn)證模塊與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立備庫(kù)連接后, 從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID,并保存所述客戶端ID。
[0052]進(jìn)一步地,所述數(shù)據(jù)庫(kù)代理服務(wù)器還包括:
[0053]讀操作模塊,用于當(dāng)所述操作請(qǐng)求為讀請(qǐng)求時(shí),將所述讀請(qǐng)求通過(guò)所述備庫(kù)連接轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),對(duì)所述備數(shù)據(jù)庫(kù)進(jìn)行與所述讀請(qǐng)求對(duì)應(yīng)的讀操作。
[0054]進(jìn)一步地,所述建立模塊包括:
[0055]建立單元,用于將所述公用ID和所述公用密碼發(fā)送至所述主數(shù)據(jù)庫(kù);
[0056]相應(yīng)地,所述主數(shù)據(jù)庫(kù)還包括:
[0057]第二驗(yàn)證模塊,用于接收并根據(jù)所述公用ID和所述公用密碼對(duì)所述數(shù)據(jù)庫(kù)代理服務(wù)器進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立主庫(kù)連接。
[0058]進(jìn)一步地,所述數(shù)據(jù)庫(kù)代理服務(wù)器還包括:
[0059]緩存模塊,用于當(dāng)通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接后,緩存所述主庫(kù)連接。
[0060]與現(xiàn)有技術(shù)相比,本發(fā)明可以獲得包括以下技術(shù)效果:
[0061]1)數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,當(dāng)接收到寫(xiě)請(qǐng)求時(shí),數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將客戶端ID發(fā)送至主數(shù)據(jù)庫(kù),從而使主數(shù)據(jù)庫(kù)接收客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶由公用ID更改為客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限, 使得客戶端不能擁有本來(lái)不屬于他的權(quán)限,對(duì)主數(shù)據(jù)庫(kù)進(jìn)行超越權(quán)限的操作,提高安全性。
[0062]2)數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接之后,緩存主庫(kù)連接,當(dāng)數(shù)據(jù)庫(kù)代理服務(wù)器在與其他客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,接收到其他客戶端的寫(xiě)請(qǐng)求時(shí),可以通過(guò)緩存的主庫(kù)連接直接與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,不需要再執(zhí)行通過(guò)公用ID和公用密碼進(jìn)行驗(yàn)證再與主數(shù)據(jù)庫(kù)建立主庫(kù)連接的步驟,可以節(jié)約時(shí)間,加快與請(qǐng)求完成的時(shí)間。
[0063]當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品必不一定需要同時(shí)達(dá)到以上所述的所有技術(shù)效果。 【附圖說(shuō)明】
[0064]此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0065]圖1是本發(fā)明實(shí)施例的第一種讀寫(xiě)分離的方法流程圖;
[0066]圖2是本發(fā)明實(shí)施例的一種讀寫(xiě)分離的示意圖;
[0067]圖3是本發(fā)明實(shí)施例的第二種讀寫(xiě)分離的方法流程圖;
[0068]圖4是本發(fā)明實(shí)施例的第三種讀寫(xiě)分離的方法流程圖;
[0069]圖5是本發(fā)明實(shí)施例的第一種數(shù)據(jù)庫(kù)代理服務(wù)器的結(jié)構(gòu)示意圖;
[0070]圖6是本發(fā)明實(shí)施例的第二種數(shù)據(jù)庫(kù)代理服務(wù)器的結(jié)構(gòu)示意圖;
[0071]圖7是本發(fā)明實(shí)施例的第三種數(shù)據(jù)庫(kù)代理服務(wù)器的結(jié)構(gòu)示意圖;
[0072]圖8是本發(fā)明實(shí)施例的第一種讀寫(xiě)分離的系統(tǒng)結(jié)構(gòu)示意圖;
[0073]圖9是本發(fā)明實(shí)施例的第二種讀寫(xiě)分離的系統(tǒng)結(jié)構(gòu)示意圖;
[0074]圖10是本發(fā)明實(shí)施例的第三種讀寫(xiě)分離的系統(tǒng)結(jié)構(gòu)示意圖;
[0075]圖11是本發(fā)明實(shí)施例的第四種讀寫(xiě)分離的系統(tǒng)結(jié)構(gòu)示意圖;
[0076]圖12是本發(fā)明實(shí)施例的第五種讀寫(xiě)分離的系統(tǒng)結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】
[0077]以下將配合附圖及實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式,藉此對(duì)本發(fā)明如何應(yīng)用技術(shù)手段來(lái)解決技術(shù)問(wèn)題并達(dá)成技術(shù)功效的實(shí)現(xiàn)過(guò)程能充分理解并據(jù)以實(shí)施。
[0078]如在說(shuō)明書(shū)及權(quán)利要求當(dāng)中使用了某些詞匯來(lái)指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會(huì)用不同名詞來(lái)稱呼同一個(gè)組件。本說(shuō)明書(shū)及權(quán)利要求并不以名稱的差異來(lái)作為區(qū)分組件的方式,而是以組件在功能上的差異來(lái)作為區(qū)分的準(zhǔn)則。如在通篇說(shuō)明書(shū)及權(quán)利要求當(dāng)中所提及的“包含”為一開(kāi)放式用語(yǔ),故應(yīng)解釋成“包含但不限定于”?!按笾隆笔侵冈诳山邮盏恼`差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問(wèn)題,基本達(dá)到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一數(shù)據(jù)庫(kù)代理服務(wù)器耦接于一第二數(shù)據(jù)庫(kù)代理服務(wù)器,則代表所述第一數(shù)據(jù)庫(kù)代理服務(wù)器可直接電性耦接于所述第二數(shù)據(jù)庫(kù)代理服務(wù)器,或通過(guò)其他數(shù)據(jù)庫(kù)代理服務(wù)器或耦接手段間接地電性耦接至所述第二數(shù)據(jù)庫(kù)代理服務(wù)器。說(shuō)明書(shū)后續(xù)描述為實(shí)施本發(fā)明的較佳實(shí)施方式,然所述描述乃以說(shuō)明本發(fā)明的一般原則為目的,并非用以限定本發(fā)明的范圍。本發(fā)明的保護(hù)范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。
[0079]還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素。
[0080]實(shí)施例描休
[0081]下面以一實(shí)施例對(duì)本發(fā)明方法的實(shí)現(xiàn)作進(jìn)一步說(shuō)明。如圖1所示,為本發(fā)明實(shí)施例的一種讀寫(xiě)分離的方法流程圖,該方法包括:
[0082]S101:數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端ID。
[0083]具體地,參見(jiàn)圖2,數(shù)據(jù)庫(kù)代理服務(wù)器(Proxy)是客戶端(client)和數(shù)據(jù)庫(kù)(包括主數(shù)據(jù)庫(kù)(Master)和備數(shù)據(jù)庫(kù)(Slave))中間的一個(gè)連接層,負(fù)責(zé)接收客戶端的請(qǐng)求,直接與數(shù)據(jù)庫(kù)交互。數(shù)據(jù)庫(kù)代理服務(wù)器維護(hù)數(shù)據(jù)庫(kù)的元信息(包括數(shù)據(jù)庫(kù)中的數(shù)據(jù)(如實(shí)例等)的物理地址和狀態(tài)等),能夠使數(shù)據(jù)庫(kù)的數(shù)據(jù)的分布對(duì)客戶端透明。
[0084]其中,客戶端ID是客戶端的唯一標(biāo)識(shí),客戶端ID可以通過(guò)客戶端的名稱和客戶端的來(lái)源ip (如為usernameOuserhost)等表示。
[0085]S102:數(shù)據(jù)庫(kù)代理服務(wù)器接收客戶端的操作請(qǐng)求。
[0086]其中,操作請(qǐng)求包括讀請(qǐng)求和寫(xiě)請(qǐng)求。客戶端在執(zhí)行查詢語(yǔ)句時(shí),會(huì)發(fā)送讀請(qǐng)求, 客戶端在執(zhí)行更新語(yǔ)句,會(huì)發(fā)送寫(xiě)請(qǐng)求。
[0087]S103:當(dāng)操作請(qǐng)求為寫(xiě)請(qǐng)求時(shí),數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將客戶端ID發(fā)送至主數(shù)據(jù)庫(kù),從而使主數(shù)據(jù)庫(kù)接收客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶由公用ID更改為客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限。
[0088]具體地,公用ID是為數(shù)據(jù)庫(kù)代理服務(wù)器分配的一個(gè)公用賬戶。
[0089]具體地,數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,包括:
[0090]數(shù)據(jù)庫(kù)代理服務(wù)器將公用ID和公用密碼發(fā)送至主數(shù)據(jù)庫(kù),從而使主數(shù)據(jù)庫(kù)接收并根據(jù)公用ID和公用密碼對(duì)數(shù)據(jù)庫(kù)代理服務(wù)器進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與數(shù)據(jù)庫(kù)代理服務(wù)器建立主庫(kù)連接。
[0091]具體地,數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接之后,還包括:
[0092]數(shù)據(jù)庫(kù)代理服務(wù)器緩存主庫(kù)連接。
[0093]具體地,數(shù)據(jù)庫(kù)代理服務(wù)器緩存主庫(kù)連接,當(dāng)數(shù)據(jù)庫(kù)代理服務(wù)器接收到其他客戶端發(fā)送的備庫(kù)連接請(qǐng)求,在與其他客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,接收到其他客戶端的寫(xiě)請(qǐng)求時(shí),可以通過(guò)緩存的主庫(kù)連接直接與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,不需要再執(zhí)行通過(guò)公用ID和公用密碼進(jìn)行驗(yàn)證再與主數(shù)據(jù)庫(kù)建立主庫(kù)連接的步驟,可以節(jié)約時(shí)間,加快與請(qǐng)求完成的時(shí)間。
[0094]具體地,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶由公用ID更改為客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限,即將公用賬戶切換為客戶端賬戶,如切換指令為:change user to ‘username@userhost’。
[0095]S104:數(shù)據(jù)庫(kù)代理服務(wù)器將寫(xiě)請(qǐng)求通過(guò)主庫(kù)連接轉(zhuǎn)發(fā)至主數(shù)據(jù)庫(kù),對(duì)主數(shù)據(jù)庫(kù)進(jìn)行與寫(xiě)請(qǐng)求對(duì)應(yīng)且符合客戶端ID對(duì)應(yīng)的權(quán)限的寫(xiě)操作。
[0096]具體地,寫(xiě)操作包括增(INSERT)、改(UPDATE)、刪(DELETE)等操作。
[0097]由于連接主數(shù)據(jù)庫(kù),以及將公用ID更改為客戶端、將公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限,都是由數(shù)據(jù)庫(kù)代理服務(wù)器發(fā)起,在將公用ID對(duì)應(yīng)的權(quán)限更改為客戶端 ID對(duì)應(yīng)的權(quán)限(即還原成客戶端原來(lái)的權(quán)限)后,數(shù)據(jù)庫(kù)代理服務(wù)器才將寫(xiě)請(qǐng)求通過(guò)主庫(kù)連接轉(zhuǎn)發(fā)至主數(shù)據(jù)庫(kù),因此對(duì)主數(shù)據(jù)庫(kù)進(jìn)行的寫(xiě)操作不會(huì)超過(guò)客戶端應(yīng)有的權(quán)限。
[0098]具體地,在一個(gè)優(yōu)先的實(shí)施例中,參見(jiàn)圖3, S101數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端ID,包括:
[0099]SlOla:數(shù)據(jù)庫(kù)代理服務(wù)器接收客戶端發(fā)送的備庫(kù)連接請(qǐng)求。
[0100]其中,備庫(kù)連接請(qǐng)求中攜帶客戶端ID和客戶端密碼。客戶端ID是通過(guò)明文傳輸, 客戶端密碼是通過(guò)密文傳輸,數(shù)據(jù)庫(kù)代理服務(wù)器可以從備庫(kù)連接請(qǐng)求中獲取到通過(guò)明文傳輸?shù)目蛻舳薎D。
[0101]SlOlb:數(shù)據(jù)庫(kù)代理服務(wù)器將備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),從而使備數(shù)據(jù)庫(kù)接收并從備庫(kù)連接請(qǐng)求中獲取客戶端ID和客戶端密碼,根據(jù)客戶端ID和客戶端密碼,對(duì)客戶端進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與數(shù)據(jù)庫(kù)代理服務(wù)器建立備庫(kù)連接。
[0102]具體地,備數(shù)據(jù)庫(kù)一般有多個(gè),可以根據(jù)客戶端和備數(shù)據(jù)庫(kù)的個(gè)數(shù)、位置等,預(yù)先設(shè)置客戶端和備數(shù)據(jù)庫(kù)的對(duì)應(yīng)關(guān)系,當(dāng)數(shù)據(jù)庫(kù)代理服務(wù)器接收到備庫(kù)連接請(qǐng)求后,可以將備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)。
[0103]具體地,客戶端密碼是通過(guò)密文傳輸?shù)?,備?shù)據(jù)庫(kù)和客戶端之間預(yù)先設(shè)定客戶端密碼的加密方法,當(dāng)備數(shù)據(jù)庫(kù)接受到備庫(kù)連接請(qǐng)求后,根據(jù)加密方法對(duì)應(yīng)的解密方法,解密得到備庫(kù)連接請(qǐng)求中的客戶端密碼。并且,備數(shù)據(jù)庫(kù)中預(yù)先保存有客戶端ID和客戶端密碼對(duì)應(yīng)關(guān)系表,備數(shù)據(jù)庫(kù)可以通過(guò)查詢客戶端ID和客戶端密碼對(duì)應(yīng)關(guān)系表,對(duì)獲取的客戶端 ID和客戶端密碼驗(yàn)證。
[0104]SlOlc:數(shù)據(jù)庫(kù)代理服務(wù)器從備庫(kù)連接請(qǐng)求中獲取客戶端ID,并保存客戶端ID。
[0105]具體地,客戶端ID是通過(guò)明文傳輸?shù)模瑪?shù)據(jù)庫(kù)代理服務(wù)器可以從備庫(kù)連接請(qǐng)求中直接獲取到通過(guò)明文傳輸?shù)目蛻舳薎D。
[0106]具體地,在一個(gè)優(yōu)先的實(shí)施例中,參見(jiàn)圖4, S102數(shù)據(jù)庫(kù)代理服務(wù)器接收客戶端的操作請(qǐng)求之后,還包括:
[0107]S105:當(dāng)操作請(qǐng)求為讀請(qǐng)求時(shí),數(shù)據(jù)庫(kù)代理服務(wù)器將讀請(qǐng)求通過(guò)備庫(kù)連接轉(zhuǎn)發(fā)至與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),對(duì)備數(shù)據(jù)庫(kù)進(jìn)行與讀請(qǐng)求對(duì)應(yīng)的讀操作。
[0108]具體地,當(dāng)操作請(qǐng)求為讀請(qǐng)求時(shí),直接通過(guò)已經(jīng)建立的備庫(kù)連接,對(duì)備數(shù)據(jù)庫(kù)進(jìn)行與讀請(qǐng)求對(duì)應(yīng)的讀操作。其中,讀操作包括讀取、查詢等操作。
[0109]本發(fā)明實(shí)施例所述的讀寫(xiě)分離的方法,數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,當(dāng)接收到寫(xiě)請(qǐng)求時(shí),數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將客戶端ID發(fā)送至主數(shù)據(jù)庫(kù),從而使主數(shù)據(jù)庫(kù)接收客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶由公用ID更改為客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限,使得客戶端不能擁有本來(lái)不屬于他的權(quán)限,對(duì)主數(shù)據(jù)庫(kù)進(jìn)行超越權(quán)限的操作,提高安全性。數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接之后,緩存主庫(kù)連接,當(dāng)數(shù)據(jù)庫(kù)代理服務(wù)器在與其他客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,接收到其他客戶端的寫(xiě)請(qǐng)求時(shí),可以通過(guò)緩存的主庫(kù)連接直接與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,不需要再執(zhí)行通過(guò)公用ID和公用密碼進(jìn)行驗(yàn)證再與主數(shù)據(jù)庫(kù)建立主庫(kù)連接的步驟,可以節(jié)約時(shí)間,加快寫(xiě)請(qǐng)求完成的時(shí)間。
[0110]如圖5所示,是本發(fā)明實(shí)施例的一種數(shù)據(jù)庫(kù)代理服務(wù)器的結(jié)構(gòu)示意圖,該數(shù)據(jù)庫(kù)代理服務(wù)器包括:
[0111]獲取模塊201,用于在數(shù)據(jù)庫(kù)代理服務(wù)器與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端ID ;
[0112]接收模塊202,用于接收客戶端的操作請(qǐng)求;
[0113]建立模塊203,用于當(dāng)操作請(qǐng)求為寫(xiě)請(qǐng)求時(shí),通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將客戶端ID發(fā)送至主數(shù)據(jù)庫(kù),從而使主數(shù)據(jù)庫(kù)接收客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶由公用ID更改為客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限;
[0114]寫(xiě)操作模塊204,用于將寫(xiě)請(qǐng)求通過(guò)主庫(kù)連接轉(zhuǎn)發(fā)至主數(shù)據(jù)庫(kù),對(duì)主數(shù)據(jù)庫(kù)進(jìn)行與寫(xiě)請(qǐng)求對(duì)應(yīng)且符合客戶端ID對(duì)應(yīng)的權(quán)限的寫(xiě)操作。
[0115]進(jìn)一步地,獲取模塊201包括:
[0116]接收單元,用于接收客戶端發(fā)送的備庫(kù)連接請(qǐng)求,其中,備庫(kù)連接請(qǐng)求中攜帶客戶端ID和客戶端密碼;
[0117]轉(zhuǎn)發(fā)單元,用于將備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),從而使備數(shù)據(jù)庫(kù)接收并從備庫(kù)連接請(qǐng)求中獲取客戶端ID和客戶端密碼,根據(jù)客戶端ID和客戶端密碼,對(duì)客戶端進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與數(shù)據(jù)庫(kù)代理服務(wù)器建立備庫(kù)連接;
[0118]保存單元,用于從備庫(kù)連接請(qǐng)求中獲取客戶端ID,并保存客戶端ID。
[0119]進(jìn)一步地,參見(jiàn)圖6,數(shù)據(jù)庫(kù)代理服務(wù)器還包括:
[0120]讀操作模塊205,用于當(dāng)操作請(qǐng)求為讀請(qǐng)求時(shí),將讀請(qǐng)求通過(guò)備庫(kù)連接轉(zhuǎn)發(fā)至與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),對(duì)備數(shù)據(jù)庫(kù)進(jìn)行與讀請(qǐng)求對(duì)應(yīng)的讀操作。
[0121]進(jìn)一步地,建立模塊203包括:
[0122]建立單元,用于將公用ID和公用密碼發(fā)送至主數(shù)據(jù)庫(kù),從而使主數(shù)據(jù)庫(kù)接收并根據(jù)公用ID和公用密碼對(duì)數(shù)據(jù)庫(kù)代理服務(wù)器進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與數(shù)據(jù)庫(kù)代理服務(wù)器建立主庫(kù)連接。
[0123]進(jìn)一步地,參見(jiàn)圖7,該數(shù)據(jù)庫(kù)代理服務(wù)器還包括:
[0124]緩存模塊206,用于當(dāng)通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接后,緩存主庫(kù)連接。
[0125]本實(shí)施例所述的數(shù)據(jù)庫(kù)代理服務(wù)器,數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,當(dāng)接收到寫(xiě)請(qǐng)求時(shí),數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將客戶端ID發(fā)送至主數(shù)據(jù)庫(kù),從而使主數(shù)據(jù)庫(kù)接收客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶由公用ID更改為客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限,使得客戶端不能擁有本來(lái)不屬于他的權(quán)限,對(duì)主數(shù)據(jù)庫(kù)進(jìn)行超越權(quán)限的操作,提高安全性。數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接之后,緩存主庫(kù)連接,當(dāng)數(shù)據(jù)庫(kù)代理服務(wù)器在與其他客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,接收到其他客戶端的寫(xiě)請(qǐng)求時(shí),可以通過(guò)緩存的主庫(kù)連接直接與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,不需要再執(zhí)行通過(guò)公用ID和公用密碼進(jìn)行驗(yàn)證再與主數(shù)據(jù)庫(kù)建立主庫(kù)連接的步驟,可以節(jié)約時(shí)間,加快寫(xiě)請(qǐng)求完成的時(shí)間。
[0126]如圖8所示,是本發(fā)明實(shí)施例的一種讀寫(xiě)分離的系統(tǒng)的結(jié)構(gòu)示意圖,該讀寫(xiě)分離的系統(tǒng)包括:數(shù)據(jù)庫(kù)代理服務(wù)器30和主數(shù)據(jù)庫(kù)40 ;
[0127]其中,數(shù)據(jù)庫(kù)代理服務(wù)器包括30:
[0128]獲取模塊301,用于在數(shù)據(jù)庫(kù)代理服務(wù)器30與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)50建立備庫(kù)連接后,獲取并保存客戶端ID ;
[0129]接收模塊302,用于接收客戶端的操作請(qǐng)求;
[0130]建立模塊303,用于當(dāng)操作請(qǐng)求為寫(xiě)請(qǐng)求時(shí),通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù) 40建立主庫(kù)連接,將客戶端ID發(fā)送至主數(shù)據(jù)庫(kù)40 ;
[0131]其中,主數(shù)據(jù)庫(kù)40包括:
[0132]更改模塊401,用于接收客戶端ID,將主數(shù)據(jù)庫(kù)40的當(dāng)前用戶由公用ID更改為客戶端ID,將主數(shù)據(jù)庫(kù)40的當(dāng)前用戶的權(quán)限由公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限;
[0133]相應(yīng)地,數(shù)據(jù)庫(kù)代理服務(wù)器30還包括:
[0134]寫(xiě)操作模塊304,用于在更改模塊401將主數(shù)據(jù)庫(kù)40的當(dāng)前用戶的權(quán)限由公用ID 對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限后,將寫(xiě)請(qǐng)求通過(guò)主庫(kù)連接轉(zhuǎn)發(fā)至主數(shù)據(jù)庫(kù)40,對(duì)主數(shù)據(jù)庫(kù)40進(jìn)行與寫(xiě)請(qǐng)求對(duì)應(yīng)且符合客戶端ID對(duì)應(yīng)的權(quán)限的寫(xiě)操作。
[0135]進(jìn)一步地,獲取模塊301包括:
[0136]接收單元,用于接收客戶端發(fā)送的備庫(kù)連接請(qǐng)求,其中,備庫(kù)連接請(qǐng)求中攜帶客戶端ID和客戶端密碼;
[0137]轉(zhuǎn)發(fā)單元,用于將備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)50 ;
[0138]相應(yīng)地,參見(jiàn)圖9,系統(tǒng)還包括:備數(shù)據(jù)庫(kù)50 ;備數(shù)據(jù)庫(kù)50包括:
[0139]第一驗(yàn)證模塊501,用于接收并從備庫(kù)連接請(qǐng)求中獲取客戶端ID和客戶端密碼, 根據(jù)客戶端ID和客戶端密碼,對(duì)客戶端進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與數(shù)據(jù)庫(kù)代理服務(wù)器30 建立備庫(kù)連接;
[0140]相應(yīng)地,獲取模塊301還包括:
[0141]保存單元,用于在第一驗(yàn)證模塊501與數(shù)據(jù)庫(kù)代理服務(wù)器30建立備庫(kù)連接后,從備庫(kù)連接請(qǐng)求中獲取客戶端ID,并保存客戶端ID。
[0142]進(jìn)一步地,參見(jiàn)圖10,數(shù)據(jù)庫(kù)代理服務(wù)器30還包括:
[0143]讀操作模塊305,用于當(dāng)操作請(qǐng)求為讀請(qǐng)求時(shí),將讀請(qǐng)求通過(guò)備庫(kù)連接轉(zhuǎn)發(fā)至與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)50,對(duì)備數(shù)據(jù)庫(kù)50進(jìn)行與讀請(qǐng)求對(duì)應(yīng)的讀操作。
[0144]進(jìn)一步地,建立模塊303包括:
[0145]建立單元,用于將公用ID和公用密碼發(fā)送至主數(shù)據(jù)庫(kù)40 ;
[0146]相應(yīng)地,參見(jiàn)圖11,主數(shù)據(jù)庫(kù)40還包括:
[0147]第二驗(yàn)證模塊402,用于接收并根據(jù)公用ID和公用密碼對(duì)數(shù)據(jù)庫(kù)代理服務(wù)器30進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與數(shù)據(jù)庫(kù)代理服務(wù)器30建立主庫(kù)連接。
[0148]進(jìn)一步地,參見(jiàn)圖12,數(shù)據(jù)庫(kù)代理服務(wù)器30還包括:
[0149]緩存模塊306,用于當(dāng)通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)40建立主庫(kù)連接后,緩存主庫(kù)連接。
[0150]本實(shí)施例所述的讀寫(xiě)分離的系統(tǒng),數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,當(dāng)接收到寫(xiě)請(qǐng)求時(shí),數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,將客戶端ID發(fā)送至主數(shù)據(jù)庫(kù),從而使主數(shù)據(jù)庫(kù)接收客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶由公用ID更改為客戶端ID,將主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由公用ID對(duì)應(yīng)的權(quán)限更改為客戶端ID對(duì)應(yīng)的權(quán)限,使得客戶端不能擁有本來(lái)不屬于他的權(quán)限,對(duì)主數(shù)據(jù)庫(kù)進(jìn)行超越權(quán)限的操作,提高安全性。數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接之后,緩存主庫(kù)連接,當(dāng)數(shù)據(jù)庫(kù)代理服務(wù)器在與其他客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,接收到其他客戶端的寫(xiě)請(qǐng)求時(shí),可以通過(guò)緩存的主庫(kù)連接直接與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,不需要再執(zhí)行通過(guò)公用ID和公用密碼進(jìn)行驗(yàn)證再與主數(shù)據(jù)庫(kù)建立主庫(kù)連接的步驟,可以節(jié)約時(shí)間,加快寫(xiě)請(qǐng)求完成的時(shí)間。
[0151]需要說(shuō)明的是,數(shù)據(jù)庫(kù)代理服務(wù)器、讀寫(xiě)分離的系統(tǒng)與前述的方法流程描述對(duì)應(yīng), 不足之處參考上述方法流程的敘述,不再一一贅述。
[0152]需要說(shuō)明的是,本發(fā)明實(shí)施例所述的讀寫(xiě)分離的方法,可以應(yīng)用于多個(gè)客戶端的權(quán)限不一樣的場(chǎng)景下,如可以應(yīng)用于包括多個(gè)客戶端的云服務(wù)場(chǎng)景下。
[0153]上述說(shuō)明示出并描述了本發(fā)明的若干優(yōu)選實(shí)施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對(duì)其他實(shí)施例的排除,而可用于各種其他組合、 修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過(guò)上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識(shí)進(jìn)行改動(dòng)。而本領(lǐng)域人員所進(jìn)行的改動(dòng)和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種讀寫(xiě)分離的方法,其特征在于,所述方法包括:數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端 ID ;所述數(shù)據(jù)庫(kù)代理服務(wù)器接收所述客戶端的操作請(qǐng)求;當(dāng)所述操作請(qǐng)求為寫(xiě)請(qǐng)求時(shí),所述數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用密碼與主數(shù) 據(jù)庫(kù)建立主庫(kù)連接,將所述客戶端ID發(fā)送至所述主數(shù)據(jù)庫(kù),從而使所述主數(shù)據(jù)庫(kù)接收所述 客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶由所述公用ID更改為所述客戶端ID,將所述主數(shù)據(jù) 庫(kù)的當(dāng)前用戶的權(quán)限由所述公用ID對(duì)應(yīng)的權(quán)限更改為所述客戶端ID對(duì)應(yīng)的權(quán)限;所述數(shù)據(jù)庫(kù)代理服務(wù)器將所述寫(xiě)請(qǐng)求通過(guò)所述主庫(kù)連接轉(zhuǎn)發(fā)至所述主數(shù)據(jù)庫(kù),對(duì)所述 主數(shù)據(jù)庫(kù)進(jìn)行與所述寫(xiě)請(qǐng)求對(duì)應(yīng)且符合所述客戶端ID對(duì)應(yīng)的權(quán)限的寫(xiě)操作。2.如權(quán)利要求1所述的方法,其特征在于,數(shù)據(jù)庫(kù)代理服務(wù)器在與客戶端對(duì)應(yīng)的備數(shù) 據(jù)庫(kù)建立備庫(kù)連接后,獲取并保存客戶端ID,包括:所述數(shù)據(jù)庫(kù)代理服務(wù)器接收所述客戶端發(fā)送的備庫(kù)連接請(qǐng)求,其中,所述備庫(kù)連接請(qǐng) 求中攜帶所述客戶端ID和客戶端密碼;所述數(shù)據(jù)庫(kù)代理服務(wù)器將所述備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),從 而使所述備數(shù)據(jù)庫(kù)接收并從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID和所述客戶端密碼, 根據(jù)所述客戶端ID和所述客戶端密碼,對(duì)所述客戶端進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與所述數(shù) 據(jù)庫(kù)代理服務(wù)器建立備庫(kù)連接;所述數(shù)據(jù)庫(kù)代理服務(wù)器從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID,并保存所述客戶端 ID〇3.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)庫(kù)代理服務(wù)器接收客戶端的操作 請(qǐng)求之后,還包括:當(dāng)所述操作請(qǐng)求為讀請(qǐng)求時(shí),所述數(shù)據(jù)庫(kù)代理服務(wù)器將所述讀請(qǐng)求通過(guò)所述備庫(kù)連接 轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),對(duì)所述備數(shù)據(jù)庫(kù)進(jìn)行與所述讀請(qǐng)求對(duì)應(yīng)的讀操作。4.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)庫(kù)代理服務(wù)器通過(guò)公用ID和公用 密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接,包括:所述數(shù)據(jù)庫(kù)代理服務(wù)器將所述公用ID和所述公用密碼發(fā)送至所述主數(shù)據(jù)庫(kù),從而使 所述主數(shù)據(jù)庫(kù)接收并根據(jù)所述公用ID和所述公用密碼對(duì)所述數(shù)據(jù)庫(kù)代理服務(wù)器進(jìn)行驗(yàn) 證,當(dāng)驗(yàn)證通過(guò)后,與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立主庫(kù)連接。5.如權(quán)利要求1-4任一權(quán)利要求所述的方法,其特征在于,所述數(shù)據(jù)庫(kù)代理服務(wù)器通 過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接之后,還包括:所述數(shù)據(jù)庫(kù)代理服務(wù)器緩存所述主庫(kù)連接。6.—種數(shù)據(jù)庫(kù)代理服務(wù)器,其特征在于,所述數(shù)據(jù)庫(kù)代理服務(wù)器包括:獲取模塊,用于在所述數(shù)據(jù)庫(kù)代理服務(wù)器與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后, 獲取并保存客戶端ID ;接收模塊,用于接收所述客戶端的操作請(qǐng)求;建立模塊,用于當(dāng)所述操作請(qǐng)求為寫(xiě)請(qǐng)求時(shí),通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建 立主庫(kù)連接,將所述客戶端ID發(fā)送至所述主數(shù)據(jù)庫(kù),從而使所述主數(shù)據(jù)庫(kù)接收所述客戶端 ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶由所述公用ID更改為所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由所述公用ID對(duì)應(yīng)的權(quán)限更改為所述客戶端ID對(duì)應(yīng)的權(quán)限;寫(xiě)操作模塊,用于將所述寫(xiě)請(qǐng)求通過(guò)所述主庫(kù)連接轉(zhuǎn)發(fā)至所述主數(shù)據(jù)庫(kù),對(duì)所述主數(shù) 據(jù)庫(kù)進(jìn)行與所述寫(xiě)請(qǐng)求對(duì)應(yīng)且符合所述客戶端ID對(duì)應(yīng)的權(quán)限的寫(xiě)操作。7.如權(quán)利要求6所述的數(shù)據(jù)庫(kù)代理服務(wù)器,其特征在于,所述獲取模塊包括:接收單元,用于接收所述客戶端發(fā)送的備庫(kù)連接請(qǐng)求,其中,所述備庫(kù)連接請(qǐng)求中攜帶 所述客戶端ID和客戶端密碼;轉(zhuǎn)發(fā)單元,用于將所述備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),從而使所 述備數(shù)據(jù)庫(kù)接收并從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID和所述客戶端密碼,根據(jù)所 述客戶端ID和所述客戶端密碼,對(duì)所述客戶端進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與所述數(shù)據(jù)庫(kù)代 理服務(wù)器建立備庫(kù)連接;保存單元,用于從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID,并保存所述客戶端ID。8.如權(quán)利要求6所述的數(shù)據(jù)庫(kù)代理服務(wù)器,其特征在于,所述數(shù)據(jù)庫(kù)代理服務(wù)器還包 括:讀操作模塊,用于當(dāng)所述操作請(qǐng)求為讀請(qǐng)求時(shí),將所述讀請(qǐng)求通過(guò)所述備庫(kù)連接轉(zhuǎn)發(fā) 至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),對(duì)所述備數(shù)據(jù)庫(kù)進(jìn)行與所述讀請(qǐng)求對(duì)應(yīng)的讀操作。9.如權(quán)利要求6所述的數(shù)據(jù)庫(kù)代理服務(wù)器,其特征在于,所述建立模塊包括:建立單元,用于將所述公用ID和所述公用密碼發(fā)送至所述主數(shù)據(jù)庫(kù),從而使所述主數(shù) 據(jù)庫(kù)接收并根據(jù)所述公用ID和所述公用密碼對(duì)所述數(shù)據(jù)庫(kù)代理服務(wù)器進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證 通過(guò)后,與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立主庫(kù)連接。10.如權(quán)利要求6-9任一權(quán)利要求所述的數(shù)據(jù)庫(kù)代理服務(wù)器,其特征在于,所述數(shù)據(jù)庫(kù) 代理服務(wù)器還包括:緩存模塊,用于當(dāng)通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接后,緩存所述主庫(kù) 連接。11.一種讀寫(xiě)分離的系統(tǒng),其特征在于,所述系統(tǒng)包括:數(shù)據(jù)庫(kù)代理服務(wù)器和主數(shù)據(jù) 庫(kù);其中,所述數(shù)據(jù)庫(kù)代理服務(wù)器包括:獲取模塊,用于在所述數(shù)據(jù)庫(kù)代理服務(wù)器與客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù)建立備庫(kù)連接后, 獲取并保存客戶端ID ;接收模塊,用于接收所述客戶端的操作請(qǐng)求;建立模塊,用于當(dāng)所述操作請(qǐng)求為寫(xiě)請(qǐng)求時(shí),通過(guò)公用ID和公用密碼與所述主數(shù)據(jù)庫(kù) 建立主庫(kù)連接,將所述客戶端ID發(fā)送至所述主數(shù)據(jù)庫(kù);其中,所述主數(shù)據(jù)庫(kù)包括:更改模塊,用于接收所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶由所述公用ID更改為 所述客戶端ID,將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由所述公用ID對(duì)應(yīng)的權(quán)限更改為所述 客戶端ID對(duì)應(yīng)的權(quán)限;相應(yīng)地,所述數(shù)據(jù)庫(kù)代理服務(wù)器還包括:寫(xiě)操作模塊,用于在所述更改模塊將所述主數(shù)據(jù)庫(kù)的當(dāng)前用戶的權(quán)限由所述公用ID 對(duì)應(yīng)的權(quán)限更改為所述客戶端ID對(duì)應(yīng)的權(quán)限后,將所述寫(xiě)請(qǐng)求通過(guò)所述主庫(kù)連接轉(zhuǎn)發(fā)至 所述主數(shù)據(jù)庫(kù),對(duì)所述主數(shù)據(jù)庫(kù)進(jìn)行與所述寫(xiě)請(qǐng)求對(duì)應(yīng)且符合所述客戶端ID對(duì)應(yīng)的權(quán)限的寫(xiě)操作。12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述獲取模塊包括:接收單元,用于接收所述客戶端發(fā)送的備庫(kù)連接請(qǐng)求,其中,所述備庫(kù)連接請(qǐng)求中攜帶 所述客戶端ID和客戶端密碼;轉(zhuǎn)發(fā)單元,用于將所述備庫(kù)連接請(qǐng)求轉(zhuǎn)發(fā)至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù);相應(yīng)地,所述系統(tǒng)還包括:備數(shù)據(jù)庫(kù);所述備數(shù)據(jù)庫(kù)包括:第一驗(yàn)證模塊,用于接收并從所述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID和所述客戶端 密碼,根據(jù)所述客戶端ID和所述客戶端密碼,對(duì)所述客戶端進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與所 述數(shù)據(jù)庫(kù)代理服務(wù)器建立備庫(kù)連接;相應(yīng)地,所述獲取模塊還包括:保存單元,用于在所述第一驗(yàn)證模塊與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立備庫(kù)連接后,從所 述備庫(kù)連接請(qǐng)求中獲取所述客戶端ID,并保存所述客戶端ID。13.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫(kù)代理服務(wù)器還包括:讀操作模塊,用于當(dāng)所述操作請(qǐng)求為讀請(qǐng)求時(shí),將所述讀請(qǐng)求通過(guò)所述備庫(kù)連接轉(zhuǎn)發(fā) 至與所述客戶端對(duì)應(yīng)的備數(shù)據(jù)庫(kù),對(duì)所述備數(shù)據(jù)庫(kù)進(jìn)行與所述讀請(qǐng)求對(duì)應(yīng)的讀操作。14.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述建立模塊包括:建立單元,用于將所述公用ID和所述公用密碼發(fā)送至所述主數(shù)據(jù)庫(kù);相應(yīng)地,所述主數(shù)據(jù)庫(kù)還包括:第二驗(yàn)證模塊,用于接收并根據(jù)所述公用ID和所述公用密碼對(duì)所述數(shù)據(jù)庫(kù)代理服務(wù) 器進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,與所述數(shù)據(jù)庫(kù)代理服務(wù)器建立主庫(kù)連接。15.如權(quán)利要求11-14任一權(quán)利要求所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫(kù)代理服務(wù)器 還包括:緩存模塊,用于當(dāng)通過(guò)公用ID和公用密碼與主數(shù)據(jù)庫(kù)建立主庫(kù)連接后,緩存所述主庫(kù) 連接。
【文檔編號(hào)】H04L29/06GK105991565SQ201510062422
【公開(kāi)日】2016年10月5日
【申請(qǐng)日】2015年2月5日
【發(fā)明人】林曉斌
【申請(qǐng)人】阿里巴巴集團(tuán)控股有限公司