本發(fā)明涉及數(shù)據(jù)庫預處理技術領域,尤其涉及一種分布式數(shù)據(jù)庫預處理的方法及裝置。
背景技術:
目前,通常采用數(shù)據(jù)庫預處理技術對數(shù)據(jù)庫服務器進行操作,當創(chuàng)建數(shù)據(jù)庫預處理操作語句時,客戶端向數(shù)據(jù)庫服務器發(fā)送一個包括查詢、插入、更新等操作的數(shù)據(jù)庫操作語句模板,然后,數(shù)據(jù)庫服務器對數(shù)據(jù)庫操作語句模板進行解析,生成對應的語法樹,并將經(jīng)過處理的數(shù)據(jù)庫操作語句模板保存起來,數(shù)據(jù)庫預處理操作語句模板用問號(?)代表執(zhí)行具體操作的參數(shù)值,當客戶端執(zhí)行對應的查詢、插入、更新等具體操作時,可以將問號所代表的參數(shù)值發(fā)送至數(shù)據(jù)庫服務器,即可得到操作結果,上述過程可以重復多次,采用數(shù)據(jù)庫預處理操作技術的優(yōu)勢在于:
1、數(shù)據(jù)庫所在的服務器只需解析一次數(shù)據(jù)庫操作語句,并且完整的數(shù)據(jù)庫操作語句不會被發(fā)送至服務器,只需采用二進制協(xié)議的形式發(fā)送參與具體業(yè)務的參數(shù)信息,節(jié)約了處理具體業(yè)務的開銷如內(nèi)存、帶寬;
2、數(shù)據(jù)庫所在的服務器緩存了部分處理數(shù)據(jù)庫操作語句的計劃,所以只需執(zhí)行一次解析數(shù)據(jù)庫操作語句的動作,提高了處理具體業(yè)務的效率;
3、采用預處理技術的數(shù)據(jù)庫服務器,可以有效避免所述數(shù)據(jù)庫服務器遭遇注入式攻擊,提高了數(shù)據(jù)庫服務器的安全性。
但是,數(shù)據(jù)庫預處理技術目前只能在獨立式數(shù)據(jù)庫服務器上使用,而不能在分布式數(shù)據(jù)庫服務器上使用。
技術實現(xiàn)要素:
本發(fā)明的主要目的在于提供一種分布式數(shù)據(jù)庫預處理的方法及裝置,旨在解決數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題。
為了實現(xiàn)上述目的,本發(fā)明提供一種分布式數(shù)據(jù)庫預處理的方法,所述方法包括以下步驟:
從客戶端處獲取分布式數(shù)據(jù)庫操作語句模板,并獲取操作語句參數(shù)信息;
通過解析所述分布式數(shù)據(jù)庫操作語句模板確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群,并發(fā)送所述分布式數(shù)據(jù)庫操作語句模板至所述分布式數(shù)據(jù)庫服務器集群;
發(fā)送所述操作語句參數(shù)信息至所述分布式數(shù)據(jù)庫服務器集群;
獲取所述分布式數(shù)據(jù)庫服務器集群根據(jù)所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息返回的處理結果。
優(yōu)選地,所述通過解析所述分布式數(shù)據(jù)庫操作語句模板確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群的步驟包括:
解析所述分布式數(shù)據(jù)庫操作語句模板生成語法樹;
根據(jù)所述語法樹,計算生成所述分布式數(shù)據(jù)庫操作語句模板的執(zhí)行計劃樹;
根據(jù)所述執(zhí)行計劃樹,獲取與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群。
優(yōu)選地,所述操作語句參數(shù)信息包括操作語句參數(shù)值及用于將所述操作語句參數(shù)值匹配給所述分布式數(shù)據(jù)庫操作語句模板的標識信息。
優(yōu)選地,所述獲取所述分布式數(shù)據(jù)庫服務器集群根據(jù)所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息返回的處理結果的步驟包括:
獲取由所述分布式數(shù)據(jù)庫服務器集群返回的結果數(shù)據(jù),其中,所述結果數(shù)據(jù)是位于所述分布式數(shù)據(jù)庫服務器集群中的多個分布式數(shù)據(jù)庫服務器結合所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息對存儲于對應的分布式數(shù)據(jù)庫服務器中的數(shù)據(jù)進行處理而得到的結果;
對所述結果數(shù)據(jù)進行匯總計算,獲取經(jīng)過匯總計算的結果集。
優(yōu)選地,所述獲取所述分布式數(shù)據(jù)庫服務器集群根據(jù)所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息返回的處理結果的步驟之后還包括:
將所述處理結果發(fā)送至客戶端;從客戶端處獲取關閉預處理操作的請求信息,并發(fā)送所述請求信息至執(zhí)行預處理操作的分布式數(shù)據(jù)庫服務器集群;關閉位于所述分布式數(shù)據(jù)庫服務器集群中的多個分布式數(shù)據(jù)庫服務器的預處理服務。
此外,為實現(xiàn)上述目的,本發(fā)明還提供一種分布式數(shù)據(jù)庫預處理的裝置,所述裝置包括:
模板獲取模塊,用于從客戶端處獲取分布式數(shù)據(jù)庫操作語句模板,并獲取操作語句參數(shù)信息;
模板處理模塊,用于通過解析所述分布式數(shù)據(jù)庫操作語句模板確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群,并發(fā)送所述分布式數(shù)據(jù)庫操作語句模板至所述分布式數(shù)據(jù)庫服務器集群;
參數(shù)信息轉發(fā)模塊,用于發(fā)送所述操作語句參數(shù)信息至所述分布式數(shù)據(jù)庫服務器集群;
結果返回模塊,用于獲取所述分布式數(shù)據(jù)庫服務器根據(jù)所述執(zhí)行預處理操作的請求信息返回的處理結果。
優(yōu)選地,所述操作語句參數(shù)信息包括操作語句參數(shù)值及用于將所述操作語句參數(shù)值匹配給所述分布式數(shù)據(jù)庫操作語句模板的標識信息。
優(yōu)選地,所述模板處理模塊還用于:
解析生成所述分布式數(shù)據(jù)庫操作語句模板的語法樹;
根據(jù)所述語法樹,計算生成所述分布式數(shù)據(jù)庫操作語句模板的執(zhí)行計劃樹;
根據(jù)所述執(zhí)行計劃樹,獲取與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群。
優(yōu)選地,所述結果返回模塊還用于:
獲取由所述分布式數(shù)據(jù)庫服務器集群返回的結果數(shù)據(jù),其中,所述結果數(shù)據(jù)是位于所述分布式數(shù)據(jù)庫服務器集群中的多個分布式數(shù)據(jù)庫服務器結合所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息對存儲于對應的分布式數(shù)據(jù)庫服務器中的數(shù)據(jù)進行處理而得到的結果;
對所述結果數(shù)據(jù)進行匯總計算,獲取經(jīng)過匯總計算的結果集。
優(yōu)選地,所述分布式數(shù)據(jù)庫預處理的裝置還包括:
將所述處理結果發(fā)送至客戶端;從客戶端處獲取關閉預處理操作的請求信息,并發(fā)送所述請求信息至執(zhí)行預處理操作的分布式數(shù)據(jù)庫服務器集群;關閉位于所述分布式數(shù)據(jù)庫服務器集群中的多個分布式數(shù)據(jù)庫服務器的預處理服務。
本發(fā)明提供了一種分布式數(shù)據(jù)庫預處理的方法及裝置,通過從客戶端處獲取分布式數(shù)據(jù)庫操作語句模板,并獲取操作語句參數(shù)信息,對所述分布式數(shù)據(jù)庫操作語句模板進行解析,確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群,發(fā)送所述分布式數(shù)據(jù)庫操作語句模板至所述分布式數(shù)據(jù)庫服務器集群,并發(fā)送所述操作語句參數(shù)信息至所述分布式數(shù)據(jù)庫服務器集群,獲取所述分布式數(shù)據(jù)庫服務器集群根據(jù)所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息返回的處理結果,從而解決了數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題。
附圖說明
圖1為本發(fā)明分布式數(shù)據(jù)庫預處理的方法一實施例的流程示意圖;
圖2為本發(fā)明分布式數(shù)據(jù)庫預處理的方法二實施例的流程示意圖;
圖3為本發(fā)明分布式數(shù)據(jù)庫預處理的裝置一實施例的功能模塊示意圖;
圖4是本發(fā)明實施例中分布式數(shù)據(jù)庫系統(tǒng)的結構示意圖;
圖5是本發(fā)明實施例中分布式數(shù)據(jù)庫操作語句預處理的裝置的另一種功能模塊示意圖;
圖6為本發(fā)明分布式數(shù)據(jù)庫預處理的裝置二實施例的功能模塊示意圖。
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結合實施例,參照附圖做進一步說明。
具體實施方式
應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供一種分布式數(shù)據(jù)庫預處理的方法。
參照圖1,圖1為本發(fā)明分布式數(shù)據(jù)庫操作語句預處理的方法一實施例的流程示意圖。
在一實施例中,該分布式數(shù)據(jù)庫操作語句預處理的方法包括:
步驟s10,從客戶端處獲取分布式數(shù)據(jù)庫操作語句模板,并獲取操作語句參數(shù)信息;
本實施例中的技術方案涉及客戶端與分布式數(shù)據(jù)庫服務器之間的交互,以實現(xiàn)客戶端通過發(fā)送分布式數(shù)據(jù)庫操作語句請求來完成對分布式數(shù)據(jù)庫的訪問。其中,本實施例在客戶端與分布式數(shù)據(jù)庫服務器之間引入中間件,也稱分布式數(shù)據(jù)庫操作語句預處理的裝置,通過中間件實現(xiàn)分布式數(shù)據(jù)庫預處理。
本實施例分布式數(shù)據(jù)庫系統(tǒng)的結構可以如圖4所示,其中,本實施例中的分布式數(shù)據(jù)庫操作語句預處理的裝置可以包括執(zhí)行模塊及操作語句路由模塊(sql路由模塊)。
具體地,作為一種功能模塊設置方式,可以參照圖5所示,所述執(zhí)行模塊可以包括線程池單元、線程調(diào)度單元、數(shù)據(jù)操作語句解析單元(sql解析單元)、數(shù)據(jù)操縱語言單元(dml單元)、數(shù)據(jù)定義語言單元(ddl單元)、中介數(shù)據(jù)緩存單元,以及與sql路由接口,具體的執(zhí)行模塊的組成部分,在此不作限定。
具體地,所述線程池單元負責管理所述分布式數(shù)據(jù)庫操作語句預處理的裝置的所有線程的使用與回收。當所述分布式數(shù)據(jù)庫操作語句預處理的裝置獲取由客戶端處發(fā)送的分布式數(shù)據(jù)庫操作語句模板時,所述線程調(diào)度單元從所述線程池單元調(diào)度一個線程用于處理所述分布式數(shù)據(jù)庫操作語句模板。
所述數(shù)據(jù)定義語言單元負責將數(shù)據(jù)定義語句轉化為可在分布式數(shù)據(jù)庫服務器中執(zhí)行的數(shù)據(jù)定義語句,并將所述數(shù)據(jù)定義語句的分發(fā)策略信息存儲于數(shù)據(jù)字典文件中,再將所述分發(fā)策略信息加載至緩存中,以供所述數(shù)據(jù)操縱語言單元使用。
當所述分布式數(shù)據(jù)庫操作語句預處理的裝置啟動時,所述分布式數(shù)據(jù)庫操作語句預處理的裝置將全部分發(fā)策略信息加載至緩存中,所述中介數(shù)據(jù)緩存單元負責管理所述分發(fā)策略信息,并向所述數(shù)據(jù)操縱語言單元提供查詢服務。
本實施例中,通過在客戶端處設定分布式數(shù)據(jù)庫操作語句,其中,所述分布式數(shù)據(jù)庫操作語句包括分布式數(shù)據(jù)庫操作語句模板與分布式數(shù)據(jù)庫操作語句參數(shù)值??蛻舳藢⒎植际綌?shù)據(jù)庫操作語句拆分為單獨的分布式數(shù)據(jù)庫操作語句模板與單獨的分布式數(shù)據(jù)庫操作語句參數(shù)值,其中,單獨的分布式數(shù)據(jù)庫操作語句模板,如insertintostudents(firstname,lastname,email) values(?,?,?),可以包括操作語句語法框架、數(shù)據(jù)庫表頭信息、操作語句參數(shù)變量,具體地,所述分布式數(shù)據(jù)庫操作語句模板的組成部分,在此不作限定。分布式數(shù)據(jù)庫操作語句模板由客戶端發(fā)送至分布式數(shù)據(jù)庫操作語句預處理的裝置。
步驟s20,通過解析所述分布式數(shù)據(jù)庫操作語句模板確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群,并發(fā)送所述分布式數(shù)據(jù)庫操作語句模板至所述分布式數(shù)據(jù)庫服務器集群;
在獲取分布式數(shù)據(jù)庫操作語句模板后,分布式數(shù)據(jù)庫操作語句預處理的裝置對所述分布式數(shù)據(jù)庫操作語句模板進行解析,確定存儲以數(shù)據(jù)庫表頭信息作為標識的數(shù)據(jù)庫表的分布式數(shù)據(jù)庫服務器,將全部符合條件的分布式數(shù)據(jù)庫服務器打包成一個分布式數(shù)據(jù)庫服務器集群,再向所述分布式數(shù)據(jù)庫服務器集群發(fā)送包括所述數(shù)據(jù)庫表頭信息的分布式數(shù)據(jù)庫操作語句模板。
步驟s30,發(fā)送所述操作語句參數(shù)信息至所述分布式數(shù)據(jù)庫服務器集群;
在分布式數(shù)據(jù)庫操作語句預處理的裝置獲取由客戶端發(fā)送的與所述分布式數(shù)據(jù)庫操作語句模板匹配的操作語句參數(shù)信息后,所述分布式數(shù)據(jù)庫操作語句預處理的裝置將所述操作語句參數(shù)信息發(fā)送至經(jīng)過確定的分布式數(shù)據(jù)庫服務器集群。
位于所述分布式數(shù)據(jù)庫服務器集群中的所有分布式數(shù)據(jù)庫服務器將之前獲取的分布式數(shù)據(jù)庫操作語句模板與所述操作語句參數(shù)信息進行組合,形成可以被所述分布式數(shù)據(jù)庫服務器執(zhí)行的完整的分布式數(shù)據(jù)庫操作語句,通過執(zhí)行所述分布式數(shù)據(jù)庫操作語句,完成對存儲于所述分布式數(shù)據(jù)庫服務器中的數(shù)據(jù)的具體操作,如查詢數(shù)據(jù)、插入數(shù)據(jù)、更新數(shù)據(jù)等,具體的,所述具體操作的操作內(nèi)容,在此不作限定。
步驟s40,獲取所述分布式數(shù)據(jù)庫服務器集群根據(jù)所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息返回的處理結果。
在完成相關的操作后,所有分布式數(shù)據(jù)庫服務器將操作結果發(fā)送至分布式數(shù)據(jù)庫操作語句預處理的裝置,所述操作結果包括操作成功信息、操作失敗信息、操作用時信息等,具體地,所述操作結果,在此不作限定。
本實施例通過從客戶端處獲取分布式數(shù)據(jù)庫操作語句模板,并獲取操作 語句參數(shù)信息,對所述分布式數(shù)據(jù)庫操作語句模板進行解析,確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群,發(fā)送所述分布式數(shù)據(jù)庫操作語句模板至所述分布式數(shù)據(jù)庫服務器集群,并發(fā)送所述操作語句參數(shù)信息至所述分布式數(shù)據(jù)庫服務器集群,獲取所述分布式數(shù)據(jù)庫服務器集群根據(jù)所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息返回的處理結果。解決了數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題。
進一步地,在其他實施例中,上述步驟s20可以包括:
解析生成所述分布式數(shù)據(jù)庫操作語句模板的語法樹;
根據(jù)所述語法樹,計算所述分布式數(shù)據(jù)庫操作語句模板生成執(zhí)行計劃樹;
根據(jù)所述執(zhí)行計劃樹,獲取與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群。
該實施例中,通過解析由客戶端處獲取的分布式數(shù)據(jù)庫操作語句模板,生成所述分布式數(shù)據(jù)庫操作語句模板的語法樹,由數(shù)據(jù)操縱語言單元對所述語法樹進行計算,生成所述分布式數(shù)據(jù)庫操作語句模板的計劃執(zhí)行樹,根據(jù)所述計劃執(zhí)行樹,所述數(shù)據(jù)操縱語言單元確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群,并將所有位于所述分布式數(shù)據(jù)庫服務器集群中的分布式數(shù)據(jù)庫服務器的網(wǎng)絡地址信息存儲于所述執(zhí)行計劃樹的節(jié)點中,由分布式數(shù)據(jù)庫操作語句預處理的裝置將所述分布式數(shù)據(jù)庫操作語句模板發(fā)送至所述分布式數(shù)據(jù)庫服務器集群。
具體地,所述數(shù)據(jù)操作語句解析單元負責解析由客戶端處獲取的分布式數(shù)據(jù)庫操作語句模板,生成所述分布式數(shù)據(jù)庫操作語句模板的語法樹,再將所述語法樹發(fā)送至所述數(shù)據(jù)操縱語言單元與所述數(shù)據(jù)定義語言單元用于生成與所述分布式數(shù)據(jù)庫操作語句模板對應的執(zhí)行計劃樹。
在一種實施方式中,客戶端將分布式數(shù)據(jù)庫操作語句模板發(fā)送至分布式數(shù)據(jù)庫操作語句預處理的裝置,當所述分布式數(shù)據(jù)庫操作語句預處理的裝置獲取所述分布式數(shù)據(jù)庫操作語句模板時,對所述分布式數(shù)據(jù)庫操作語句模板中的操作語句語法框架進行解析,得到語法樹,所述數(shù)據(jù)操縱語言單元通過分析所述語法樹,獲取所述分布式數(shù)據(jù)庫操作語句模板中的數(shù)據(jù)庫表頭信息, 并通過中介數(shù)據(jù)緩存單元獲取存儲以所述數(shù)據(jù)庫表頭信息作為標識的數(shù)據(jù)庫表的所有分布式數(shù)據(jù)庫服務器的網(wǎng)絡地址信息,根據(jù)所述網(wǎng)絡地址信息,生成執(zhí)行計劃樹,并將所述網(wǎng)絡地址信息存儲于所述執(zhí)行計劃樹中。
上述實施例方案,通過存儲于所述執(zhí)行計劃樹中的所述網(wǎng)絡地址信息,確定與所述分布式數(shù)據(jù)庫操作語句模板對應的所有分布式數(shù)據(jù)庫服務器,并與所述所有分布式數(shù)據(jù)庫服務器集群建立邏輯鏈路通道,其中,所述分布式數(shù)據(jù)庫服務器組成一個分布式數(shù)據(jù)庫服務器集群。通過操作語句路由器即操作語句路由模塊通過所述邏輯鏈路通道向所述分布式數(shù)據(jù)庫服務器集群發(fā)送所述分布式數(shù)據(jù)庫操作語句模板。解決了數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題。
進一步地,在其他實施例中,操作語句參數(shù)信息包括操作語句參數(shù)值及用于將所述操作語句參數(shù)值匹配給所述分布式數(shù)據(jù)庫操作語句模板的標識信息。
該實施例中,參數(shù)信息可以包括中間變量。位于所述分布式數(shù)據(jù)庫服務器集群中的所有分布式數(shù)據(jù)庫服務器將之前獲取的分布式數(shù)據(jù)庫操作語句模板中的問號(?)與所述中間變量進行組合,獲取包括所述中間變量的分布式數(shù)據(jù)庫操作語句模板,如insertintostudents(firstname,lastname,email)values(x,y,z),其中,中間變量x、中間變量y及中間變量z可以與在客戶端中設定的參數(shù)x、參數(shù)y及參數(shù)z形成邏輯關系,具體地,所述中間變量的數(shù)量,在此不作限定。在所述客戶端中,當對所述參數(shù)x、所述參數(shù)y及所述參數(shù)z執(zhí)行賦值運算操作如循環(huán)賦值運算時,用于執(zhí)行賦值操作的參數(shù)值可以對所述中間變量x、所述中間變量y及所述中間變量z進行賦值,其中,所述參數(shù)值是所述參數(shù)信息的組成部分。中間變量的引入,解決了當需多次要執(zhí)行發(fā)送參數(shù)信息的操作時,需要在客戶端處多次輸入?yún)?shù)值的問題,提升了用戶體驗。
進一步地,在其他實施例中,上述步驟s40可以包括:
獲取由所述分布式數(shù)據(jù)庫服務器集群返回的結果數(shù)據(jù),其中,所述結果數(shù)據(jù)是位于所述分布式數(shù)據(jù)庫服務器集群中的多個分布式數(shù)據(jù)庫服務器結合 所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息對存儲于對應的分布式數(shù)據(jù)庫服務器中的數(shù)據(jù)進行處理而得到的結果;
對所述結果數(shù)據(jù)進行匯總計算,獲取經(jīng)過匯總計算的結果集。
該實施例中,分布式數(shù)據(jù)庫服務器通過結合分布式數(shù)據(jù)庫操作語句模板與操作語句參數(shù)信息,對存儲于所述分布式數(shù)據(jù)庫服務器中的數(shù)據(jù)進行處理,處理方式可以包括增添數(shù)據(jù)、刪除數(shù)據(jù)、更改數(shù)據(jù)、查詢數(shù)據(jù)等,具體地,所述處理方式的處理內(nèi)容,在此不作限定。在完成相關的操作后,所述分布式數(shù)據(jù)庫服務器得到處理結果,所述處理結果可以包括操作成功信息、操作失敗信息、操作用時信息等。具體地,所述操作成功信息的具體內(nèi)容,如通過查詢操作得到的數(shù)據(jù),在此不作限定。
在一種實施方式中,操作語句路由器監(jiān)聽所述分布式數(shù)據(jù)庫服務器的處理過程,當處理結束時,所述分布式數(shù)據(jù)庫服務器將結果數(shù)據(jù)發(fā)送至執(zhí)行計劃樹的節(jié)點中,由分布式數(shù)據(jù)庫操作語句預處理的裝置對存儲于所述節(jié)點中的所述結果數(shù)據(jù)進行匯總計算,得到經(jīng)過匯總計算的結果集。解決了數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題。
參照圖2,圖2為本發(fā)明分布式數(shù)據(jù)庫預處理的方法二實施例的流程示意圖,在上述實施例的基礎上,在上述步驟s40之后還包括:
步驟s50,將所述處理結果發(fā)送至客戶端;從客戶端處獲取關閉預處理操作的請求信息,并發(fā)送所述請求信息至執(zhí)行預處理操作的分布式數(shù)據(jù)庫服務器集群;關閉位于所述分布式數(shù)據(jù)庫服務器集群中的多個分布式數(shù)據(jù)庫服務器的預處理服務。
本實施例中,將所述處理結果發(fā)送至客戶端,并從客戶端處獲取關閉預處理操作的請求信息,當分布式數(shù)據(jù)庫操作語句預處理的裝置獲取關閉預處理操作的請求信息時,所述分布式數(shù)據(jù)庫操作語句預處理的裝置銷毀相關的數(shù)據(jù),具體地,所述數(shù)據(jù)可以包括語法樹、執(zhí)行計劃樹及相關的緩存信息,在此不作限定。同時,向執(zhí)行預處理操作的分布式數(shù)據(jù)庫服務器發(fā)送所述請求信息,關閉所述數(shù)據(jù)庫服務器的預處理服務。解決了數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題,并在釋放硬件資源的基礎上,節(jié)省了硬件資源的內(nèi)存與存儲空間。
本發(fā)明進一步提供一種分布式數(shù)據(jù)庫預處理的裝置。
參照圖3,圖3為本發(fā)明分布式數(shù)據(jù)庫預處理的裝置一實施例的功能模塊示意圖。
在一實施例中,該分布式數(shù)據(jù)庫操作語句預處理的裝置可以包括:模板獲取模塊01、模板處理模塊02、參數(shù)信息轉發(fā)模塊03、結果返回模塊04,其中:
模板獲取模塊01,用于從客戶端處獲取分布式數(shù)據(jù)庫操作語句模板,并獲取操作語句參數(shù)信息;
本實施例中的技術方案涉及客戶端與分布式數(shù)據(jù)庫服務器之間的交互,以實現(xiàn)客戶端通過發(fā)送分布式數(shù)據(jù)庫操作語句請求來完成對分布式數(shù)據(jù)庫的操作。其中,本實施例在客戶端與分布式數(shù)據(jù)庫服務器之間引入中間件,也即本實施例提出的分布式數(shù)據(jù)庫操作語句預處理的裝置,通過中間件實現(xiàn)分布式數(shù)據(jù)庫預處理。本實施例中,通過在客戶端處設定分布式數(shù)據(jù)庫操作語句,其中,所述分布式數(shù)據(jù)庫操作語句包括分布式數(shù)據(jù)庫操作語句模板與分布式數(shù)據(jù)庫操作語句參數(shù)值。客戶端將分布式數(shù)據(jù)庫操作語句拆分為單獨的分布式數(shù)據(jù)庫操作語句模板與單獨的分布式數(shù)據(jù)庫操作語句參數(shù)值,其中,單獨的分布式數(shù)據(jù)庫操作語句模板,如insertintostudents(firstname,lastname,email)values(?,?,?),可以包括操作語句語法框架、數(shù)據(jù)庫表頭信息、操作語句參數(shù)變量,具體地,所述分布式數(shù)據(jù)庫操作語句模板的組成部分,在此不作限定。分布式數(shù)據(jù)庫操作語句模板由客戶端發(fā)送至分布式數(shù)據(jù)庫操作語句預處理的裝置。
模板處理模塊02,用于通過解析所述分布式數(shù)據(jù)庫操作語句模板確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群,并發(fā)送所述分布式數(shù)據(jù)庫操作語句模板至所述分布式數(shù)據(jù)庫服務器集群;
在獲取分布式數(shù)據(jù)庫操作語句模板后,分布式數(shù)據(jù)庫操作語句預處理的裝置對所述分布式數(shù)據(jù)庫操作語句模板進行解析,確定存儲以數(shù)據(jù)庫表頭信息作為標識的數(shù)據(jù)庫表的分布式數(shù)據(jù)庫服務器,將全部符合條件的分布式數(shù)據(jù)庫服務器打包成一個分布式數(shù)據(jù)庫服務器集群,再向所述分布式數(shù)據(jù)庫服務器集群發(fā)送包括所述數(shù)據(jù)庫表頭信息的分布式數(shù)據(jù)庫操作語句模板。
參數(shù)信息轉發(fā)模塊03,用于發(fā)送所述操作語句參數(shù)信息至所述分布式數(shù)據(jù)庫服務器集群;
在分布式數(shù)據(jù)庫操作語句預處理的裝置獲取由客戶端發(fā)送的與所述分布式數(shù)據(jù)庫操作語句模板匹配的操作語句參數(shù)信息后,所述分布式數(shù)據(jù)庫操作語句預處理的裝置將所述操作語句參數(shù)信息發(fā)送至經(jīng)過確定的分布式數(shù)據(jù)庫服務器集群。
位于所述分布式數(shù)據(jù)庫服務器集群中的所有分布式數(shù)據(jù)庫服務器將之前獲取的分布式數(shù)據(jù)庫操作語句模板與所述操作語句參數(shù)信息進行組合,形成可以被所述分布式數(shù)據(jù)庫服務器執(zhí)行的完整的分布式數(shù)據(jù)庫操作語句,通過執(zhí)行所述分布式數(shù)據(jù)庫操作語句,完成對存儲于所述分布式數(shù)據(jù)庫服務器中的數(shù)據(jù)的具體操作,如查詢數(shù)據(jù)、插入數(shù)據(jù)、更新數(shù)據(jù)等,具體的,所述具體操作的操作內(nèi)容,在此不作限定。
結果返回模塊04,用于獲取所述分布式數(shù)據(jù)庫服務器根據(jù)所述執(zhí)行預處理操作的請求信息返回的處理結果。
在完成相關的操作后,所有分布式數(shù)據(jù)庫服務器將操作結果發(fā)送至分布式數(shù)據(jù)庫操作語句預處理的裝置,所述操作結果包括操作成功信息、操作失敗信息、操作用時信息等,具體地,所述操作結果,在此不作限定。
本實施例通過從客戶端處獲取分布式數(shù)據(jù)庫操作語句模板,并獲取操作語句參數(shù)信息,對所述分布式數(shù)據(jù)庫操作語句模板進行解析,確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群,發(fā)送所述分布式數(shù)據(jù)庫操作語句模板至所述分布式數(shù)據(jù)庫服務器集群,并發(fā)送所述操作語句參數(shù)信息至所述分布式數(shù)據(jù)庫服務器集群,獲取所述分布式數(shù)據(jù)庫服務器集群根據(jù)所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息返回的處理結果。解決了數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題。
在一種實際應用中,本實施例分布式數(shù)據(jù)庫系統(tǒng)的結構可以如圖4所示,其中,本實施例中的分布式數(shù)據(jù)庫操作語句預處理的裝置可以包括執(zhí)行模塊及操作語句路由模塊(sql路由模塊),其中,該執(zhí)行模塊可以包括上述實施 例中的模板獲取模塊01和模板處理模塊02的功能,操作語句路由模塊可以包括上述實施例中的參數(shù)信息轉發(fā)模塊03和結果返回模塊04。
具體地,作為一種功能模塊設置方式,可以參照圖5所示,所述執(zhí)行模塊可以包括線程池單元、線程調(diào)度單元、數(shù)據(jù)操作語句解析單元(sql解析單元)、數(shù)據(jù)操縱語言單元(dml單元)、數(shù)據(jù)定義語言單元(ddl單元)、中介數(shù)據(jù)緩存單元,以及與sql路由接口,具體的執(zhí)行模塊的組成部分,在此不作限定。
具體地,所述線程池單元負責管理所述分布式數(shù)據(jù)庫操作語句預處理的裝置的所有線程的使用與回收。當所述分布式數(shù)據(jù)庫操作語句預處理的裝置獲取由客戶端處發(fā)送的分布式數(shù)據(jù)庫操作語句模板時,所述線程調(diào)度單元從所述線程池單元調(diào)度一個線程用于處理所述分布式數(shù)據(jù)庫操作語句模板。
所述數(shù)據(jù)定義語言單元負責將數(shù)據(jù)定義語句轉化為可在分布式數(shù)據(jù)庫服務器中執(zhí)行的數(shù)據(jù)定義語句,并將所述數(shù)據(jù)定義語句的分發(fā)策略信息存儲于數(shù)據(jù)字典文件中,再將所述分發(fā)策略信息加載至緩存中,以供所述數(shù)據(jù)操縱語言單元使用。
當所述分布式數(shù)據(jù)庫操作語句預處理的裝置啟動時,所述分布式數(shù)據(jù)庫操作語句預處理的裝置將全部分發(fā)策略信息加載至緩存中,所述中介數(shù)據(jù)緩存單元負責管理所述分發(fā)策略信息,并向所述數(shù)據(jù)操縱語言單元提供查詢服務。
進一步地,在其他實施例中,上述模板處理模塊02可以用于:
解析生成所述分布式數(shù)據(jù)庫操作語句模板的語法樹;根據(jù)所述語法樹,計算生成所述分布式數(shù)據(jù)庫操作語句模板的執(zhí)行計劃樹;根據(jù)所述執(zhí)行計劃樹,獲取與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群。
基于圖4所示的執(zhí)行模塊,在該實施例中,通過解析由客戶端處獲取的分布式數(shù)據(jù)庫操作語句模板,生成所述分布式數(shù)據(jù)庫操作語句模板的語法樹,由數(shù)據(jù)操縱語言單元對所述語法樹進行計算,生成所述分布式數(shù)據(jù)庫操作語句模板的計劃執(zhí)行樹,根據(jù)所述計劃執(zhí)行樹,所述數(shù)據(jù)操縱語言單元確定與所述分布式數(shù)據(jù)庫操作語句模板對應的分布式數(shù)據(jù)庫服務器集群,并將所有位于所述分布式數(shù)據(jù)庫服務器集群中的分布式數(shù)據(jù)庫服務器的網(wǎng)絡地址信息 存儲于所述執(zhí)行計劃樹的節(jié)點中,由分布式數(shù)據(jù)庫操作語句預處理的裝置將所述分布式數(shù)據(jù)庫操作語句模板發(fā)送至所述分布式數(shù)據(jù)庫服務器集群。
具體地,所述數(shù)據(jù)操作語句解析單元負責解析由客戶端處獲取的分布式數(shù)據(jù)庫操作語句模板,生成所述分布式數(shù)據(jù)庫操作語句模板的語法樹,再將所述語法樹發(fā)送至所述數(shù)據(jù)操縱語言單元與所述數(shù)據(jù)定義語言單元用于生成與所述分布式數(shù)據(jù)庫操作語句模板對應的執(zhí)行計劃樹。
在一種實施方式中,客戶端將分布式數(shù)據(jù)庫操作語句模板發(fā)送至分布式數(shù)據(jù)庫操作語句預處理的裝置,當所述分布式數(shù)據(jù)庫操作語句預處理的裝置獲取所述分布式數(shù)據(jù)庫操作語句模板時,對所述分布式數(shù)據(jù)庫操作語句模板中的操作語句語法框架進行解析,得到語法樹,所述數(shù)據(jù)操縱語言單元通過分析所述語法樹,獲取所述分布式數(shù)據(jù)庫操作語句模板中的數(shù)據(jù)庫表頭信息,并通過中介數(shù)據(jù)緩存單元獲取存儲以所述數(shù)據(jù)庫表頭信息作為標識的數(shù)據(jù)庫表的所有分布式數(shù)據(jù)庫服務器的網(wǎng)絡地址信息,根據(jù)所述網(wǎng)絡地址信息,生成執(zhí)行計劃樹,并將所述網(wǎng)絡地址信息存儲于所述執(zhí)行計劃樹中。
通過存儲于所述執(zhí)行計劃樹中的所述網(wǎng)絡地址信息,確定與所述分布式數(shù)據(jù)庫操作語句模板對應的所有分布式數(shù)據(jù)庫服務器,并與所述所有分布式數(shù)據(jù)庫服務器集群建立邏輯鏈路通道,其中,所述分布式數(shù)據(jù)庫服務器組成一個分布式數(shù)據(jù)庫服務器集群。通過操作語句路由器即操作語句路由模塊通過所述邏輯鏈路通道向所述分布式數(shù)據(jù)庫服務器集群發(fā)送所述分布式數(shù)據(jù)庫操作語句模板。解決了數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題。
進一步地,在其他實施例中,操作語句參數(shù)信息包括操作語句參數(shù)值及用于將所述操作語句參數(shù)值匹配給所述分布式數(shù)據(jù)庫操作語句模板的標識信息。
該實施例中,參數(shù)信息可以包括中間變量。位于所述分布式數(shù)據(jù)庫服務器集群中的所有分布式數(shù)據(jù)庫服務器將之前獲取的分布式數(shù)據(jù)庫操作語句模板中的問號(?)與所述中間變量進行組合,獲取包括所述中間變量的分布式數(shù)據(jù)庫操作語句模板,如insertintostudents(firstname,lastname,email)values(x,y,z),其中,中間變量x、中間變量y及中間變量z可以與在客 戶端中設定的參數(shù)x、參數(shù)y及參數(shù)z形成邏輯關系,具體地,所述中間變量的數(shù)量,在此不作限定。在所述客戶端中,當對所述參數(shù)x、所述參數(shù)y及所述參數(shù)z執(zhí)行賦值運算操作如循環(huán)賦值運算時,用于執(zhí)行賦值操作的參數(shù)值可以對所述中間變量x、所述中間變量y及所述中間變量z進行賦值,其中,所述參數(shù)值是所述參數(shù)信息的組成部分。中間變量的引入,解決了當需多次要執(zhí)行發(fā)送參數(shù)信息的操作時,需要在客戶端處多次輸入?yún)?shù)值的問題,提升了用戶體驗。
進一步地,在其他實施例中,上述結果返回模塊04可以用于:
獲取由所述分布式數(shù)據(jù)庫服務器集群返回的結果數(shù)據(jù),其中,所述結果數(shù)據(jù)是位于所述分布式數(shù)據(jù)庫服務器集群中的多個分布式數(shù)據(jù)庫服務器結合所述分布式數(shù)據(jù)庫操作語句模板及所述操作語句參數(shù)信息對存儲于對應的分布式數(shù)據(jù)庫服務器中的數(shù)據(jù)進行處理而得到的結果;對所述結果數(shù)據(jù)進行匯總計算,獲取經(jīng)過匯總計算的結果集。
在該實施例中,分布式數(shù)據(jù)庫服務器通過結合分布式數(shù)據(jù)庫操作語句模板與操作語句參數(shù)信息,對存儲于所述分布式數(shù)據(jù)庫服務器中的數(shù)據(jù)進行處理,處理方式可以包括增添數(shù)據(jù)、刪除數(shù)據(jù)、更改數(shù)據(jù)、查詢數(shù)據(jù)等,具體地,所述處理方式的處理內(nèi)容,在此不作限定。在完成相關的操作后,所述分布式數(shù)據(jù)庫服務器得到處理結果,所述處理結果可以包括操作成功信息、操作失敗信息、操作用時信息等。具體地,所述操作成功信息的具體內(nèi)容,如通過查詢操作得到的數(shù)據(jù),在此不作限定。
在一種實施方式中,操作語句路由器監(jiān)聽所述分布式數(shù)據(jù)庫服務器的處理過程,當處理結束時,所述分布式數(shù)據(jù)庫服務器將結果數(shù)據(jù)發(fā)送至執(zhí)行計劃樹的節(jié)點中,由分布式數(shù)據(jù)庫操作語句預處理的裝置對存儲于所述節(jié)點中的所述結果數(shù)據(jù)進行匯總計算,得到經(jīng)過匯總計算的結果集。解決了數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題。
參照圖6,圖6為本發(fā)明分布式數(shù)據(jù)庫預處理的裝置二實施例的功能模塊示意圖,在上述實施例的基礎上,該分布式數(shù)據(jù)庫預處理的裝置還包括:
關閉模塊05,將所述處理結果發(fā)送至客戶端;從客戶端處獲取關閉預處 理操作的請求信息,并發(fā)送所述請求信息至執(zhí)行預處理操作的分布式數(shù)據(jù)庫服務器集群;關閉位于所述分布式數(shù)據(jù)庫服務器集群中的多個分布式數(shù)據(jù)庫服務器的預處理服務。
本實施例中,將所述處理結果發(fā)送至客戶端,并從客戶端處獲取關閉預處理操作的請求信息,當分布式數(shù)據(jù)庫操作語句預處理的裝置獲取關閉預處理操作的請求信息時,所述分布式數(shù)據(jù)庫操作語句預處理的裝置銷毀相關的數(shù)據(jù),具體地,所述數(shù)據(jù)可以包括語法樹、執(zhí)行計劃樹及相關的緩存信息,在此不作限定。同時,向執(zhí)行預處理操作的分布式數(shù)據(jù)庫服務器發(fā)送所述請求信息,關閉所述數(shù)據(jù)庫服務器的預處理服務。解決了數(shù)據(jù)庫預處理技術不能在分布式數(shù)據(jù)庫服務器上使用的技術問題,并在釋放硬件資源的基礎上,節(jié)省了硬件資源的內(nèi)存與存儲空間。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機。服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。