專利名稱:一種數(shù)據(jù)緩存的方法、緩存服務(wù)器及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)緩存的方法、緩存服務(wù)器及系統(tǒng)。
背景技術(shù):
在程序設(shè)計中,數(shù)據(jù)庫設(shè)計是一個比較重要的環(huán)節(jié),數(shù)據(jù)庫用于存儲和檢索數(shù)據(jù), 為了滿足業(yè)務(wù)需求和實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,在數(shù)據(jù)庫中需要設(shè)計許多數(shù)據(jù)表,并且還需要 在數(shù)據(jù)表之間建立主鍵與外鍵的關(guān)聯(lián)關(guān)系以保持?jǐn)?shù)據(jù)的一致性和唯一性,這些關(guān)聯(lián)關(guān)系將 數(shù)據(jù)庫中各個數(shù)據(jù)表關(guān)聯(lián)在一起。
數(shù)據(jù)表間相互關(guān)聯(lián)對于存儲數(shù)據(jù)的速度沒什么太大的影響,但是會嚴(yán)重影響檢索 數(shù)據(jù)的速度,現(xiàn)有技術(shù)中解決檢索數(shù)據(jù)速度較慢的問題,一般采取優(yōu)化數(shù)據(jù)庫的方式來進(jìn) 行,比如“建立索引”、“使用存儲過程”、“優(yōu)化SQL (structured query language,結(jié)構(gòu)化 查詢語言)語句”等。
隨著時間的推移,數(shù)據(jù)庫在使用的過程中將會存儲海量數(shù)據(jù),為了應(yīng)對業(yè)務(wù)的需 要,需要在一二十個關(guān)聯(lián)數(shù)據(jù)表中檢索數(shù)據(jù),當(dāng)有大用戶量訪問時,數(shù)據(jù)庫服務(wù)器硬盤燈將 會狂閃不止,無數(shù)進(jìn)程需要IO(Input/Output,輸入/輸出)操作,并處于阻塞狀態(tài)。
在現(xiàn)有技術(shù)中,通常會使用緩存機(jī)制,緩存機(jī)制分為兩種,一種是數(shù)據(jù)庫緩存,一 種是緩存框架,這兩種緩存機(jī)制都是將常用的不經(jīng)常改變的數(shù)據(jù)預(yù)先緩存到內(nèi)存中,當(dāng)客 戶端發(fā)起請求時,優(yōu)先從緩存中提取,緩存中不存在需要的數(shù)據(jù),才從數(shù)據(jù)庫中查詢,并將 查詢到的數(shù)據(jù)緩存到內(nèi)存中,以備下次請求使用。
采用數(shù)據(jù)庫緩存或緩存框架,在一般應(yīng)用場景中確實(shí)可以解決問題,但是對于數(shù) 據(jù)庫中存儲著海量數(shù)據(jù),用戶在通過客戶端每次進(jìn)行檢索時,需要執(zhí)行多條查詢語句,并需 要將這些查詢語句返回的查詢結(jié)果數(shù)據(jù)相互融合,最后將融合后的數(shù)據(jù)返回給客戶端,在 此情況下,如果使用上述數(shù)據(jù)庫緩存和框架緩存,每次響應(yīng)客戶端的請求,仍然會需要執(zhí)行 查詢、數(shù)據(jù)融合的步驟,耗費(fèi)較長的時間,會影響用戶的體驗。發(fā)明內(nèi)容
本發(fā)明實(shí)施例所要解決的技術(shù)問題在于,提供一種數(shù)據(jù)緩存的方法、緩存服務(wù)器 及系統(tǒng),可以有效地提聞檢索數(shù)據(jù)的效率。
為了解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)緩存的方法,包括
根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果;
根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí)體,所述數(shù) 據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對象實(shí) 體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系;
緩存所述數(shù)據(jù)對象實(shí)體。
其中,所述根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí) 體,包括
根據(jù)業(yè)務(wù)需求對所述查詢結(jié)果進(jìn)行業(yè)務(wù)邏輯運(yùn)算;
將業(yè)務(wù)邏輯運(yùn)算的運(yùn)算結(jié)果和/或查詢結(jié)果的數(shù)據(jù)錄入到預(yù)先定義的所述數(shù)據(jù) 對象模型中,將所述數(shù)據(jù)對象模型構(gòu)造成所述數(shù)據(jù)對象實(shí)體。
其中,還包括
將執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢得到查詢結(jié)果所消耗的 時間記錄為第一消耗時間;
將構(gòu)造得到數(shù)據(jù)對象實(shí)體所消耗的時間記錄為第二消耗時間;
將所述第一消耗時間、所述第二消耗時間以及預(yù)設(shè)的緩沖時間之和作為間隔時 長,所述間隔時長用于表示從當(dāng)前執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢開始距離下次執(zhí)行對數(shù)據(jù)庫 進(jìn)行數(shù)據(jù)查詢的中間時間。
其中,所述緩存所述數(shù)據(jù)對象實(shí)體的步驟之后,還包括
當(dāng)達(dá)到所述間隔時長時,重新執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查 詢,得到查詢結(jié)果以及構(gòu)造、緩存所述數(shù)據(jù)對象實(shí)體的操作,以更新所述數(shù)據(jù)對象實(shí)體。
其中,還包括
當(dāng)接收到業(yè)務(wù)服務(wù)器的數(shù)據(jù)查詢請求時,發(fā)送已緩存的數(shù)據(jù)對象實(shí)體中符合數(shù)據(jù) 查詢請求參數(shù)的數(shù)據(jù)到所述業(yè)務(wù)服務(wù)器。
相應(yīng)地,本發(fā)明實(shí)施例還提供了一種緩存服務(wù)器,包括
查詢模塊,用于根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果;
構(gòu)造模塊,用于根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對 象實(shí)體,所述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型, 所述數(shù)據(jù)對象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系;
緩存模塊,用于緩存所述數(shù)據(jù)對象實(shí)體。
其中,所述構(gòu)造模塊包括
邏輯運(yùn)算單元,用于根據(jù)業(yè)務(wù)需求對所述查詢結(jié)果進(jìn)行業(yè)務(wù)邏輯運(yùn)算;
錄入單元,用于將業(yè)務(wù)邏輯運(yùn)算的運(yùn)算結(jié)果和/或查詢結(jié)果的數(shù)據(jù)錄入到預(yù)先定 義的所述數(shù)據(jù)對象模型中,將所述數(shù)據(jù)對象模型構(gòu)造成所述數(shù)據(jù)對象實(shí)體。
其中,還包括
第一記錄模塊,用于將執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢得到 查詢結(jié)果所消耗的時間記錄為第一消耗時間;
第二記錄模塊,用于將構(gòu)造得到數(shù)據(jù)對象實(shí)體所消耗的時間記錄為第二消耗時 間;
總時間計算模塊,用于將所述第一消耗時間、所述第二消耗時間以及預(yù)設(shè)的緩沖 時間之和作為間隔時長,所述間隔時長用于表示從當(dāng)前執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢開始距 離下次執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢的中間時間。
其中,還包括
更新模塊,用于當(dāng)達(dá)到所述間隔時長時,重新執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù) 據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果以及構(gòu)造、緩存所述數(shù)據(jù)對象實(shí)體的操作,以更新所述數(shù) 據(jù)對象實(shí)體。
其中,還包括
發(fā)送模塊,用于當(dāng)接收到業(yè)務(wù)服務(wù)器的數(shù)據(jù)查詢請求時,發(fā)送已緩存的數(shù)據(jù)對象 實(shí)體中符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù)到所述業(yè)務(wù)服務(wù)器。
相應(yīng)地,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)緩存的系統(tǒng),包括緩存服務(wù)器、業(yè)務(wù)服 務(wù)器、數(shù)據(jù)庫服務(wù)器;
所述緩存服務(wù)器,用于根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié) 果;根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí)體,所述數(shù)據(jù)對象 模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對象實(shí)體中包 括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系;緩存所述數(shù)據(jù)對象實(shí)體;
所述業(yè)務(wù)服務(wù)器,用于接收用戶請求,根據(jù)所述用戶請求發(fā)送數(shù)據(jù)查詢請求到所 述緩存服務(wù)器,并通過調(diào)用所述緩存服務(wù)器接口從已緩存的數(shù)據(jù)對象實(shí)體中檢索符合數(shù)據(jù) 查詢請求參數(shù)的數(shù)據(jù),接收檢索到的數(shù)據(jù)并將該數(shù)據(jù)返回給用戶;
所述數(shù)據(jù)庫服務(wù)器,用于存儲數(shù)據(jù),并讓所述緩存服務(wù)器進(jìn)行數(shù)據(jù)查詢。
其中,還包括
用戶終端,用于發(fā)送用戶請求到所述業(yè)務(wù)服務(wù)器,以使所述業(yè)務(wù)服務(wù)器根據(jù)所述 用戶請求發(fā)送數(shù)據(jù)查詢請求到所述緩存服務(wù)器,以獲取用戶所需的業(yè)務(wù)數(shù)據(jù)。
實(shí)施本發(fā)明實(shí)施例,具有如下有益效果
本發(fā)明實(shí)施例通過緩存服務(wù)器預(yù)先緩存了根據(jù)數(shù)據(jù)查詢結(jié)果和預(yù)置的數(shù)據(jù)對象 模型構(gòu)造得到的數(shù)據(jù)對象實(shí)體,方便用戶在發(fā)起查詢請求時,可以直接從數(shù)據(jù)對象實(shí)體中 檢索到符合條件的數(shù)據(jù),提高了檢索數(shù)據(jù)的效率。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)緩存的系統(tǒng)的結(jié)構(gòu)示意圖2是本發(fā)明實(shí)施例提供的一種緩存服務(wù)器的結(jié)構(gòu)示意圖3是本發(fā)明實(shí)施例提供的另一種緩存服務(wù)器的結(jié)構(gòu)示意圖4是圖3中的構(gòu)造模塊的結(jié)構(gòu)示意圖5是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)緩存的方法的流程示意圖6是本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)緩存的方法的流程示意圖7是本發(fā)明實(shí)施例提供的確定間隔時長的方法的流程示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請參見圖1,為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)緩存的系統(tǒng)的結(jié)構(gòu)示意圖,所述數(shù)據(jù)緩存的系統(tǒng)可以包括業(yè)務(wù)服務(wù)器1、緩存服務(wù)器2、數(shù)據(jù)庫服務(wù)器3。
所述業(yè)務(wù)服務(wù)器1,用于接收用戶請求,根據(jù)所述用戶請求發(fā)送數(shù)據(jù)查詢請求到所 述緩存服務(wù)器,并通過調(diào)用所述緩存服務(wù)器接口從已緩存的數(shù)據(jù)對象實(shí)體中檢索符合數(shù)據(jù) 查詢請求參數(shù)的數(shù)據(jù),接收檢索到的數(shù)據(jù)并將該數(shù)據(jù)返回給用戶;
所述緩存服務(wù)器2,用于根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié) 果;根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí)體,所述數(shù)據(jù)對象 模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對象實(shí)體中包 括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系;緩存所述數(shù)據(jù)對象實(shí)體;
具體的,所述緩存服務(wù)器2還可以通過循環(huán)執(zhí)行數(shù)據(jù)庫查詢和構(gòu)造數(shù)據(jù)對象實(shí)體 來不斷更新數(shù)據(jù)對象實(shí)體。
所述數(shù)據(jù)庫服務(wù)器3,用于存儲數(shù)據(jù),并讓所述緩存服務(wù)器進(jìn)行數(shù)據(jù)查詢。
所述數(shù)據(jù)緩存的系統(tǒng)還包括用戶終端,用于發(fā)送用戶請求到所述業(yè)務(wù)服務(wù)器,以 使所述業(yè)務(wù)服務(wù)器根據(jù)所述用戶請求發(fā)送數(shù)據(jù)查詢請求到所述緩存服務(wù)器,以獲取用戶所 需的業(yè)務(wù)數(shù)據(jù)。
下面結(jié)合圖2-4,對圖1中的緩存服務(wù)器2進(jìn)行詳細(xì)說明。
請參閱圖2,為本發(fā)明實(shí)施例提供的一種緩存服務(wù)器的結(jié)構(gòu)示意圖,所述緩存服務(wù) 器2可以包括查詢模塊10、構(gòu)造模塊20、緩存模塊30。
其中,所述查詢模塊10,用于根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查 詢結(jié)果;
具體的,所述查詢模塊10用于根據(jù)預(yù)先定義的數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù) 據(jù)查詢,得到查詢結(jié)果,因此在執(zhí)行數(shù)據(jù)檢索之前,可以預(yù)先定義好SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)查詢語句,為了滿足業(yè)務(wù)需求可能需要定義多條所述數(shù)據(jù)庫 查詢語句,因此也就需要多次訪問數(shù)據(jù)庫服務(wù)器。緩存服務(wù)作為緩存服務(wù)器2中的服務(wù)在 后臺運(yùn)行,用戶可以啟動、暫?;蛲V顾?,當(dāng)緩存服務(wù)器2被啟動時,所述查詢模塊10將根 據(jù)預(yù)先定義好的數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,并得到查詢結(jié)果,所述查詢結(jié)果 包含有從數(shù)據(jù)庫直接提取而且未經(jīng)業(yè)務(wù)邏輯運(yùn)算處理的原始數(shù)據(jù)。
所述構(gòu)造模塊20,用于根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到 數(shù)據(jù)對象實(shí)體,所述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的 模型,所述數(shù)據(jù)對象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系;
具體的,所述構(gòu)造模塊20,用于根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu) 造得到數(shù)據(jù)對象實(shí)體,因此在構(gòu)造數(shù)據(jù)對象實(shí)體之前,需要預(yù)先定義數(shù)據(jù)對象模型,所述數(shù) 據(jù)對象模型可以包含有查詢數(shù)據(jù)時所需要的全部關(guān)鍵字,所述數(shù)據(jù)對象模型完全滿足檢索 數(shù)據(jù)的需要,當(dāng)用戶發(fā)起數(shù)據(jù)查詢請求時,數(shù)據(jù)查詢請求所包含的關(guān)鍵字可以與數(shù)據(jù)對象 模型所包含的關(guān)鍵字匹配,找到關(guān)鍵字所對應(yīng)的數(shù)據(jù)。
對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)檢索得到的數(shù)據(jù)可以直接錄入到所述數(shù)據(jù)對象模型中,也可以 對檢索得到的數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯運(yùn)算,得到運(yùn)算后的數(shù)據(jù),再將運(yùn)算后的數(shù)據(jù)錄入到所述 數(shù)據(jù)對象模型中,進(jìn)行業(yè)務(wù)邏輯運(yùn)算時可以根據(jù)用戶的一些信息,如用戶所屬的群體、用戶 所在地信息等等,讓用戶得到更符合用戶需求的數(shù)據(jù)。當(dāng)全量數(shù)據(jù)錄入到數(shù)據(jù)對象模型后, 便將數(shù)據(jù)對象模型構(gòu)造成了數(shù)據(jù)對象實(shí)體,數(shù)據(jù)對象實(shí)體中存儲的是有效時間段內(nèi)的全量數(shù)據(jù)。根據(jù)業(yè)務(wù)需求,可以從數(shù)據(jù)對象模型中獲取通過數(shù)據(jù)檢索直接得到的數(shù)據(jù),也可以獲 取運(yùn)算后的數(shù)據(jù)。所述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系 的模型,所述數(shù)據(jù)對象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系。
所述緩存模塊30,用于緩存所述數(shù)據(jù)對象實(shí)體;
當(dāng)將數(shù)據(jù)對象模型構(gòu)造成數(shù)據(jù)對象實(shí)體后,所述緩存模塊30緩存所述數(shù)據(jù)對象 實(shí)體,并且被緩存的數(shù)據(jù)對象實(shí)體中存儲的是有效時段內(nèi)的全量數(shù)據(jù)。所述緩存模塊30緩 存所述數(shù)據(jù)對象實(shí)體后,將數(shù)據(jù)對象實(shí)體共享給業(yè)務(wù)服務(wù)器1,供業(yè)務(wù)服務(wù)器I從已緩存的 數(shù)據(jù)對象實(shí)體中檢索用戶需要的數(shù)據(jù)。
請參閱圖3,為本發(fā)明實(shí)施例提供的另一種緩存服務(wù)器的結(jié)構(gòu)示意圖,本實(shí)施例中 的所述緩存服務(wù)器2可以包括上述圖2實(shí)施例中的查詢模塊10、構(gòu)造模塊20、緩存模塊 30。進(jìn)一步的,在本發(fā)明實(shí)施例中,所述緩存服務(wù)器還包括發(fā)送模塊40、第一記錄模塊50、 第二記錄模塊60、總時間計算模塊70以及更新模塊80。其中
所述發(fā)送模塊40,用于當(dāng)接收到業(yè)務(wù)服務(wù)器I的數(shù)據(jù)查詢請求時,發(fā)送已緩存的 數(shù)據(jù)對象實(shí)體中符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù)到所述業(yè)務(wù)服務(wù)器I。
具體的,所述發(fā)送模塊40用于當(dāng)緩存服務(wù)器2接收到業(yè)務(wù)服務(wù)器I的數(shù)據(jù)查詢請 求時,業(yè)務(wù)服務(wù)器I可以從緩存服務(wù)器2中所緩存的更新后的數(shù)據(jù)對象實(shí)體中,檢索符合 數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù),并從緩存服務(wù)器2上獲取檢索到的符合數(shù)據(jù)查詢請求參數(shù)的數(shù) 據(jù)。如果當(dāng)緩存服務(wù)器2接收到業(yè)務(wù)服務(wù)器I的數(shù)據(jù)查詢請求時,緩存服務(wù)器2仍處于構(gòu) 造數(shù)據(jù)對象實(shí)體的階段,此時,業(yè)務(wù)服務(wù)器I可以通過緩存服務(wù)器2中所緩存的之前的數(shù)據(jù) 對象實(shí)體檢索到的符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù)。當(dāng)之前的數(shù)據(jù)對象實(shí)體和更新后的數(shù)據(jù) 對象實(shí)體都緩存于緩存服務(wù)器2時,業(yè)務(wù)服務(wù)器I可以根據(jù)業(yè)務(wù)需求,選擇從之前的數(shù)據(jù)對 象實(shí)體中檢索符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù),或從更新后的數(shù)據(jù)對象實(shí)體中檢索符合數(shù)據(jù) 查詢請求參數(shù)的數(shù)據(jù)。當(dāng)業(yè)務(wù)服務(wù)器I從數(shù)據(jù)對象實(shí)體中檢索完符合數(shù)據(jù)查詢請求參數(shù)的 數(shù)據(jù)后,所述發(fā)送模塊40可以將符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù)發(fā)送到業(yè)務(wù)服務(wù)器1,以使 業(yè)務(wù)服務(wù)器I將接收到的數(shù)據(jù)返回用戶。
所述第一記錄模塊50,用于將執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查 詢得到查詢結(jié)果所消耗的時間記錄為第一消耗時間;
具體的,在所述查詢模塊10運(yùn)行時,可以同時運(yùn)行所述第一記錄模塊50,即計算 執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果所消耗的時間,并將 所消耗的時間作為第一消耗時間,所述第一消耗時間為所述查詢模塊10運(yùn)行時所消耗的 時間。
所述第二記錄模塊60,用于將構(gòu)造得到數(shù)據(jù)對象實(shí)體所消耗的時間記錄為第二消 耗時間;
具體的,在所述構(gòu)造模塊20運(yùn)行時,可以同時運(yùn)行所述第二記錄模塊60,即計算 構(gòu)造得到數(shù)據(jù)對象實(shí)體所消耗的時間,并將所消耗的時間作為第二消耗時間,所述第二消 耗時間為運(yùn)行所述構(gòu)造模塊20所消耗的時間。
所述總時間計算模塊70,用于將所述第一消耗時間、所述第二消耗時間以及預(yù)設(shè) 的緩沖時間之和作為間隔時長,所述間隔時長用于表示從當(dāng)前執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢 開始距離下次執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢的中間時間。
具體的,所述總時間計算模塊70用于將所述第一記錄模塊50得到的第一消耗時 間加上所述第二記錄模塊60得到的第二消耗時間再加上預(yù)設(shè)的緩沖時間,最終求得所述 間隔時長。
在啟動緩存服務(wù)器2之前,預(yù)設(shè)一個緩沖時間,所述緩沖時間可以為每次執(zhí)行數(shù) 據(jù)庫查詢和構(gòu)造數(shù)據(jù)對象實(shí)體留有緩沖時間,可以讓緩存服務(wù)器2有規(guī)律的執(zhí)行數(shù)據(jù)庫查 詢和構(gòu)造數(shù)據(jù)對象實(shí)體,所述緩沖時間可以由用戶設(shè)定為10分鐘、30分鐘或I小時等等。所 述緩沖時間是從構(gòu)造完數(shù)據(jù)對象實(shí)體之后到下次開始執(zhí)行數(shù)據(jù)庫查詢之前的一段時間,所 述間隔時長是從當(dāng)前執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢開始距離下次執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查 詢的中間時間。例如,當(dāng)前的第一消耗時間為10分鐘,當(dāng)前的第二消耗時間為5分鐘,預(yù)設(shè) 的緩沖時間為10分鐘,那么當(dāng)前的間隔時長就為這些時間的總和,即間隔時長為25分鐘。
所述更新模塊80,用于當(dāng)達(dá)到所述間隔時長時,重新執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語 句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果以及構(gòu)造、緩存所述數(shù)據(jù)對象實(shí)體的操作,以更新 所述數(shù)據(jù)對象實(shí)體。
具體的,若計算得到的當(dāng)前的間隔時長為25分鐘,當(dāng)緩存服務(wù)器2檢測到系統(tǒng)時 間達(dá)到了當(dāng)前的間隔時長25分鐘時,所述更新模塊80將重新執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語 句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果以及構(gòu)造、緩存所述數(shù)據(jù)對象實(shí)體的操作,緩存服 務(wù)器2可以有規(guī)律的循環(huán)運(yùn)行,不斷地更新所述數(shù)據(jù)對象實(shí)體。
請參閱圖4,圖4是圖3中的構(gòu)造模塊的結(jié)構(gòu)示意圖,所述構(gòu)造模塊20可以包括 邏輯運(yùn)算單元201、錄入單元202。
所述邏輯運(yùn)算單元201,用于根據(jù)業(yè)務(wù)需求對所述查詢結(jié)果進(jìn)行業(yè)務(wù)邏輯運(yùn)算;
具體的,所述邏輯運(yùn)算單元201用于根據(jù)業(yè)務(wù)需求對所述查詢結(jié)果進(jìn)行業(yè)務(wù)邏輯 運(yùn)算,所述邏輯運(yùn)算單元201進(jìn)行運(yùn)行時可以根據(jù)用戶的一些信息,如用戶所屬的群體、用 戶所在地信息等等,讓用戶得到更符合用戶需求的數(shù)據(jù)。
所述錄入單元202,用于將業(yè)務(wù)邏輯運(yùn)算的運(yùn)算結(jié)果和/或查詢結(jié)果的數(shù)據(jù)錄入 到預(yù)先定義的所述數(shù)據(jù)對象模型中,將所述數(shù)據(jù)對象模型構(gòu)造成所述數(shù)據(jù)對象實(shí)體;
具體的,所述錄入單元202可以將對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)檢索得到的數(shù)據(jù)直接錄入到 所述數(shù)據(jù)對象模型中,也可以對檢索得到的數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯運(yùn)算,得到運(yùn)算后的數(shù)據(jù),再 將運(yùn)算后的數(shù)據(jù)錄入到所述數(shù)據(jù)對象模型中,此時,便將所述數(shù)據(jù)對象模型構(gòu)造成所述數(shù) 據(jù)對象實(shí)體。所述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模 型,所述數(shù)據(jù)對象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系。
本發(fā)明實(shí)施例通過緩存服務(wù)器預(yù)先緩存了根據(jù)數(shù)據(jù)查詢結(jié)果和預(yù)置的數(shù)據(jù)對象 模型構(gòu)造得到的數(shù)據(jù)對象實(shí)體,由于預(yù)先執(zhí)行了相關(guān)的數(shù)據(jù)庫查詢語句,并將查詢結(jié)果相 互融合構(gòu)造成數(shù)據(jù)對象實(shí)體,因此在客戶端發(fā)起請求時,可以直接從數(shù)據(jù)對象實(shí)體中檢索 到符合條件的數(shù)據(jù),提高了檢索數(shù)據(jù)的效率,還由于緩存服務(wù)器可以循環(huán)運(yùn)行,因此可以不 斷更新數(shù)據(jù)對象實(shí)體,讓用戶可以得到更準(zhǔn)確的數(shù)據(jù)。
請參閱圖5,為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)緩存的方法的流程示意圖。如圖5所 示,本發(fā)明實(shí)施例的所述方法可以包括以下步驟
S101,根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果;
在執(zhí)行數(shù)據(jù)檢索之前,預(yù)先定義好SQL (Structured Query Language,結(jié)構(gòu)化查詢語言)查詢語句,為了滿足業(yè)務(wù)需求可能需要定義多條所述數(shù)據(jù)庫查詢語句,因此也就 需要多次訪問數(shù)據(jù)庫服務(wù)器。緩存服務(wù)作為緩存服務(wù)器中的服務(wù)在后臺運(yùn)行,用戶可以啟 動、暫停或停止它,當(dāng)緩存服務(wù)器被啟動時,所述緩存服務(wù)器將根據(jù)預(yù)先定義好的數(shù)據(jù)庫查 詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,并得到查詢結(jié)果,所述查詢結(jié)果包含有從數(shù)據(jù)庫直接提取 而且未經(jīng)業(yè)務(wù)邏輯運(yùn)算處理的原始數(shù)據(jù)。
S102,根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí)體,所 述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對 象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系;
具體的,在構(gòu)造數(shù)據(jù)對象實(shí)體之前,需要預(yù)先定義數(shù)據(jù)對象模型,所述數(shù)據(jù)對象模 型可以包含有查詢數(shù)據(jù)時所需要的全部關(guān)鍵字,所述數(shù)據(jù)對象模型完全滿足檢索數(shù)據(jù)的需 要,當(dāng)用戶發(fā)起數(shù)據(jù)查詢請求時,數(shù)據(jù)查詢請求所包含的關(guān)鍵字可以與數(shù)據(jù)對象模型所包 含的關(guān)鍵字匹配,找到關(guān)鍵字所對應(yīng)的數(shù)據(jù)。
對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)檢索得到的數(shù)據(jù)可以直接錄入到所述數(shù)據(jù)對象模型中,也可以 對檢索得到的數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯運(yùn)算,得到運(yùn)算后的數(shù)據(jù),再將運(yùn)算后的數(shù)據(jù)錄入到所述 數(shù)據(jù)對象模型中,進(jìn)行業(yè)務(wù)邏輯運(yùn)算時可以根據(jù)用戶的一些信息進(jìn)行運(yùn)算,如用戶所屬的 群體、用戶所在地信息等等,運(yùn)算后的數(shù)據(jù)可以更符合用戶的需求。當(dāng)全量數(shù)據(jù)錄入到數(shù)據(jù) 對象模型后,便將數(shù)據(jù)對象模型構(gòu)造成了數(shù)據(jù)對象實(shí)體,數(shù)據(jù)對象實(shí)體中存儲的是有效時 間段內(nèi)的全量數(shù)據(jù)。根據(jù)業(yè)務(wù)需求,可以從數(shù)據(jù)對象模型中獲取通過數(shù)據(jù)檢索直接得到的 數(shù)據(jù),也可以獲取運(yùn)算后的數(shù)據(jù)。所述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具 有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的 關(guān)聯(lián)關(guān)系。
S103,緩存所述數(shù)據(jù)對象實(shí)體;
當(dāng)將數(shù)據(jù)對象模型構(gòu)造成數(shù)據(jù)對象實(shí)體后,緩存所述數(shù)據(jù)對象實(shí)體,并且被緩存 的數(shù)據(jù)對象實(shí)體中存儲的是有效時段內(nèi)的全量數(shù)據(jù)。緩存所述數(shù)據(jù)對象實(shí)體后,將數(shù)據(jù) 對象實(shí)體共享給業(yè)務(wù)服務(wù)器,供業(yè)務(wù)服務(wù)器從已緩存的數(shù)據(jù)對象實(shí)體中檢索用戶需要的數(shù) 據(jù)。
本發(fā)明實(shí)施例通過緩存服務(wù)器預(yù)先緩存了根據(jù)數(shù)據(jù)查詢結(jié)果和預(yù)置的數(shù)據(jù)對象 模型構(gòu)造得到的數(shù)據(jù)對象實(shí)體,方便用戶在發(fā)起查詢請求時,可以直接從數(shù)據(jù)對象實(shí)體中 檢索到符合條件的數(shù)據(jù),提高了檢索數(shù)據(jù)的效率。
請參閱圖6,為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)緩存的方法的流程示意圖。如圖6 所示,本發(fā)明實(shí)施例的所述方法包括以下步驟
S201,根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果;
在執(zhí)行數(shù)據(jù)檢索之前,預(yù)先定義好SQL (Structured Query Language,結(jié)構(gòu)化查 詢語言)查詢語句,為了滿足業(yè)務(wù)需求可能需要定義多條所述數(shù)據(jù)庫查詢語句,因此也就 需要多次訪問數(shù)據(jù)庫服務(wù)器。緩存服務(wù)作為緩存服務(wù)器中的服務(wù)在后臺運(yùn)行,用戶可以啟 動、暫?;蛲V顾?,當(dāng)緩存服務(wù)器被啟動時,所述緩存服務(wù)器將根據(jù)預(yù)先定義好的數(shù)據(jù)庫查 詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,并得到查詢結(jié)果,所述查詢結(jié)果包含有從數(shù)據(jù)庫直接提取 而且未經(jīng)業(yè)務(wù)邏輯運(yùn)算處理的原始數(shù)據(jù)。
S202,根據(jù)業(yè)務(wù)需求對所述查詢結(jié)果進(jìn)行業(yè)務(wù)邏輯運(yùn)算;
進(jìn)行業(yè)務(wù)邏輯運(yùn)算時可以根據(jù)用戶的一些信息進(jìn)行運(yùn)算,如用戶所屬的群體、用 戶所在地信息等等,運(yùn)算后的數(shù)據(jù)可以更符合用戶的需求。
S203,將業(yè)務(wù)邏輯運(yùn)算的運(yùn)算結(jié)果和/或查詢結(jié)果的數(shù)據(jù)錄入到預(yù)先定義的所述 數(shù)據(jù)對象模型中,將所述數(shù)據(jù)對象模型構(gòu)造成所述數(shù)據(jù)對象實(shí)體;
對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)檢索得到的數(shù)據(jù)可以直接錄入到所述數(shù)據(jù)對象模型中,也可以 對檢索得到的數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯運(yùn)算,得到運(yùn)算后的數(shù)據(jù),再將運(yùn)算后的數(shù)據(jù)錄入到所述 數(shù)據(jù)對象模型中,此時,便將所述數(shù)據(jù)對象模型構(gòu)造成所述數(shù)據(jù)對象實(shí)體。所述數(shù)據(jù)對象模 型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對象實(shí)體中包括 了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系。
S204,緩存所述數(shù)據(jù)對象實(shí)體;
當(dāng)將數(shù)據(jù)對象模型構(gòu)造成數(shù)據(jù)對象實(shí)體后,緩存所述數(shù)據(jù)對象實(shí)體,并且被緩存 的數(shù)據(jù)對象實(shí)體中存儲的是有效時段內(nèi)的全量數(shù)據(jù)。緩存所述數(shù)據(jù)對象實(shí)體后,將數(shù)據(jù) 對象實(shí)體共享給業(yè)務(wù)服務(wù)器,供業(yè)務(wù)服務(wù)器從已緩存的數(shù)據(jù)對象實(shí)體中檢索用戶需要的數(shù) 據(jù)。
當(dāng)接收到業(yè)務(wù)服務(wù)器的數(shù)據(jù)查詢請求時,發(fā)送已緩存的數(shù)據(jù)對象實(shí)體中符合數(shù)據(jù) 查詢請求參數(shù)的數(shù)據(jù)到所述業(yè)務(wù)服務(wù)器;
具體的,當(dāng)緩存服務(wù)器接收到業(yè)務(wù)服務(wù)器的數(shù)據(jù)查詢請求時,業(yè)務(wù)服務(wù)器可以從 緩存服務(wù)器中所緩存的更新后的數(shù)據(jù)對象實(shí)體中,檢索符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù),并 從緩存服務(wù)器上獲取檢索到的符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù)。如果當(dāng)緩存服務(wù)器接收到 業(yè)務(wù)服務(wù)器的數(shù)據(jù)查詢請求時,緩存服務(wù)器仍處于構(gòu)造數(shù)據(jù)對象實(shí)體的階段,此時,業(yè)務(wù)服 務(wù)器可以通過緩存服務(wù)器中所緩存的之前的數(shù)據(jù)對象實(shí)體檢索到的符合數(shù)據(jù)查詢請求參 數(shù)的數(shù)據(jù)。當(dāng)之前的數(shù)據(jù)對象實(shí)體和更新后的數(shù)據(jù)對象實(shí)體都緩存于緩存服務(wù)器時,業(yè)務(wù) 服務(wù)器可以根據(jù)業(yè)務(wù)需求,選擇從之前的數(shù)據(jù)對象實(shí)體中檢索符合數(shù)據(jù)查詢請求參數(shù)的數(shù) 據(jù),或從更新后的數(shù)據(jù)對象實(shí)體中檢索符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù)。當(dāng)業(yè)務(wù)服務(wù)器從數(shù) 據(jù)對象實(shí)體中檢索完符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù)后,緩存服務(wù)器可以將符合數(shù)據(jù)查詢請 求參數(shù)的數(shù)據(jù)發(fā)送到業(yè)務(wù)服務(wù)器,以使業(yè)務(wù)服務(wù)器將接收到的數(shù)據(jù)返回用戶。
進(jìn)一步的,在執(zhí)行完上述的流程之后,可以還包括一個確定間隔時長的流程以確 定對緩存的所述數(shù)據(jù)對象實(shí)體進(jìn)行更新的間隔時長。具體請參見圖7,是本發(fā)明實(shí)施例的確 定間隔時長的方法的流程示意圖,具體包括
S301,將執(zhí)行根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢得到查詢結(jié)果所消耗的 時間記錄為第一消耗時間;
具體的,所述301中記錄所述第一消耗時間是上述實(shí)施例中執(zhí)行S201所消耗的時 間,即計算執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果所消耗的 時間,并將所消耗的時間作為第一消耗時間。
S302,將構(gòu)造得到數(shù)據(jù)對象實(shí)體所消耗的時間記錄為第二消耗時間;
具體的,所述302中記錄所述第二消耗時間是上述實(shí)施例中執(zhí)行S202和S203 — 共所消耗的時間,,即計算并構(gòu)造得到數(shù)據(jù)對象實(shí)體所消耗的時間,并將所消耗的時間作為 第二消耗時間。
S303,將所述第一消耗時間、所述第二消耗時間以及預(yù)設(shè)的緩沖時間之和作為間隔時長,所述間隔時長用于表示從當(dāng)前執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢開始距離下次執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢的中間時間;具體的,在啟動緩存服務(wù)器之前,預(yù)設(shè)一個緩沖時間,所述緩沖時間可以為每次執(zhí)行數(shù)據(jù)庫查詢和構(gòu)造數(shù)據(jù)對象實(shí)體留有緩沖時間,可以讓緩存服務(wù)器有規(guī)律的執(zhí)行數(shù)據(jù)庫查詢和構(gòu)造數(shù)據(jù)對象實(shí)體,所述緩沖時間可以由用戶設(shè)定為10分鐘、30分鐘或I小時等等。所述緩沖時間是從構(gòu)造完數(shù)據(jù)對象實(shí)體之后到下次開始執(zhí)行數(shù)據(jù)庫查詢之前的一段時間。例如,當(dāng)前的第一消耗時間為10分鐘,當(dāng)前的第二消耗時間為5分鐘,預(yù)設(shè)的緩沖時間為10分鐘,那么當(dāng)前的間隔時長就為這些時間的總和,即間隔時長為25分鐘。當(dāng)確定出所述間隔時長后,可以通過設(shè)置計時器等方式進(jìn)行計時,從完成緩存數(shù)據(jù)對象實(shí)體開始計時,當(dāng)達(dá)到間隔時長后,執(zhí)行對所述緩存數(shù)據(jù)對象實(shí)體的更新操作,即當(dāng)達(dá)到所述間隔時長時,重新執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果以及構(gòu)造、緩存所述數(shù)據(jù)對象實(shí)體的操作,以更新所述數(shù)據(jù)對象實(shí)體。具體更新過程可以為上述的S201-S204的步驟。具體的,若計算得到當(dāng)前的間隔時長為25分鐘,當(dāng)緩存服務(wù)器檢測到系統(tǒng)時間達(dá)到了當(dāng)前的間隔時長25分鐘時,緩存服務(wù)器將重新執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果以及構(gòu)造、緩存所述數(shù)據(jù)對象實(shí)體的操作,緩存服務(wù)器可以有規(guī)律的循環(huán)運(yùn)行,不斷地更新所述數(shù)據(jù)對象實(shí)體。本發(fā)明實(shí)施例通過緩存服務(wù)器預(yù)先緩存了根據(jù)數(shù)據(jù)查詢結(jié)果和預(yù)置的數(shù)據(jù)對象模型構(gòu)造得到的數(shù)據(jù)對象實(shí)體,由于預(yù)先執(zhí)行了相關(guān)的數(shù)據(jù)庫查詢語句,并將查詢結(jié)果相互融合構(gòu)造成數(shù)據(jù)對象實(shí)體,因此在客戶端發(fā)起請求時,可以直接從數(shù)據(jù)對象實(shí)體中檢索到符合條件的數(shù)據(jù),提高了檢索數(shù)據(jù)的效率,還由于緩存服務(wù)器可以循環(huán)運(yùn)行,因此可以不斷更新數(shù)據(jù)對象實(shí)體,讓用戶可以得到更準(zhǔn)確的數(shù)據(jù)。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機(jī)存儲記憶體(Random AccessMemory, RAM)等。以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
權(quán)利要求
1.一種數(shù)據(jù)緩存的方法,其特征在于,包括 根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果; 根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí)體,所述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系; 緩存所述數(shù)據(jù)對象實(shí)體。
2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí)體,包括 根據(jù)業(yè)務(wù)需求對所述查詢結(jié)果進(jìn)行業(yè)務(wù)邏輯運(yùn)算; 將業(yè)務(wù)邏輯運(yùn)算的運(yùn)算結(jié)果和/或查詢結(jié)果的數(shù)據(jù)錄入到預(yù)先定義的所述數(shù)據(jù)對象模型中,將所述數(shù)據(jù)對象模型構(gòu)造成所述數(shù)據(jù)對象實(shí)體。
3.如權(quán)利要求2所述的方法,其特征在于,還包括 將執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢得到查詢結(jié)果所消耗的時間記錄為第一消耗時間; 將構(gòu)造得到數(shù)據(jù)對象實(shí)體所消耗的時間記錄為第二消耗時間; 將所述第一消耗時間、所述第二消耗時間以及預(yù)設(shè)的緩沖時間之和作為間隔時長,所述間隔時長用于表示從當(dāng)前執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢開始距離下次執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢的中間時間。
4.如權(quán)利要求3所述的方法,其特征在于,所述緩存所述數(shù)據(jù)對象實(shí)體的步驟之后,還包括 當(dāng)達(dá)到所述間隔時長時,重新執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果以及構(gòu)造、緩存所述數(shù)據(jù)對象實(shí)體的操作,以更新所述數(shù)據(jù)對象實(shí)體。
5.如權(quán)利要求4所述的方法,其特征在于,還包括 當(dāng)接收到業(yè)務(wù)服務(wù)器的數(shù)據(jù)查詢請求時,發(fā)送已緩存的數(shù)據(jù)對象實(shí)體中符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù)到所述業(yè)務(wù)服務(wù)器。
6.一種緩存服務(wù)器,其特征在于,包括 查詢模塊,用于根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果; 構(gòu)造模塊,用于根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí)體,所述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系; 緩存模塊,用于緩存所述數(shù)據(jù)對象實(shí)體。
7.如權(quán)利要求6所述的緩存服務(wù)器,其特征在于,所述構(gòu)造模塊包括 邏輯運(yùn)算單元,用于根據(jù)業(yè)務(wù)需求對所述查詢結(jié)果進(jìn)行業(yè)務(wù)邏輯運(yùn)算; 錄入單元,用于將業(yè)務(wù)邏輯運(yùn)算的運(yùn)算結(jié)果和/或查詢結(jié)果的數(shù)據(jù)錄入到預(yù)先定義的所述數(shù)據(jù)對象模型中,將所述數(shù)據(jù)對象模型構(gòu)造成所述數(shù)據(jù)對象實(shí)體。
8.如權(quán)利要求7所述的緩存服務(wù)器,其特征在于,還包括 第一記錄模塊,用于將執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢得到查詢結(jié)果所消耗的時間記錄為第一消耗時間; 第二記錄模塊,用于將構(gòu)造得到數(shù)據(jù)對象實(shí)體所消耗的時間記錄為第二消耗時間;總時間計算模塊,用于將所述第一消耗時間、所述第二消耗時間以及預(yù)設(shè)的緩沖時間之和作為間隔時長,所述間隔時長用于表示從當(dāng)前執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢開始距離下次執(zhí)行對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢的中間時間。
9.如權(quán)利要求8所述的緩存服務(wù)器,其特征在于,還包括 更新模塊,用于當(dāng)達(dá)到所述間隔時長時,重新執(zhí)行所述根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果以及構(gòu)造、緩存所述數(shù)據(jù)對象實(shí)體的操作,以更新所述數(shù)據(jù)對象實(shí)體。
10.如權(quán)利要求9所述的緩存服務(wù)器,其特征在于,還包括 發(fā)送模塊,用于當(dāng)接收到業(yè)務(wù)服務(wù)器的數(shù)據(jù)查詢請求時,發(fā)送已緩存的數(shù)據(jù)對象實(shí)體中符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù)到所述業(yè)務(wù)服務(wù)器。
11.一種數(shù)據(jù)緩存的系統(tǒng),其特征在于,包括緩存服務(wù)器、業(yè)務(wù)服務(wù)器、數(shù)據(jù)庫服務(wù)器; 所述緩存服務(wù)器,用于根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果;根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí)體,所述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系;緩存所述數(shù)據(jù)對象實(shí)體; 所述業(yè)務(wù)服務(wù)器,用于接收用戶請求,根據(jù)所述用戶請求發(fā)送數(shù)據(jù)查詢請求到所述緩存服務(wù)器,并通過調(diào)用所述緩存服務(wù)器接口從已緩存的數(shù)據(jù)對象實(shí)體中檢索符合數(shù)據(jù)查詢請求參數(shù)的數(shù)據(jù),接收檢索到的數(shù)據(jù)并將該數(shù)據(jù)返回給用戶; 所述數(shù)據(jù)庫服務(wù)器,用于存儲數(shù)據(jù),并讓所述緩存服務(wù)器進(jìn)行數(shù)據(jù)查詢。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,還包括 用戶終端,用于發(fā)送用戶請求到所述業(yè)務(wù)服務(wù)器,以使所述業(yè)務(wù)服務(wù)器根據(jù)所述用戶請求發(fā)送數(shù)據(jù)查詢請求到所述緩存服務(wù)器,以獲取用戶所需的業(yè)務(wù)數(shù)據(jù)。
全文摘要
本發(fā)明實(shí)施例公開了一種數(shù)據(jù)緩存的方法、緩存服務(wù)器及系統(tǒng),其中方法包括如下步驟根據(jù)數(shù)據(jù)庫查詢語句對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢,得到查詢結(jié)果;根據(jù)所述查詢結(jié)果和預(yù)先定義的數(shù)據(jù)對象模型,構(gòu)造得到數(shù)據(jù)對象實(shí)體,所述數(shù)據(jù)對象模型是由數(shù)據(jù)庫中的關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換成具有層級嵌套關(guān)系的模型,所述數(shù)據(jù)對象實(shí)體中包括了根據(jù)查詢結(jié)果得到的數(shù)據(jù)及數(shù)據(jù)間的關(guān)聯(lián)關(guān)系;緩存所述數(shù)據(jù)對象實(shí)體。采用本發(fā)明,可以預(yù)先構(gòu)造并緩存數(shù)據(jù)對象實(shí)體,提高了檢索數(shù)據(jù)的效率。
文檔編號G06F17/30GK103020115SQ201210453698
公開日2013年4月3日 申請日期2012年11月13日 優(yōu)先權(quán)日2012年11月13日
發(fā)明者邵珠玉 申請人:深圳市同洲電子股份有限公司