一種查詢熱數(shù)據(jù)的方法
【專利摘要】本發(fā)明公開了一種查詢熱數(shù)據(jù)的方法,首先在實時監(jiān)控系統(tǒng)下,服務器端預先查詢熱數(shù)據(jù),將查詢到的熱數(shù)據(jù)緩存在服務器端的內存中;當客戶端進行熱數(shù)據(jù)查詢時,所述服務器端在預先緩存的數(shù)據(jù)中執(zhí)行數(shù)據(jù)查詢操作;向所述客戶端返回查詢結果。該方法能夠提高客戶端的查詢效率和響應速度,并降低數(shù)據(jù)庫的查詢壓力。
【專利說明】一種查詢熱數(shù)據(jù)的方法
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)處理【技術領域】,尤其涉及一種查詢熱數(shù)據(jù)的方法。
【背景技術】
[0002]目前,在實時監(jiān)控系統(tǒng)的場景下,通常只會關注最新時間段的業(yè)務數(shù)據(jù),根據(jù)業(yè)務需求可以是最近30分鐘、最近I小時、甚至于最近幾個小時的數(shù)據(jù),這部分被關注的數(shù)據(jù)可以稱之為熱數(shù)據(jù),當熱數(shù)據(jù)失去時效性后,稱之為冷數(shù)據(jù)。隨著時間的推移,熱數(shù)據(jù)會變?yōu)槔鋽?shù)據(jù),最新接收到的數(shù)據(jù)變?yōu)闊釘?shù)據(jù)。實時監(jiān)控系統(tǒng)經常要對熱數(shù)據(jù)進行頻繁的查詢,這類查詢要求能夠快速響應,以便及時的在實時監(jiān)控系統(tǒng)中顯示出來。
[0003]現(xiàn)有技術方案中,客戶端首先發(fā)出查詢條件,服務器端接收到查詢條件后,將查詢條件組裝為結構化查詢語言SQL (Structured Query Language),再傳遞到數(shù)據(jù)庫,數(shù)據(jù)庫解析該SQL語句,從硬盤中取出數(shù)據(jù)后返回查詢結果,服務器端將查詢結果重組后傳遞給客戶端,但在該方案中,當需要查詢的結果數(shù)據(jù)很多,并發(fā)查詢很頻繁時,數(shù)據(jù)庫的查詢壓力會很大,無法做到快速響應。
【發(fā)明內容】
[0004]本發(fā)明的目的是提供一種查詢熱數(shù)據(jù)的方法,該方法能夠提高客戶端的查詢效率和響應速度,并降低數(shù)據(jù)庫的查詢壓力。
[0005]一種查詢熱數(shù)據(jù)的方法,所述方法包括:
[0006]在實時監(jiān)控系統(tǒng)下,服務器端預先查詢熱數(shù)據(jù),將查詢到的熱數(shù)據(jù)緩存在服務器端的內存中;
[0007]當客戶端進行熱數(shù)據(jù)查詢時,所述服務器端在預先緩存的數(shù)據(jù)中執(zhí)行數(shù)據(jù)查詢操作;
[0008]向所述客戶端返回查詢結果。
[0009]由上述本發(fā)明提供的技術方案可以看出,上述方法能夠提高客戶端的查詢效率和響應速度,并降低數(shù)據(jù)庫的查詢壓力。
【專利附圖】
【附圖說明】
[0010]為了更清楚地說明本發(fā)明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域的普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他附圖。
[0011]圖1為本發(fā)明實施例所提供查詢熱數(shù)據(jù)的方法流程示意圖;
[0012]圖2為本發(fā)明實施例所述服務器端定時維護緩存區(qū)的流程示意圖。
【具體實施方式】
[0013]下面結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明的保護范圍。
[0014]本發(fā)明實施例所述方法針對實時監(jiān)控系統(tǒng),客戶端向服務器端的查詢時間段是遞增的,且時間的查詢范圍一定在熱數(shù)據(jù)生命周期的時間段內。下面將結合附圖對本發(fā)明實施例作進一步地詳細描述,如圖1所示為本發(fā)明實施例所提供查詢熱數(shù)據(jù)的方法流程示意圖,所述方法包括:
[0015]步驟11:在實時監(jiān)控系統(tǒng)下,服務器端預先查詢熱數(shù)據(jù),將查詢到的熱數(shù)據(jù)緩存在服務器端的內存中;
[0016]在該步驟中,服務器端可以通過結構化查詢語言SQL預先向數(shù)據(jù)查詢熱數(shù)據(jù),也可以使用別的查詢語言查詢數(shù)據(jù)庫。
[0017]步驟12:當客戶端進行熱數(shù)據(jù)查詢時,所述服務器端在預先緩存的數(shù)據(jù)中執(zhí)行數(shù)據(jù)查詢操作;
[0018]在該步驟中,當客戶端進行熱數(shù)據(jù)查詢時,所述服務器端首先接收所述客戶端發(fā)來的熱數(shù)據(jù)查詢請求,該查詢請求中包含了各種查詢參數(shù),例如查詢時間,查詢的業(yè)務單元以及過濾條件等(例如特定維度的數(shù)據(jù),或者是全部的數(shù)據(jù));
[0019]然后,所述服務器端解析所述查詢請求,并確定查詢計劃;
[0020]所述服務器端根據(jù)所述查詢計劃在緩存隊列中查詢數(shù)據(jù);這里,緩存隊列中包含時間字段、業(yè)務維度和指標,其中時間字段精確到秒;
[0021]再把獲得的查詢結果返回給所述客戶端。
[0022]在上述操作中,服務器端根據(jù)所述查詢計劃在緩存隊列中查詢數(shù)據(jù)的過程可以是:
[0023]服務器端首先根據(jù)所述查詢請求確定業(yè)務單元,也就是查詢服務器端的哪張緩存表;
[0024]然后對所述業(yè)務單元所確定的緩存表按照時間范圍篩選,如果有過濾條件則按照過濾條件篩選,過濾掉不需要的數(shù)據(jù),并將相同維度的數(shù)據(jù)匯總后作為查詢結果。
[0025]步驟13:向所述客戶端返回查詢結果。
[0026]通過上述的操作步驟,就可以提高客戶端的查詢效率和響應速度,并降低數(shù)據(jù)庫的查詢壓力。
[0027]另外,在具體實現(xiàn)中,所述服務器端還可以定時維護緩存區(qū),將失效的冷數(shù)據(jù)從所述緩存區(qū)中移除,這樣客戶端查詢就無需訪問數(shù)據(jù)庫,如圖2所示為本發(fā)明實施例所述服務器端定時維護緩存區(qū)的流程示意圖,其過程具體為:
[0028]步驟21:服務器端首先啟動一個后臺線程,周期性的執(zhí)行以下步驟操作;
[0029]其執(zhí)行頻率根據(jù)需要設定,通常為幾秒或者10秒。
[0030]步驟22:查詢所述服務器端緩存隊列中最后一條數(shù)據(jù)的時間戳,將所述時間戳減去一個查詢周期得到查詢的時間起點;
[0031]這里,為了降低上一次查詢數(shù)據(jù)不完整的情況,將所述時間戳減去一個查詢周期(查詢頻率)得到查詢的時間起點;且如果緩存隊列中沒有數(shù)據(jù),查詢時間的起點則是系統(tǒng)時間減去一個時間周期。
[0032]步驟23:根據(jù)所述時間起點生成SQL查詢語句,向數(shù)據(jù)庫發(fā)送查詢請求,從所述數(shù)據(jù)庫中獲得業(yè)務數(shù)據(jù);
[0033]步驟24:將所述業(yè)務數(shù)據(jù)放入所述緩存隊列;
[0034]在該步驟中,如果相同時間相同維度的數(shù)據(jù)在緩存隊列中已經存在,則將所述業(yè)務數(shù)據(jù)更新到緩存隊列中,否則插入到緩存隊列中;按照該規(guī)則,在緩存隊列中的數(shù)據(jù)是順序且按照時間遞增的數(shù)據(jù)隊列。
[0035]步驟25:根據(jù)業(yè)務需求取得熱數(shù)據(jù)的生命周期,并將緩存的生命周期設定為比所述熱數(shù)據(jù)的生命周期長;
[0036]舉例來說,假如熱數(shù)據(jù)的生命周期是I個小時,考慮數(shù)據(jù)的冗余性,且緩存的生命周期比熱數(shù)據(jù)的生命周期長,那么緩存的生命周期可以設定為I小時30分鐘。
[0037]步驟26:再次取得所述緩存隊列中最后一條數(shù)據(jù)的時間戳,將所述時間戳減去所述緩存的生命周期得到冷數(shù)據(jù)的時間終點;
[0038]在該步驟中,所得到的時間也是熱數(shù)據(jù)的時間起點。
[0039]步驟27:從所述緩存隊列中刪除所述時間終點之前的全部數(shù)據(jù),使所述緩存隊列中保留的全是熱數(shù)據(jù)。
[0040]綜上所述,通過本發(fā)明實施例所述方法在服務器端緩存并定時維護熱數(shù)據(jù),能夠提高客戶端的查詢效率和響應速度,并降低數(shù)據(jù)庫的查詢壓力。
[0041]以上所述,僅為本發(fā)明較佳的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術領域】的技術人員在本發(fā)明披露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應該以權利要求書的保護范圍為準。
【權利要求】
1.一種查詢熱數(shù)據(jù)的方法,其特征在于,所述方法包括: 在實時監(jiān)控系統(tǒng)下,服務器端預先查詢熱數(shù)據(jù),將查詢到的熱數(shù)據(jù)緩存在服務器端的內存中; 當客戶端進行熱數(shù)據(jù)查詢時,所述服務器端在預先緩存的數(shù)據(jù)中執(zhí)行數(shù)據(jù)查詢操作; 向所述客戶端返回查詢結果。
2.根據(jù)權利要求1所述查詢熱數(shù)據(jù)的方法,其特征在于,所述服務器端在預先緩存的數(shù)據(jù)中執(zhí)行數(shù)據(jù)查詢操作,具體包括: 所述服務器端接收所述客戶端發(fā)來的熱數(shù)據(jù)查詢請求; 所述服務器端解析所述查詢請求,并確定查詢計劃; 所述服務器端根據(jù)所述查詢計劃在緩存隊列中查詢數(shù)據(jù); 將獲得的查詢結果返回給所述客戶端。
3.根據(jù)權利要求2所述查詢熱數(shù)據(jù)的方法,其特征在于,所述服務器端根據(jù)所述查詢計劃在緩存隊列中查詢數(shù)據(jù),具體包括: 所述服務器端首先根據(jù)所述查詢請求確定業(yè)務單元; 對所述業(yè)務單元所確定的緩存表按照時間范圍篩選,如果有過濾條件則按照過濾條件篩選,過濾掉不需要的數(shù)據(jù),并將相同維度的數(shù)據(jù)匯總后作為查詢結果。
4.根據(jù)權利要求1所述查詢熱數(shù)據(jù)的方法,其特征在于,所述方法還包括: 所述服務器端定時維護緩存區(qū),將失效的冷數(shù)據(jù)從所述緩存區(qū)中移除。
5.根據(jù)權利要求4所述查詢熱數(shù)據(jù)的方法,其特征在于,所述服務器端定時維護緩存區(qū),將失效的冷數(shù)據(jù)從所述緩存區(qū)中移除,具體包括: 所述服務器端首先啟動一個后臺線程,周期性的執(zhí)行以下操作; 查詢所述服務器端緩存隊列中最后一條數(shù)據(jù)的時間戳,將所述時間戳減去一個查詢周期得到查詢的時間起點; 根據(jù)所述時間起點生成SQL查詢語句,向數(shù)據(jù)庫發(fā)送查詢請求,從所述數(shù)據(jù)庫中獲得業(yè)務數(shù)據(jù); 將所述業(yè)務數(shù)據(jù)放入所述緩存隊列,如果相同時間相同維度的業(yè)務數(shù)據(jù)在緩存隊列中已經存在,則將所述業(yè)務數(shù)據(jù)更新到所述緩存隊列中,否則插入到所述緩存隊列中; 根據(jù)業(yè)務需求取得熱數(shù)據(jù)的生命周期,并將緩存的生命周期設定為比所述熱數(shù)據(jù)的生命周期長; 再次取得所述緩存隊列中最后一條數(shù)據(jù)的時間戳,將所述時間戳減去所述緩存的生命周期得到冷數(shù)據(jù)的時間終點; 從所述緩存隊列中刪除所述時間終點之前的全部數(shù)據(jù),使所述緩存隊列中保留的全是熱數(shù)據(jù)。
【文檔編號】G06F17/30GK104268286SQ201410561983
【公開日】2015年1月7日 申請日期:2014年10月21日 優(yōu)先權日:2014年10月21日
【發(fā)明者】郭濤, 王鵬 申請人:北京國雙科技有限公司