專利名稱:集群數(shù)據(jù)查詢方法、客戶端及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)庫技術(shù),尤其涉及ー種數(shù)據(jù)庫集群數(shù)據(jù)查詢方法、客戶端及系統(tǒng)。
背景技術(shù):
隨著傳統(tǒng)的數(shù)據(jù)庫技術(shù)日趨成熟、計算機網(wǎng)絡(luò)技術(shù)的飛速發(fā)展和應(yīng)用范圍的擴(kuò)充,數(shù)據(jù)庫應(yīng)用已經(jīng)普遍建立于計算機網(wǎng)絡(luò)之上。這時集中式數(shù)據(jù)庫系統(tǒng)表現(xiàn)出它的不足:集中式處理,勢必造成性能瓶頸;應(yīng)用程序集中在一臺計算機上運行,一旦該計算機發(fā)生故障,則整個系統(tǒng)受到影響,可靠性不高;集中式處理引起系統(tǒng)的規(guī)模和配置都不夠靈活,系統(tǒng)的可擴(kuò)充性差。在這種形勢下,集中式數(shù)據(jù)庫將向分布式數(shù)據(jù)庫發(fā)展。數(shù)據(jù)庫集群是將多臺服務(wù)器聯(lián)合起來組成集群來實現(xiàn)綜合性能優(yōu)于單個大型服務(wù)器的技術(shù)。Amoeba =Amoeba是ー個以MySQL為底層數(shù)據(jù)存儲,并對應(yīng)用提供MySQL協(xié)議接ロ的代理(proxy)。位于客戶端(Client)和數(shù)據(jù)庫服務(wù)器端(DB Server (S))之間。Amoeba對客戶端透明,具有負(fù)載均衡、高可用性、sql過濾、讀寫分離、可路由相關(guān)的查詢請求到目標(biāo)數(shù)據(jù)庫、可并發(fā)請求多臺數(shù)據(jù)庫合并結(jié)果。Amoeba已經(jīng)解決從數(shù)據(jù)庫集群中取數(shù)據(jù)的問題,但在對取來的數(shù)據(jù)進(jìn)行分組匯總、排序、和/或分頁展示的問題,卻未涉及。而如何解決上述直接關(guān)聯(lián)到系統(tǒng)的時間效率及系統(tǒng)資源利用率。近來,提出了ー種對M0NG0DB的集群采用MAPREDUCE來進(jìn)行數(shù)據(jù)查詢中的匯總處理的方法。這種方法的缺點是速度較慢。例如,當(dāng)查詢結(jié)果數(shù)據(jù)量超過50萬時,分組匯總速度會無法容忍,可能超過15秒。此外,若在進(jìn)行數(shù)據(jù)查詢得到分組數(shù)據(jù)時、通過編寫算法來將Amoeba選取的數(shù)據(jù)進(jìn)行匯總,則當(dāng)數(shù)據(jù)量較大時,會超過APACHE所允許的緩存大小設(shè)置,從而導(dǎo)致服務(wù)端的504錯誤。此外,由于編寫算法需要手動地進(jìn)行,需要編程工作量且需要后期維護(hù),容易出現(xiàn)BUG。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題之ー是需要提供ー種效率較高、維護(hù)便捷的數(shù)據(jù)庫集群數(shù)據(jù)查詢方法、裝置及系統(tǒng)。為了解決上述技術(shù)問題,本發(fā)明提供了一種數(shù)據(jù)庫集群數(shù)據(jù)查詢方法,包括:與數(shù)據(jù)庫代理裝置建立連接; 將查詢條件傳送給所述數(shù)據(jù)庫代理裝置;接收從所述數(shù)據(jù)庫代理裝置返回的由所述數(shù)據(jù)庫集群中各數(shù)據(jù)庫服務(wù)器獲取的由各所述數(shù)據(jù)庫服務(wù)器分別基于所述查詢條件得到的結(jié)果,作為第一查詢結(jié)果;將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器;
接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。進(jìn)ー步,所述將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器的步驟包括:通過所述數(shù)據(jù)庫代理裝置將所述第一查詢結(jié)果插入所述指定數(shù)據(jù)庫服務(wù)器;以及/或者,所述接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果的步驟包括:通過數(shù)據(jù)庫代理裝置接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被插入的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。進(jìn)ー步,所述將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器的步驟包括:通過向所述指定數(shù)據(jù)庫服務(wù)器的特定臨時表中插入所述第一查詢結(jié)果來將所述第一查詢結(jié)果插入指定數(shù)據(jù)庫服務(wù)器。進(jìn)ー步,所述接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果的步驟包括:生成用于分組查詢所述指定數(shù)據(jù)庫服務(wù)器中被插入的數(shù)據(jù)的分組查詢條件,利用所生成的查詢語句條件查詢指定數(shù)據(jù)庫服務(wù)器,以基于被插入的數(shù)據(jù)以獲取對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。進(jìn)ー步,所述接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果的步驟包括:生成用于查詢被存儲的數(shù)據(jù)以獲取按照所述設(shè)定條件進(jìn)行分組后的查詢結(jié)果的所述分組查詢條件,再接收由所述指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。進(jìn)ー步,所述數(shù)據(jù)庫服務(wù)器是Mysql數(shù)據(jù)庫服務(wù)器,以及/或者所述數(shù)據(jù)庫代理裝置是Amoeba數(shù)據(jù)庫代理裝置。根據(jù)本發(fā)明另一方面,還提供了一種數(shù)據(jù)庫集群數(shù)據(jù)查詢客戶端,包括:連接建立模塊,用干與數(shù)據(jù)庫代理裝置建立連接;查詢條件傳送模塊,用于將查詢條件傳送給所述數(shù)據(jù)庫代理裝置;第一接收模塊,用于接收從所述數(shù)據(jù)庫代理裝置返回的由所述數(shù)據(jù)庫集群中各數(shù)據(jù)庫服務(wù)器獲取的由各數(shù)據(jù)庫服務(wù)器分別基于所述查詢條件得到的結(jié)果,作為第一查詢結(jié)果;插入模塊,用于將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器;第二接收模塊,用于接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。其中,所述插入模塊進(jìn)一歩通過所述數(shù)據(jù)庫代理裝置將所述第一查詢結(jié)果插入所述指定數(shù)據(jù)庫服務(wù)器;以及/或者,第二接收模塊進(jìn)ー步通過所述數(shù)據(jù)庫代理裝置接收所述對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。其中,所述插入模塊進(jìn)一歩用于通過向所述指定數(shù)據(jù)庫服務(wù)器的特定臨時表中插入所述第一查詢結(jié)果來將所述第一查詢結(jié)果插入指定數(shù)據(jù)庫服務(wù)器。根據(jù)本發(fā)明另一方面,還提供了一種數(shù)據(jù)庫集群數(shù)據(jù)查詢系統(tǒng)。所述系統(tǒng)包括數(shù)據(jù)庫集群,所述數(shù)據(jù)庫集群包括兩個或兩個以上數(shù)據(jù)庫服務(wù)器,客戶端和數(shù)據(jù)庫代理裝置,其中,所述客戶端用干:與所述數(shù)據(jù)庫代理裝置建立連接;將查詢條件傳送給所述數(shù)據(jù)庫代理裝置; 接收從所述數(shù)據(jù)庫代理裝置返回的由所述數(shù)據(jù)庫集群中各數(shù)據(jù)庫服務(wù)器獲取的由各所述數(shù)據(jù)庫服務(wù)器分別基于所述查詢條件得到的結(jié)果,作為第一查詢結(jié)果;將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器;接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。,與現(xiàn)有技術(shù)相比,本發(fā)明的一個或多個實施例可以具有如下優(yōu)點:本發(fā)明無需采用MAPREDUCE來進(jìn)行數(shù)據(jù)查詢中的匯總處理,取而代之的是簡單地向指定數(shù)據(jù)庫服務(wù)器進(jìn)行數(shù)據(jù)插入后再返回所插入的數(shù)據(jù)的操作,因此處理效率較高,減少查詢響應(yīng)時延。此外,本發(fā)明通過將從各數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)寫入一指定數(shù)據(jù)庫服務(wù)器,再從該指定數(shù)據(jù)庫服務(wù)器讀取所寫入的數(shù)據(jù),無需編寫程序代碼來實現(xiàn)數(shù)據(jù)的匯總和/或排序,因此可避免代碼出錯、減少編程工作量和需要后期維護(hù)工作量。雖然在下文中將結(jié)合一些示例性實施及使用方法來描述本發(fā)明,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,為并不g在將本發(fā)明限制于這些實施例。反之,g在覆蓋包含在所附的權(quán)利要求書所定義的本發(fā)明的精神與范圍內(nèi)的所有替代品、修正及等效物。本發(fā)明的其他優(yōu)點、目標(biāo),和特征在某種程度上將在隨后的說明書中進(jìn)行闡述,并且在某種程度上,基于對下文的考察研究對本領(lǐng)域技術(shù)人員而言將是顯而易見的,或者可以從本發(fā)明的實踐中得到教導(dǎo)。本發(fā)明的目標(biāo)和其他優(yōu)點可以通過下面的說明書,權(quán)利要求書,以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖用來提供對本發(fā)明的進(jìn)ー步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例共同用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:圖1示出根據(jù)本發(fā)明一實施例的數(shù)據(jù)庫集群數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)示意圖;圖2未決出根據(jù)本發(fā)明一實施例的數(shù)據(jù)庫集群數(shù)據(jù)查詢方法的流程示意圖;圖3示出根據(jù)本發(fā)明一實施例的數(shù)據(jù)庫集群數(shù)據(jù)查詢客戶端的結(jié)構(gòu)示意圖。
具體實施例方式以下將結(jié)合附圖及實施例來詳細(xì)說明本發(fā)明的實施方式,借此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實現(xiàn)過程能充分理解并據(jù)以實施。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個實施例以及各實施例中的各個特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。另外,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。圖1示出根據(jù)本發(fā)明一實施例的數(shù)據(jù)庫集群數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)示意圖。該數(shù)據(jù)庫集群數(shù)據(jù)查詢系統(tǒng)包括客戶端10、數(shù)據(jù)庫代理裝置20、兩臺MySql數(shù)據(jù)庫服務(wù)器30。客戶端10通過數(shù)據(jù)庫代理裝置20從由MySql數(shù)據(jù)庫服務(wù)器30組成的數(shù)據(jù)庫集群中查詢數(shù)據(jù)。數(shù)據(jù)庫代理裝置20可以設(shè)置為安裝了 Amoeba等的位于客戶端10與數(shù)據(jù)庫服務(wù)器30之間的數(shù)據(jù)庫代理服務(wù)器。此外,數(shù)據(jù)庫服務(wù)器可以為兩臺或兩臺以上。在2臺服務(wù)器中安裝數(shù)據(jù)庫,以構(gòu)建兩臺MySql數(shù)據(jù)庫服務(wù)器30。在一臺服務(wù)器中安裝JVM (JAVA虛擬機)并安裝Amoeba應(yīng)用,以構(gòu)建作為數(shù)據(jù)庫代理裝置20的Amoeba服務(wù)器(簡稱Amoeba)。配置Amoeba與Mysql的聯(lián)接配置文件與配置規(guī)則。更具體地,安裝完成后,進(jìn)行如下配置:修改Amoeba配置文件中的dbServer.xml文件中增加:
權(quán)利要求
1.一種數(shù)據(jù)庫集群數(shù)據(jù)查詢方法,其特征在于,包括: 與數(shù)據(jù)庫代理裝置建立連接; 將查詢條件傳送給所述數(shù)據(jù)庫代理裝置; 接收從所述數(shù)據(jù)庫代理裝置返回的由所述數(shù)據(jù)庫集群中各數(shù)據(jù)庫服務(wù)器獲取的由各所述數(shù)據(jù)庫服務(wù)器分別基于所述查詢條件得到的結(jié)果,作為第一查詢結(jié)果; 將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器; 接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在干, 所述將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器的步驟包括:通過所述數(shù)據(jù)庫代理裝置將所述第一查詢結(jié)果插入所述指定數(shù)據(jù)庫服務(wù)器;以及/或者, 所述接收由指定數(shù)據(jù)庫服務(wù) 器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果的步驟包括:通過數(shù)據(jù)庫代理裝置接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被插入的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器的步驟包括: 通過向所述指定數(shù)據(jù)庫服務(wù)器的特定臨時表中插入所述第一查詢結(jié)果來將所述第一查詢結(jié)果插入指定數(shù)據(jù)庫服務(wù)器。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果的步驟包括: 生成用于分組查詢所述指定數(shù)據(jù)庫服務(wù)器中被插入的數(shù)據(jù)的分組查詢條件,利用所生成的查詢語句條件查詢指定數(shù)據(jù)庫服務(wù)器,以基于被插入的數(shù)據(jù)以獲取對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果的步驟包括:生成用于查詢被存儲的數(shù)據(jù)以獲取按照所述設(shè)定條件進(jìn)行分組后的查詢結(jié)果的所述分組查詢條件,再接收由所述指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)庫服務(wù)器是Mysql數(shù)據(jù)庫服務(wù)器,以及/或者所述數(shù)據(jù)庫代理裝置是Amoeba數(shù)據(jù)庫代理裝置。
7.一種數(shù)據(jù)庫集群數(shù)據(jù)查詢客戶端,其特征在于,包括: 連接建立模塊,用干與數(shù)據(jù)庫代理裝置建立連接; 查詢條件傳送模塊,用于將查詢條件傳送給所述數(shù)據(jù)庫代理裝置; 第一接收模塊,用于接收從所述數(shù)據(jù)庫代理裝置返回的由所述數(shù)據(jù)庫集群中各數(shù)據(jù)庫服務(wù)器獲取的由各數(shù)據(jù)庫服務(wù)器分別基于所述查詢條件得到的結(jié)果,作為第一查詢結(jié)果;插入模塊,用于將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器; 第二接收模塊,用于接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。
8.根據(jù)權(quán)利要求7所述的客戶端,其特征在干, 所述插入模塊進(jìn)一歩通過所述數(shù)據(jù)庫代理裝置將所述第一查詢結(jié)果插入所述指定數(shù)據(jù)庫服務(wù)器;以及/或者, 第二接收模塊進(jìn)ー步通過所述數(shù)據(jù)庫代理裝置接收所述對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。
9.根據(jù)權(quán)利要求7所述的客戶端,其特征在于,所述插入模塊進(jìn)一歩用于通過向所述指定數(shù)據(jù)庫服務(wù)器的特定臨時表中插入所述第一查詢結(jié)果來將所述第一查詢結(jié)果插入指定數(shù)據(jù)庫服務(wù)器。
10.一種數(shù)據(jù)庫集群數(shù)據(jù)查詢系統(tǒng),其特征在干,所述系統(tǒng)包括數(shù)據(jù)庫集群,所述數(shù)據(jù)庫集群包括兩個或兩個以上數(shù)據(jù)庫服務(wù)器,客戶端和數(shù)據(jù)庫代理裝置,其中,所述客戶端用于: 與所述數(shù)據(jù)庫代理裝置建立連接; 將查詢條件傳送給所述數(shù)據(jù)庫代理裝置; 接收從所述數(shù)據(jù)庫代理裝置返回的由所述數(shù)據(jù)庫集群中各數(shù)據(jù)庫服務(wù)器獲取的由各所述數(shù)據(jù)庫服務(wù)器分別基于所述查詢條件得到的結(jié)果,作為第一查詢結(jié)果; 將所述第一查詢結(jié)果存儲至指定 數(shù)據(jù)庫服務(wù)器; 接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)庫集群數(shù)據(jù)查詢方法、客戶端及系統(tǒng)。該方法包括與數(shù)據(jù)庫代理裝置建立連接;將查詢條件傳送給所述數(shù)據(jù)庫代理裝置;接收從所述數(shù)據(jù)庫代理裝置返回的由所述數(shù)據(jù)庫集群中各數(shù)據(jù)庫服務(wù)器獲取的由各所述數(shù)據(jù)庫服務(wù)器分別基于所述查詢條件得到的結(jié)果,作為第一查詢結(jié)果;將所述第一查詢結(jié)果存儲至指定數(shù)據(jù)庫服務(wù)器;接收由指定數(shù)據(jù)庫服務(wù)器基于分組查詢條件和被存儲的數(shù)據(jù)返回的對所述第一查詢結(jié)果按照設(shè)定條件分組后的查詢結(jié)果。本發(fā)明無需采用MAPREDUCE來進(jìn)行數(shù)據(jù)查詢中的匯總處理,取而代之的是簡單地向指定數(shù)據(jù)庫服務(wù)器進(jìn)行數(shù)據(jù)插入后再返回所插入的數(shù)據(jù)的操作,因此處理效率較高,減少查詢響應(yīng)時延。
文檔編號G06F17/30GK103116655SQ201310071679
公開日2013年5月22日 申請日期2013年3月6日 優(yōu)先權(quán)日2013年3月6日
發(fā)明者茹意, 羅峰, 黃蘇支, 李娜 申請人:億贊普(北京)科技有限公司