專利名稱:一種集群數(shù)據(jù)庫數(shù)據(jù)查詢方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集群數(shù)據(jù)庫領(lǐng)域,尤其涉及一種MongoDB集群MapReduce數(shù)據(jù)查詢方法。
背景技術(shù):
數(shù)據(jù)庫集群是將多臺服務器聯(lián)合起來組成集群來實現(xiàn)綜合性能優(yōu)于單個大型服務器的技術(shù)。
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。旨在為WEB應用提供可擴展的高性能數(shù)據(jù)存儲解決方案。并且,MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,在非關(guān)系數(shù)據(jù)庫當中功能很豐富、非常類似關(guān)系數(shù)據(jù)庫的數(shù)據(jù)庫。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的b json格式,因此可以存儲比較復雜的數(shù)據(jù)類型。MongoDB支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。因此,MongoDB作為分布式文件存儲的數(shù)據(jù)庫得到了廣泛應用。
MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。他極大地方便了編程人員將自己的程序運行在分布式系統(tǒng)上。
在實際上,常用的業(yè)務場景中,經(jīng)常需要進行g(shù)roup (分組)查詢或者排序,并且也有可能需要不同維度以及查詢條件來獲取結(jié)果。然而,在MongoDB中,只能支持單機的 group的查詢,而不能支持集群(分片,shareding)的group查詢,如需要該應用場景的查詢,將需使用到MapReduce方式。
在利用MapReduce對MongoDB集群進行大數(shù)據(jù)量、即時查詢時,需要進行對每個數(shù)據(jù)分片進行散射查詢,并進行js運算,且該MapReduce有一個BSON格式與JavaScript (簡稱JS)格式的轉(zhuǎn)譯過程。因此,若對每個即便重復的查詢請求均即時地對MongoDB進行查詢,會導致效率大為降低,而滿足不了要求快速響應的場景需求。
為解決上述技術(shù)問題,提出了一種對滿足固定維度(維度指的是再條件查詢時,不同條件的組合而產(chǎn)生的定向查詢,稱之為維度)或者固定條件的數(shù)據(jù)依照預設第二設定時間頻率進行更新或存儲(心跳更新或者存儲)至緩存中、然后再對緩存的數(shù)據(jù)進行查詢的技術(shù)。然而,這種技術(shù)在需求變動或者查詢需要變動的情況下將要耗費大量人力以及物力來手工改動。
此外,這種技術(shù)由于無法較好地匹配所緩存內(nèi)容與應用實際要查詢的內(nèi)容,往往會導致緩存資源及運算資源的浪費,以及/或者導致查詢速度較慢。發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題之一是提供一種集群數(shù)據(jù)庫數(shù)據(jù)查詢方法,以盡量避免在需求變動或者查詢需要變動的情況下因要重新配置要預先將查詢結(jié)果存儲在緩存里的查詢語句而耗費大量人力以及物力來手工改動的缺陷。
為了解決上述技術(shù)問題,本發(fā)明提供了一種集群數(shù)據(jù)庫數(shù)據(jù)查詢方法。該方法包括
在監(jiān)聽到對集群數(shù)據(jù)庫的查詢請求時,判斷是否存在與所述查詢請求的查詢語句對應的臨時表;
若判斷為不存在,生成與所述查詢語句對應的臨時表,所述與所述查詢語句對應的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應的查詢結(jié)果;
若判斷為存在,通過查詢與所述查詢語句對應的臨時表來獲取查詢結(jié)果。
該方法還可進一步包括若判斷為不存在,在日志表中建立與所述查詢語句對應的記錄;以及所述判斷是否存在與所述查詢請求的查詢語句對應的臨時表的步驟進一步包括通過判斷所述日志表中是否存在與所述查詢語句對應的記錄來判斷是否存在與所述查詢語句對應的臨時表,所述日志表中的各記錄包括在表示查詢語句與其對應的臨時表名的映射關(guān)系的信息。
該方法還可進一步包括若判斷為存在,則根據(jù)日志表中與所述查詢語句對應的記錄判斷與該查詢語句對應的臨時表的資源是否有效,所述日志表的各記錄中包括用于表示查詢語句對應的臨時表是否有效的信息;若判斷為有效,則通過查詢與所述查詢語句對應的臨時表來獲取查詢結(jié)果;
若判斷為無效,則進行與該MapReduce查詢請求的查詢語句對應的MapReduce運算以更新與所述查詢語句對應的臨時表的數(shù)據(jù),并將所述日志表中與所述查詢語句對應的記錄更新為表示與所述查詢語句對應的臨時表有效。
該方法還可進一步包括若判斷為無效,則先從與該查詢語句對應的臨時表中獲取查詢結(jié)果并返回查詢結(jié)果,再進行與該MapReduce查詢請求的查詢語句對應的 MapReduce運算以更新與所述查詢語句對應的臨時表的數(shù)據(jù),并將所述日志表中與所述查詢語句對應的記錄更新為表示與所述查詢語句對應的臨時表有效。
該方法還可進一步包括以第二設定時間規(guī)則刪除或更新臨時表及所述日志表中的相應記錄。
其中,所述以第二設定時間規(guī)則刪除或更新臨時表及所述日志表中的相應記錄的步驟可包括以下至少之一
刪除或更新所述日志表中記錄表明已無效的臨時表及日志表中相應的記錄;
根據(jù)臨時表的查詢次數(shù)隨機刪除預設數(shù)量的所述臨時表及相應記錄。
其中,所述日志表的各記錄中用于表示查詢語句對應的臨時表是否有效的信息包括時限信息、以及所述以第二設定時間規(guī)則刪除臨時表及所述日志表中的相應記錄的步驟包括以下至少之一以第二設定時間規(guī)則刪除超過時限的時長大于門限值臨時表及所述日志表中的相應記錄;以第二設定時間規(guī)則通過進行MapReduce運算更新超過時限的時長小于門限值的記錄及相應臨時表;以第二設定時間規(guī)則通過進行MapReduce運算更新時限信息表明有效時長超過預設閾值的臨時表。
該方法還可進一步包括根據(jù)業(yè)務需求來配置查詢語句,生成與所述查詢語句對應的臨時表,所述與所述查詢語句對應的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應的查詢結(jié)果;以第一設定時間規(guī)則通過進行MapReduce運算更新與所配置的查詢語句對應的臨時表。
此外,若判斷為不存在,還可在日志表中建立與所述查詢語句對應的記錄;以及所述判斷是否存在與所述查詢請求的查詢語句對應的臨時表的步驟進一步包括通過判斷所述日志表中是否存在與所述查詢語句對應的記錄以及判斷所述查詢語句是否為已根據(jù)業(yè)務需求配置的查詢語句來判斷是否存在與所述查詢語句對應的臨時表,所述日志表中的各記錄包括在表示查詢語句與其對應的臨時表名的映射關(guān)系的信息。
與現(xiàn)有技術(shù)相比,本發(fā)明的一個或多個實施例可以具有如下優(yōu)點
通過在不存在與所述查詢請求的查詢語句對應的臨時表時,動態(tài)地生成與所述查詢語句對應的用于存儲通過進行MongoDB運算而獲取的查詢結(jié)果的臨時表。
這樣,即可以保證在該臨時表的時限內(nèi)再次進行該查詢語句的查詢時只需查詢所生成的臨時表即可,而無需執(zhí)行MapReduce運算,又可盡量避免在需求變動或者查詢需要變動的情況下因要重新配置要預先將查詢結(jié)果存儲在緩存里的查詢語句而耗費大量人力以及物力來手工改動的缺陷。
本發(fā)明的其他優(yōu)點、目標,和特征在某種程度上將在隨后的說明書中進行闡述,并且在某種程度上,基于對下文的考察研究對本領(lǐng)域技術(shù)人員而言將是顯而易見的,或者可以從本發(fā)明的實踐中得到教導。本發(fā)明的目標和其他優(yōu)點可以通過下面的說明書,權(quán)利要求書,以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例共同用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中
圖I是根據(jù)本發(fā)明實施例的集群數(shù)據(jù)庫數(shù)據(jù)查詢方法的流程圖。
具體實施方式
以下將結(jié)合附圖及實施例來詳細說明本發(fā)明的實施方式,借此對本發(fā)明如何應用技術(shù)手段來解決技術(shù)問題,并達成技術(shù)效果的實現(xiàn)過程能充分理解并據(jù)以實施。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個實施例以及各實施例中的各個特征可以相互結(jié)合, 所形成的技術(shù)方案均在本發(fā)明的保護范圍之內(nèi)。
另外,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
本發(fā)明提出了一種臨時表緩存機制。在監(jiān)聽到要查詢MongoDB集群時,先判斷是否存在與該查詢的查詢語句對應的臨時表。若判斷為不存在,則進行MapReduce查詢,生成與該查詢的查詢語句對應的臨時表。該臨時表存儲通過進行MongoDB運算獲取的與該查詢語句對應的查詢結(jié)果。查詢語句可以為條件查詢、分組查詢、聚合查詢等。優(yōu)選地,還可按業(yè)務需求設置保持該臨時表的時限。在超出該時限后,可刪除該臨時表。若判斷為存在,則通過查詢與該查詢的查詢語句對應的臨時表來獲取查詢結(jié)果。
這樣,若在該臨時表的時限內(nèi)再次進行該查詢語句的查詢,只需查詢所生成的臨時表即可,而無需執(zhí)行MapReduce運算。而若在超出時限后再進行該查詢,則將重新進行 MapReduce運算查詢以獲得查詢結(jié)果。優(yōu)選地,可異步執(zhí)行MapReduce,即首先是判斷是否存在臨時表,若不存在則進行MapReduce計算(即查詢),并生成與該查詢語句對應的臨時表,最后從臨時表獲取并返回的查詢結(jié)果。
在另一種臨時表緩存機制中,可通過配置MapReduce資源表把設定的查詢語句存入資源表,通過后臺程序按照設定的時間根據(jù)資源表中的查詢語句進行MapReduce查詢, 以把查詢得的MapReduce結(jié)果生成與資源表中各查詢語句對應的臨時表。在監(jiān)聽到查詢時,若查詢語句包含于該資源表,則直接從與該查詢語句對應的臨時表獲取數(shù)據(jù)??筛鶕?jù)業(yè)務需求來配置查詢語句,生成與所述查詢語句對應的臨時表,所述與所述查詢語句對應的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應的查詢結(jié)果,并以第一設定時間規(guī)則通過進行MapReduce運算更新與所配置的查詢語句對應的臨時表。第一設定時間規(guī)則可以為設定的頻率、時間間隔、時間點等。
此外,優(yōu)選地把上述兩種臨時表緩存機制相結(jié)合。
下面結(jié)合圖I示出的來詳細說明本發(fā)明各種實施例及優(yōu)選方案。
優(yōu)選地,首先根據(jù)業(yè)務需求等配置的各查詢語句(亦稱固定維度查詢)及自各對應的時限和唯一標識存儲在一個MapReduce資源表(日志表)中。該時限可以通過當前時間和所需該資源的失效時長來表示,也可以通過超時時刻來表示。
可通過將與這些配置的查詢語句分別對應的各個有效時長超過預設閾值(即足夠長的時期不超時以至于可認永不超時、或者超過預設時長有效),或在日志表中與這些查詢語句分別對應的各個記錄中增設表示該查詢語句為需定時更新的信息,這樣,對于這些配置的查詢語句,可使用后臺進程定時(或根據(jù)設定間隔)進行MapReduce查詢以更新與這些預選配置的查詢語句對應的臨時表。
可將常用的查詢語句配置在日志表中,通過后臺進程來執(zhí)行的操作來定時執(zhí)行所配置的查詢語句的查詢,以定時更新與這些常用查詢語句對應的臨時表。這樣,若查詢請求的查詢語句為所配置的查詢語句之一,則可意味著一定存在與該查詢請求對應的臨時表, 因此,可通過日志表獲取輸出的臨時表名稱,讓該查詢指向臨時表即可,如果查詢請求的查詢語句不是所配置的查詢語句之一,則意味著不存在與該查詢請求的查詢語句對應的臨時表,這種情況下,可根據(jù)圖I所示的實施例中的方法來獲取查詢結(jié)果。
優(yōu)選地,考慮到日志表中根據(jù)業(yè)務需求所配置的查詢語句均為常用查詢語句,可因可對所配置的查詢語句設定MapReduce查詢運算的頻率,讓后臺進程對這些所配置的查詢語句進行較高頻率的MapReduce查詢從而以比其它臨時表的更新頻率較高的頻率更新所配置的查詢語句對應的臨時表。
圖I示出了當監(jiān)聽到查詢請求時所要進行的操作的流程圖。
步驟S110,在監(jiān)聽到要對所述MongoDB集群的查詢請求時,判斷是否存在與該查詢語句對應的臨時表??赏ㄟ^判斷日志表中是否存在與該查詢請求的查詢語句對應的記錄來判斷是否存在與該查詢語句對應的臨時表。若判斷為存在,則進入步驟S130或步驟 S140,從與該查詢語句對應的臨時表中進行查詢以獲得查詢結(jié)果。若不存在,則進入步驟 S120,通過執(zhí)行MapReduce運算來獲得查詢結(jié)果。
步驟S120,進行與該MapReduce查詢請求的查詢語句對應的MapReduce運算,從 MongoDB集群中獲取查詢結(jié)果,生成與該查詢語句對應的臨時表以存儲查詢結(jié)果。優(yōu)選地, 還可在日志表中建立與該查詢請求的查詢語句對應的記錄,該記錄可包括該查詢語句及其臨時表的表名等表示查詢語句與其對應的臨時表名的映射關(guān)系的信息、臨時表的時限和唯一標識等信息。此外,可將查詢語句特殊字符進行轉(zhuǎn)義保存在記錄中。這便于通過日志表中的記錄來判斷臨時表是否存在或失效。臨時表的名稱可按設定的規(guī)則命名,例如將臨時表名保存為與查詢語句對應的一哈希字串等,這樣,即便不判斷日志表中是否存在與要進行的MapReduce查詢請求的查詢語句對應的記錄也可以判斷與該查詢語句對應的臨時表是否存在。
步驟S130中,根據(jù)日志表中與要進行的MapReduce查詢的查詢語句對應的記錄判斷與該查詢語句對應的臨時表的資源是否有效。更具體地,若日志表中與要進行的 MapReduce查詢的查詢語句對應的記錄中的時限、失效標識等用于標識臨時表有效性的相關(guān)信息表示已經(jīng)超期或失效,則表示與該查詢語句對應的臨時表的資源已經(jīng)無效。若判斷為有效,則進入步驟S140,反之,進入步驟S150。
步驟S140,根據(jù)MapReduce日志表中與該查詢對應的記錄或者根據(jù)設定的命名規(guī)則確定與該查詢語句對應的臨時表的表名,從與該查詢語句對應的臨時表獲取查詢結(jié)果。 更具體地,根據(jù)設定的命名規(guī)則確定與該查詢語句對應的臨時表的表名的處理可具體為, 通過查詢語句進行哈希,產(chǎn)生sn碼,利用該sn碼作為與該查詢語句對應的臨時表名。根據(jù) MapReduce日志表中與該查詢對應的記錄確定與該查詢語句對應的臨時表的表名時,通過哈希來確定與該查詢語句對應的記錄,以記錄中的臨時表名即為與該查詢語句對應的臨時表名。
步驟S150,進行與該MapReduce查詢請求的查詢語句對應的MapReduce運算以更新與該查詢語句對應的臨時表的數(shù)據(jù)。優(yōu)選地,還更新在日志表中建立與該查詢請求的查詢語句對應的記錄中表示無效標識等表示與該查詢語句對應的臨時表資源是否有效的時限等信息,使之更新為表示與該查詢語句對應的臨時表資源有效。例如,可重置記錄中的時限以使該時限表示從更新時刻起重新生效并維持預定的時長。
此外,在步驟S120或步驟S150中,可在進行與該MapReduce查詢對應的 MapReduce運算以從MongoDB集群中獲取查詢結(jié)果后,直接將查詢結(jié)果返回給執(zhí)行該查詢的應用或用戶,也可以在更新或建立與該查詢語句對應的臨時表后,再從與該查詢語句對應的臨時表中獲取查詢結(jié)果并返回應用或用戶。
此外,在經(jīng)過步驟S130判斷為與該查詢語句對應的臨時表的資源已經(jīng)失效后,還可在步驟S140之前先從與該查詢語句對應的臨時表中獲取查詢結(jié)果并返回查詢結(jié)果。這樣可提高時效性要求較低的資源的響應速度。
此外,可通過后臺進程更新日志表,將超期的記錄的效力標識更新為表示失效。
因此,根據(jù)上述各步驟可知,本實施例可以較好地將頻繁訪問的資源預先存儲在臨時表,從而提高查詢響應速度。一定程度上可根據(jù)用戶的實際訪問情況自適應地調(diào)整需要預先建立臨時表的查詢語句,因此相比只采用人工預先配置的方式進行緩存的機制,本實施例更符合數(shù)據(jù)庫的實際使用情景。
對于非固定維度查詢(即不是根據(jù)業(yè)務需求等配置的查詢語句),可以通過以下幾種方式進行更新
方式一、設定更新頻率,后臺進程以設定的頻率進行MapReduce查詢計算,以更新與日志表中所有有效和/或未超期的查詢語句對應的臨時表。一般而言,可設定較高的更新頻率。
方式二 無需后臺進程以設定的頻率進行MapReduce查詢計算,而是通過步驟 S130和步驟S150來進行更新,這樣,以用戶不感知的方式去檢查日志表并判斷是否需要 MapReduce運算。通過在查詢唯一 SN標識(下面有生成規(guī)則例示,也簡稱唯一標識)來日志表中與該唯一 SN標識對應的失效時間以判斷是否超期(超時)。超期則進行MapReduce 運算以獲得查詢結(jié)果,不超時則將該查詢指向臨時表,通過查找臨時表來獲得查詢結(jié)果。
此外,在另一種優(yōu)選方式中,在步驟S140中還將與查詢語句對應的時限進行重置,使得與該查詢語句的時效期間與剛創(chuàng)建的記錄相同??砂凑盏诙O定時間規(guī)則刪除或更新(清理)MapRedUCe日志表中的記錄及對應的臨時表。例如,以第二設定時間刪除日志表中記錄表明已無效的臨時表及日志表中相應的記錄。第二設定時間規(guī)則可以為設定的頻率、時間間隔、時間點等。第一設定時間規(guī)則可與第一設定時間相同或不同。例如,可刪除日志表中時限屬性超期和/或效力標識等表示對應的臨時表無效的記錄及其對應的臨時表,而不根據(jù)第二設定時間對這些超期或效力標識表示無效的記錄及其對應的臨時表進行更新。這樣,可以自動回收時限內(nèi)一次均未被查詢語句對應的記錄及其臨時表,從而在保持經(jīng)常被訪問的查詢語句對應的記錄及臨時表的同時,清理了不經(jīng)常用的查詢語句對應的記錄及臨時表所占用的資源。從而在節(jié)約系統(tǒng)資源的同時提高對查詢的響應速度。再如,可以第二設定時間規(guī)則通過進行MapReduce運算更新時限信息表明有效時長超過預設閾值的臨時表。
此外,也可根據(jù)臨時表的查詢次數(shù)按照隨機刪除預設數(shù)量記錄及對應臨時表、刪除超過時限的時長大于門限值的記錄及對應的臨時表、通過進行MapReduce運算更新超過時限的時長小于門限值的記錄及相應臨時表等方式進行清理。在清理該日志中的記錄時, 相應地刪除或者回收處理與所刪除記錄對應的臨時表中的資源。
可通過后臺進程定時或按預定間隔執(zhí)行回收處理,以更新日志表并刪除相應臨時表數(shù)據(jù)。
可將MapReduce日志表的SN唯一索引設置為
SN 唯一索引=md5 (coll_name 集合、表名稱)+md5 (group 分組條件)+md5 (fields 所需字段)+md5 (query查詢條件)
需要說明的是,本發(fā)明的臨時表為一個統(tǒng)稱,可以理解為視圖等,是在繁雜的以及數(shù)據(jù)量大的應用中,為了快速查詢,把部分數(shù)據(jù)復制轉(zhuǎn)存起來,在使用完畢后可以刪除掉的存儲表,這種存儲表一般叫臨時表。
此外,也可以將固定維度查詢的查詢語句和非固定維度查詢的查詢語句分別存儲于不同的存儲空間中,例如存儲于不同的表中。也可將查詢語句及其唯一標識、時限等信息存儲于除日志表以外的其它表中。
本領(lǐng)域的技術(shù)人員應該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
雖然本發(fā)明所揭露的實施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實施的形式上及細節(jié)上作任何的修改與變化, 但本發(fā)明的專利保護范圍,仍須以所附的權(quán)利要求書所界定的范圍為準。
權(quán)利要求
1.一種集群數(shù)據(jù)庫數(shù)據(jù)查詢方法,其特征在于,包括在監(jiān)聽到對集群數(shù)據(jù)庫的查詢請求時,判斷是否存在與所述查詢請求的查詢語句對應的臨時表;若判斷為不存在,生成與所述查詢語句對應的臨時表,所述與所述查詢語句對應的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應的查詢結(jié)果;若判斷為存在,通過查詢與所述查詢語句對應的臨時表來獲取查詢結(jié)果。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,進一步包括若判斷為不存在,在日志表中建立與所述查詢語句對應的記錄;以及所述判斷是否存在與所述查詢請求的查詢語句對應的臨時表的步驟進一步包括通過判斷所述日志表中是否存在與所述查詢語句對應的記錄來判斷是否存在與所述查詢語句對應的臨時表,所述日志表中的各記錄包括在表示查詢語句與其對應的臨時表名的映射關(guān)系的信息。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,進一步包括若判斷為存在,則根據(jù)日志表中與所述查詢語句對應的記錄判斷與該查詢語句對應的臨時表的資源是否有效,所述日志表的各記錄中包括用于表示查詢語句對應的臨時表是否有效的信息;若判斷為有效,則通過查詢與所述查詢語句對應的臨時表來獲取查詢結(jié)果;若判斷為無效,則進行與該MapReduce查詢請求的查詢語句對應的MapReduce運算以更新與所述查詢語句對應的臨時表的數(shù)據(jù),并將所述日志表中與所述查詢語句對應的記錄更新為表示與所述查詢語句對應的臨時表有效。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,進一步包括若判斷為無效,則先從與該查詢語句對應的臨時表中獲取查詢結(jié)果并返回查詢結(jié)果,再進行與該 MapReduce查詢請求的查詢語句對應的MapReduce運算以更新與所述查詢語句對應的臨時表的數(shù)據(jù),并將所述日志表中與所述查詢語句對應的記錄更新為表示與所述查詢語句對應的臨時表有效。
5.根據(jù)權(quán)利要求2至4中任一項所述的方法,其特征在于,還包括以第二設定時間規(guī)則刪除或更新臨時表及所述日志表中的相應記錄。
6.根據(jù)權(quán)利要求5中任一項所述的方法,其特征在于,所述以第二設定時間規(guī)則刪除或更新臨時表及所述日志表中的相應記錄的步驟包括以下至少之一刪除或更新所述日志表中記錄表明已無效的臨時表及日志表中相應的記錄;根據(jù)臨時表的查詢次數(shù)隨機刪除預設數(shù)量的所述臨時表及相應記錄。
7.根據(jù)權(quán)利要求5中任一項所述的方法,其特征在于,所述日志表的各記錄中用于表示查詢語句對應的臨時表是否有效的信息包括時限信息,以及所述以第二設定時間規(guī)則刪除臨時表及所述日志表中的相應記錄的步驟包括以下至少之一以第二設定時間規(guī)則刪除超過時限的時長大于門限值臨時表及所述日志表中的相應記錄;以第二設定時間規(guī)則通過進行MapReduce運算更新超過時限的時長小于門限值的記錄及相應臨時表;以第二設定時間規(guī)則通過進行MapReduce運算更新時限信息表明有效時長超過預設閾值的臨時表。
8.根據(jù)權(quán)利要求I至4所述的方法,其特征在于,還包括根據(jù)業(yè)務需求來配置查詢語句,生成與所述查詢語句對應的臨時表,所述與所述查詢語句對應的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應的查詢結(jié)果; 以第一設定時間規(guī)則通過進行MapReduce運算更新與所配置的查詢語句對應的臨時表。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,若判斷為不存在,還在日志表中建立與所述查詢語句對應的記錄;以及所述判斷是否存在與所述查詢請求的查詢語句對應的臨時表的步驟進一步包括通過判斷所述日志表中是否存在與所述查詢語句對應的記錄以及判斷所述查詢語句是否為已根據(jù)業(yè)務需求配置的查詢語句來判斷是否存在與所述查詢語句對應的臨時表,所述日志表中的各記錄包括在表示查詢語句與其對應的臨時表名的映射關(guān)系的信息。
全文摘要
本發(fā)明公開了一種集群數(shù)據(jù)庫數(shù)據(jù)查詢方法。該方法包括在監(jiān)聽到對集群數(shù)據(jù)庫的查詢請求時,判斷是否存在與所述查詢請求的查詢語句對應的臨時表;若判斷為不存在,生成與所述查詢語句對應的臨時表,所述與所述查詢語句對應的臨時表存儲通過進行MongoDB運算而獲取的與所述查詢語句對應的查詢結(jié)果;若判斷為存在,通過查詢與所述查詢語句對應的臨時表來獲取查詢結(jié)果。本發(fā)明可盡量避免在需求變動或者查詢需要變動的情況下因要重新配置要預先將查詢結(jié)果存儲在緩存里的查詢語句而耗費大量人力以及物力來手工改動的缺陷。
文檔編號G06F17/30GK102937980SQ20121039773
公開日2013年2月20日 申請日期2012年10月18日 優(yōu)先權(quán)日2012年10月18日
發(fā)明者茹意, 羅峰, 黃蘇支, 李娜 申請人:億贊普(北京)科技有限公司