本發(fā)明專利技術(shù)公開了一種集群數(shù)據(jù)庫數(shù)據(jù)查詢方法。該方法包括:在監(jiān)聽到對集群數(shù)據(jù)庫的查詢請求時,判斷是否存在與所述查詢請求的查詢語句對應(yīng)的臨時表;若判斷為不存在,生成與所述查詢語句對應(yīng)的臨時表,所述與所述查詢語句對應(yīng)的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應(yīng)的查詢結(jié)果;若判斷為存在,通過查詢與所述查詢語句對應(yīng)的臨時表來獲取查詢結(jié)果。本發(fā)明專利技術(shù)可盡量避免在需求變動或者查詢需要變動的情況下因要重新配置要預(yù)先將查詢結(jié)果存儲在緩存里的查詢語句而耗費大量人力以及物力來手工改動的缺陷。
【技術(shù)實現(xiàn)步驟摘要】
本專利技術(shù)涉及集群數(shù)據(jù)庫領(lǐng)域,尤其涉及一種MongoDB集群MapReduce數(shù)據(jù)查詢方法。
技術(shù)介紹
數(shù)據(jù)庫集群是將多臺服務(wù)器聯(lián)合起來組成集群來實現(xiàn)綜合性能優(yōu)于單個大型服務(wù)器的技術(shù)。MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。并且,MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,在非關(guān)系數(shù)據(jù)庫當(dāng)中功能很豐富、非常類似關(guān)系數(shù)據(jù)庫的數(shù)據(jù)庫。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的b json格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。MongoDB支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。因此,MongoDB作為分布式文件存儲的數(shù)據(jù)庫得到了廣泛應(yīng)用。MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。他極大地方便了編程人員將自己的程序運行在分布式系統(tǒng)上。在實際上,常用的業(yè)務(wù)場景中,經(jīng)常需要進行g(shù)roup (分組)查詢或者排序,并且也有可能需要不同維度以及查詢條件來獲取結(jié)果。然而,在MongoDB中,只能支持單機的 group的查詢,而不能支持集群(分片,shareding)的group查詢,如需要該應(yīng)用場景的查詢,將需使用到MapReduce方式。在利用MapReduce對MongoDB集群進行大數(shù)據(jù)量、即時查詢時,需要進行對每個數(shù)據(jù)分片進行散射查詢,并進行js運算,且該MapReduce有一個BSON格式與JavaScript (簡稱JS)格式的轉(zhuǎn)譯過程。因此,若對每個即便重復(fù)的查詢請求均即時地對MongoDB進行查詢,會導(dǎo)致效率大為降低,而滿足不了要求快速響應(yīng)的場景需求。為解決上述技術(shù)問題,提出了一種對滿足固定維度(維度指的是再條件查詢時,不同條件的組合而產(chǎn)生的定向查詢,稱之為維度)或者固定條件的數(shù)據(jù)依照預(yù)設(shè)第二設(shè)定時間頻率進行更新或存儲(心跳更新或者存儲)至緩存中、然后再對緩存的數(shù)據(jù)進行查詢的技術(shù)。然而,這種技術(shù)在需求變動或者查詢需要變動的情況下將要耗費大量人力以及物力來手工改動。此外,這種技術(shù)由于無法較好地匹配所緩存內(nèi)容與應(yīng)用實際要查詢的內(nèi)容,往往會導(dǎo)致緩存資源及運算資源的浪費,以及/或者導(dǎo)致查詢速度較慢。
技術(shù)實現(xiàn)思路
本專利技術(shù)所要解決的技術(shù)問題之一是提供,以盡量避免在需求變動或者查詢需要變動的情況下因要重新配置要預(yù)先將查詢結(jié)果存儲在緩存里的查詢語句而耗費大量人力以及物力來手工改動的缺陷。為了解決上述技術(shù)問題,本專利技術(shù)提供了。該方法包括在監(jiān)聽到對集群數(shù)據(jù)庫的查詢請求時,判斷是否存在與所述查詢請求的查詢語句對應(yīng)的臨時表;若判斷為不存在,生成與所述查詢語句對應(yīng)的臨時表,所述與所述查詢語句對應(yīng)的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應(yīng)的查詢結(jié)果;若判斷為存在,通過查詢與所述查詢語句對應(yīng)的臨時表來獲取查詢結(jié)果。該方法還可進一步包括若判斷為不存在,在日志表中建立與所述查詢語句對應(yīng)的記錄;以及所述判斷是否存在與所述查詢請求的查詢語句對應(yīng)的臨時表的步驟進一步包括通過判斷所述日志表中是否存在與所述查詢語句對應(yīng)的記錄來判斷是否存在與所述查詢語句對應(yīng)的臨時表,所述日志表中的各記錄包括在表示查詢語句與其對應(yīng)的臨時表名的映射關(guān)系的信息。該方法還可進一步包括若判斷為存在,則根據(jù)日志表中與所述查詢語句對應(yīng)的記錄判斷與該查詢語句對應(yīng)的臨時表的資源是否有效,所述日志表的各記錄中包括用于表示查詢語句對應(yīng)的臨時表是否有效的信息;若判斷為有效,則通過查詢與所述查詢語句對應(yīng)的臨時表來獲取查詢結(jié)果;若判斷為無效,則進行與該MapReduce查詢請求的查詢語句對應(yīng)的MapReduce運算以更新與所述查詢語句對應(yīng)的臨時表的數(shù)據(jù),并將所述日志表中與所述查詢語句對應(yīng)的記錄更新為表示與所述查詢語句對應(yīng)的臨時表有效。該方法還可進一步包括若判斷為無效,則先從與該查詢語句對應(yīng)的臨時表中獲取查詢結(jié)果并返回查詢結(jié)果,再進行與該MapReduce查詢請求的查詢語句對應(yīng)的 MapReduce運算以更新與所述查詢語句對應(yīng)的臨時表的數(shù)據(jù),并將所述日志表中與所述查詢語句對應(yīng)的記錄更新為表示與所述查詢語句對應(yīng)的臨時表有效。該方法還可進一步包括以第二設(shè)定時間規(guī)則刪除或更新臨時表及所述日志表中的相應(yīng)記錄。其中,所述以第二設(shè)定時間規(guī)則刪除或更新臨時表及所述日志表中的相應(yīng)記錄的步驟可包括以下至少之一刪除或更新所述日志表中記錄表明已無效的臨時表及日志表中相應(yīng)的記錄;根據(jù)臨時表的查詢次數(shù)隨機刪除預(yù)設(shè)數(shù)量的所述臨時表及相應(yīng)記錄。其中,所述日志表的各記錄中用于表示查詢語句對應(yīng)的臨時表是否有效的信息包括時限信息、以及所述以第二設(shè)定時間規(guī)則刪除臨時表及所述日志表中的相應(yīng)記錄的步驟包括以下至少之一以第二設(shè)定時間規(guī)則刪除超過時限的時長大于門限值臨時表及所述日志表中的相應(yīng)記錄;以第二設(shè)定時間規(guī)則通過進行MapReduce運算更新超過時限的時長小于門限值的記錄及相應(yīng)臨時表;以第二設(shè)定時間規(guī)則通過進行MapReduce運算更新時限信息表明有效時長超過預(yù)設(shè)閾值的臨時表。該方法還可進一步包括根據(jù)業(yè)務(wù)需求來配置查詢語句,生成與所述查詢語句對應(yīng)的臨時表,所述與所述查詢語句對應(yīng)的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應(yīng)的查詢結(jié)果;以第一設(shè)定時間規(guī)則通過進行MapReduce運算更新與所配置的查詢語句對應(yīng)的臨時表。此外,若判斷為不存在,還可在日志表中建立與所述查詢語句對應(yīng)的記錄;以及所述判斷是否存在與所述查詢請求的查詢語句對應(yīng)的臨時表的步驟進一步包括通過判斷所述日志表中是否存在與所述查詢語句對應(yīng)的記錄以及判斷所述查詢語句是否為已根據(jù)業(yè)務(wù)需求配置的查詢語句來判斷是否存在與所述查詢語句對應(yīng)的臨時表,所述日志表中的各記錄包括在表示查詢語句與其對應(yīng)的臨時表名的映射關(guān)系的信息。與現(xiàn)有技術(shù)相比,本專利技術(shù)的一個或多個實施例可以具有如下優(yōu)點通過在不存在與所述查詢請求的查詢語句對應(yīng)的臨時表時,動態(tài)地生成與所述查詢語句對應(yīng)的用于存儲通過進行MongoDB運算而獲取的查詢結(jié)果的臨時表。這樣,即可以保證在該臨時表的時限內(nèi)再次進行該查詢語句的查詢時只需查詢所生成的臨時表即可,而無需執(zhí)行MapReduce運算,又可盡量避免在需求變動或者查詢需要變動的情況下因要重新配置要預(yù)先將查詢結(jié)果存儲在緩存里的查詢語句而耗費大量人力以及物力來手工改動的缺陷。本專利技術(shù)的其他優(yōu)點、目標(biāo),和特征在某種程度上將在隨后的說明書中進行闡述,并且在某種程度上,基于對下文的考察研究對本領(lǐng)域技術(shù)人員而言將是顯而易見的,或者可以從本專利技術(shù)的實踐中得到教導(dǎo)。本專利技術(shù)的目標(biāo)和其他優(yōu)點可以通過下面的說明書,權(quán)利要求書,以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。附圖說明附圖用來提供對本專利技術(shù)的進一步理解,并且構(gòu)成說明書的一部分,與本專利技術(shù)的實施例共同用于解釋本專利技術(shù),并不構(gòu)成對本專利技術(shù)的限制。在附圖中圖I是根據(jù)本專利技術(shù)實施例的集群數(shù)據(jù)庫數(shù)據(jù)查詢方法的流程圖。具體實施方式以下將結(jié)合附圖及實施例來詳細(xì)說明本專利技術(shù)的實施方式,借此對本專利技術(shù)如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實現(xiàn)過程能充分理解并據(jù)以實施。需要說明的是,只要不構(gòu)成沖突,本專利技術(shù)中的各個實施例以及各實施例中本文檔來自技高網(wǎng)...
【技術(shù)保護點】
一種集群數(shù)據(jù)庫數(shù)據(jù)查詢方法,其特征在于,包括:在監(jiān)聽到對集群數(shù)據(jù)庫的查詢請求時,判斷是否存在與所述查詢請求的查詢語句對應(yīng)的臨時表;若判斷為不存在,生成與所述查詢語句對應(yīng)的臨時表,所述與所述查詢語句對應(yīng)的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應(yīng)的查詢結(jié)果;若判斷為存在,通過查詢與所述查詢語句對應(yīng)的臨時表來獲取查詢結(jié)果。
【技術(shù)特征摘要】
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:茹意,羅峰,黃蘇支,李娜,
申請(專利權(quán))人:億贊普北京科技有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。