亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

提高大數(shù)據(jù)量查詢性能的方法及系統(tǒng)的制作方法

文檔序號:6491974閱讀:211來源:國知局
提高大數(shù)據(jù)量查詢性能的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種提高大數(shù)據(jù)量查詢性能的方法及系統(tǒng),屬于大數(shù)據(jù)量查詢【技術(shù)領(lǐng)域】,所述方法包括:A、將磁盤數(shù)據(jù)庫中的數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式加載到分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中;B、獲取客戶端發(fā)送的查詢請求時,依據(jù)該查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合;C、依據(jù)所述緩存ID集合從相應(yīng)的分布式緩存中獲取實體數(shù)據(jù)并返回客戶端。采用本發(fā)明能有效減小磁盤數(shù)據(jù)庫的負載,提高大數(shù)據(jù)的查詢性能。
【專利說明】提高大數(shù)據(jù)量查詢性能的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及大數(shù)據(jù)量查詢【技術(shù)領(lǐng)域】,具體而言,涉及一種提高大數(shù)據(jù)量查詢性能的方法及系統(tǒng)。
【背景技術(shù)】
[0002]在信息時代的大背景下,人們接觸到的信息越來越多,基于大數(shù)據(jù)的查詢應(yīng)用變得越來越廣泛。大數(shù)據(jù)的查詢效率直接影響到系統(tǒng)的響應(yīng)時間和用戶體驗,因此,研究如何提高查詢性能至關(guān)重要。
[0003]在大數(shù)據(jù)的查詢中,一般的做法是將大數(shù)據(jù)以表的形式存入關(guān)系數(shù)據(jù)庫(磁盤數(shù)據(jù)庫,例如Oracle、Sql Server等)中,利用數(shù)據(jù)庫支持的結(jié)構(gòu)化查詢語句(SQL語句)執(zhí)行查詢。這種方式下的數(shù)據(jù)是存儲在磁盤文件上的,當請求比較頻繁,單個查詢比較復(fù)雜(關(guān)聯(lián)多個表),且數(shù)據(jù)量較大時,很容易出現(xiàn)性能瓶頸。
[0004]為了提高大數(shù)據(jù)的查詢性能,目前現(xiàn)有技術(shù)中具有如下兩種解決方法:采用分布式緩存以及采用內(nèi)存數(shù)據(jù)庫。
[0005]分布式緩存,與單機緩存對應(yīng),是指將數(shù)據(jù)緩存于多個不同的主機上,用戶可以無差別的存/取數(shù)據(jù)。分布式緩存不受單機內(nèi)存的限制,通過增加緩存服務(wù)器以增大緩存的容量,擴展性好。
[0006]分布式緩存系統(tǒng)負責在內(nèi)存中維護一個統(tǒng)一巨大的哈希表,可以用來存儲各種格式的數(shù)據(jù),包括圖像、視頻、文件以及關(guān)系數(shù)據(jù)庫檢索的結(jié)果等,存/取性能非常高,時間復(fù)雜度均為O (I)。通過緩存數(shù)據(jù)庫查詢結(jié)果,可以減少關(guān)系數(shù)據(jù)庫的訪問次數(shù),提高系統(tǒng)的響應(yīng)速度。在數(shù)據(jù)驅(qū)動的應(yīng)用中,經(jīng)常需要重復(fù)從關(guān)系數(shù)據(jù)庫中取出相同的數(shù)據(jù),這種重復(fù)極大地增加了關(guān)系數(shù)據(jù)庫的負載,采用分布式緩存是一個很好的解決辦法。
[0007]內(nèi)存數(shù)據(jù)庫,顧名思義就是將數(shù)據(jù)放在內(nèi)存中直接進行操作的數(shù)據(jù)庫。相對于磁盤,內(nèi)存的數(shù)據(jù)讀寫速度要高出幾個數(shù)量級,將數(shù)據(jù)保存在內(nèi)存中相比從磁盤上訪問能夠極大地提高應(yīng)用的性能。同時,內(nèi)存數(shù)據(jù)庫拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,基于全部數(shù)據(jù)都在內(nèi)存中重新設(shè)計了體系結(jié)構(gòu),并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進行了相應(yīng)的改進,所以數(shù)據(jù)處理速度比磁盤數(shù)據(jù)庫的數(shù)據(jù)處理速度要快很多。
[0008]但是,在實際應(yīng)用當中,若單獨使用分布式緩存,將大數(shù)據(jù)以鍵值對的形式存入緩存服務(wù)器中,將產(chǎn)生相同數(shù)目的緩存標識(緩存ID)。當查詢數(shù)據(jù)時,需要根據(jù)過濾信息遍歷所有的緩存ID,一方面,由于受到緩存系統(tǒng)key長度的限制,緩存ID中無法包括所有的過濾相關(guān)信息,另一方面,依次遍歷大量的緩存ID效率也比較低。
[0009]另外,若單獨使用內(nèi)存數(shù)據(jù)庫,將大量數(shù)據(jù)加載到內(nèi)存中,顯然會受到內(nèi)存容量的限制。

【發(fā)明內(nèi)容】

[0010]為了解決現(xiàn)有技術(shù)中的大數(shù)據(jù)量查詢性能低下,或需要占用大量的內(nèi)存資源的問題,本發(fā)明的目的在于提供一種提高大數(shù)據(jù)量查詢性能的方法及系統(tǒng)。
[0011]為了達到本發(fā)明的目的,本發(fā)明采用以下技術(shù)方案實現(xiàn):
[0012]一種提高大數(shù)據(jù)量查詢性能的方法,包括:
[0013]A、將磁盤數(shù)據(jù)庫中的數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式加載到分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中;
[0014]B、獲取客戶端發(fā)送的查詢請求時,依據(jù)該查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合;
[0015]C、依據(jù)所述緩存ID集合從相應(yīng)的分布式緩存中獲取實體數(shù)據(jù)并返回客戶端。
[0016]優(yōu)選地,在所述步驟A中,所述關(guān)鍵信息是指客戶端發(fā)送的查詢請求中與查詢條件相關(guān)的字段信息,其中,所述查詢條件包括過濾條件、排序條件、分頁條件。
[0017]優(yōu)選地,在所述步驟A中,在執(zhí)行將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中時,還執(zhí)行:
[0018]將磁盤數(shù)據(jù)庫中的用戶權(quán)限與過濾條件也分別加載到內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表與過濾條件表中。
[0019]優(yōu)選地,在所述步驟B中,依據(jù)查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合的步驟為:
[0020]依據(jù)所述查詢請求的查詢條件構(gòu)造SQL語句,對內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表、過濾條件表以及緩存ID表進行關(guān)聯(lián)查詢;
[0021]利用內(nèi)存數(shù)據(jù)庫訪問接口執(zhí)行SQL語句,返回滿足查詢條件的緩存ID集合。
[0022]優(yōu)選地,在執(zhí)行所述步驟A之后,還包括:
[0023]Al、周期地調(diào)用磁盤數(shù)據(jù)庫的存儲進程獲取磁盤數(shù)據(jù)庫的更新數(shù)據(jù),并將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中。
[0024]優(yōu)選地,在所述步驟Al中,所述更新包括數(shù)據(jù)的新增、修改以及刪除,將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中的方法為:
[0025]對于新增數(shù)據(jù),將新增數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式存入分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)的關(guān)鍵信息插入緩存ID表;
[0026]對于修改數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù),將所述修改數(shù)據(jù)替換分布式緩存中的原有緩存數(shù)據(jù),同時更新緩存ID表;
[0027]對于刪除數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù)刪除分布式緩存中的原有緩存數(shù)據(jù),同時刪除緩存ID表中的記錄。
[0028]一種提高大數(shù)據(jù)量查詢性能的系統(tǒng),包括:
[0029]數(shù)據(jù)庫服務(wù)器,用于維護磁盤數(shù)據(jù)庫;
[0030]應(yīng)用服務(wù)器,用于將磁盤數(shù)據(jù)庫中的數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式加載到分布式緩存服務(wù)器中,同時將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中;以及進一步用于在獲取客戶端發(fā)送查詢請求時,依據(jù)該查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合,并依據(jù)所述緩存ID集合從相應(yīng)的分布式緩存服務(wù)器中獲取實體數(shù)據(jù)并返回客戶端;
[0031]至少一個分布式緩存服務(wù)器,用于緩存應(yīng)用服務(wù)器加載的實體數(shù)據(jù);以及進一步用于當應(yīng)用服務(wù)器依據(jù)緩存ID集合從分布式緩存服務(wù)器取數(shù)據(jù)時,發(fā)送相應(yīng)的實體數(shù)據(jù)至應(yīng)用服務(wù)器;
[0032]客戶端,用于根據(jù)獲取的數(shù)據(jù)查詢指令向應(yīng)用服務(wù)器發(fā)送查詢請求,以及進一步用于從應(yīng)用服務(wù)器獲取其查詢到的實體數(shù)據(jù)。
[0033]優(yōu)選地,所述關(guān)鍵信息是指客戶端發(fā)送的查詢請求中與查詢條件相關(guān)的字段信息,其中,所述查詢條件包括過濾條件、排序條件、分頁條件。
[0034]優(yōu)選地,在應(yīng)用服務(wù)器執(zhí)行將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中時,還執(zhí)行:將磁盤數(shù)據(jù)庫中的用戶權(quán)限與過濾條件也分別加載到內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表與過濾條件表中。
[0035]優(yōu)選地,應(yīng)用服務(wù)器依據(jù)查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合的方法為:
[0036]依據(jù)所述查詢請求的查詢條件構(gòu)造SQL語句,對內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表、過濾條件表以及緩存ID表進行關(guān)聯(lián)查詢;
[0037]利用內(nèi)存數(shù)據(jù)庫訪問接口執(zhí)行SQL語句,返回滿足查詢條件的緩存ID集合。
[0038]優(yōu)選地,所述應(yīng)用服務(wù)器還用于周期地調(diào)用磁盤數(shù)據(jù)庫的存儲進程獲取磁盤數(shù)據(jù)庫的更新數(shù)據(jù),并將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中。
[0039]優(yōu)選地,所述更新包括數(shù)據(jù)的新增、修改以及刪除,所述應(yīng)用服務(wù)器將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中的方法為:
[0040]對于新增數(shù)據(jù),將新增數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式存入分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)的關(guān)鍵信息插入緩存ID表;
[0041]對于修改數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù),將所述修改數(shù)據(jù)替換分布式緩存中的原有緩存數(shù)據(jù),同時更新緩存ID表;
[0042]對于刪除數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù)刪除分布式緩存中的原有緩存數(shù)據(jù),同時刪除緩存ID表中的記錄。
[0043]通過上述本發(fā)明的技術(shù)方案可以看出,本發(fā)明具有以下有益效果:
[0044]1、在應(yīng)用服務(wù)器的內(nèi)存中緩存數(shù)據(jù),不用每次在接收到客戶端發(fā)送的查詢請求時都訪問磁盤數(shù)據(jù)庫,有效地減小了磁盤數(shù)據(jù)庫的負載。
[0045]2、將數(shù)據(jù)加載至分布式緩存和內(nèi)存數(shù)據(jù)庫以后,查詢的處理都是在內(nèi)存中完成,相較于磁盤數(shù)據(jù)庫進行I/o操作而言,提高了處理性能。
[0046]3、采用分布式緩存和內(nèi)存數(shù)據(jù)庫相結(jié)合的緩存方法,不僅可以利用內(nèi)存數(shù)據(jù)庫索引高效地完成緩存ID過濾,而且可以從分布式緩存高效地獲取對應(yīng)緩存ID的詳細數(shù)據(jù),提高了查詢大數(shù)據(jù)量時的查詢性能。
【專利附圖】

【附圖說明】
[0047]圖1為本發(fā)明實施例提供的一種提高大數(shù)據(jù)量查詢性能的方法流程示意圖;
[0048]圖2為本發(fā)明實施例提供的一種提高大數(shù)據(jù)量查詢性能的系統(tǒng)結(jié)構(gòu)示意圖;
[0049]圖3為本發(fā)明實施例提供的一種提高大數(shù)據(jù)量查詢性能的系統(tǒng)的具體工作流程示意圖。
[0050]本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)異效果,下面將結(jié)合具體實施例以及附圖做進一步的說明?!揪唧w實施方式】
[0051]下面結(jié)合附圖和具體實施例對本發(fā)明所述技術(shù)方案作進一步的詳細描述,以使本領(lǐng)域的技術(shù)人員可以更好的理解本發(fā)明并能予以實施,但所舉實施例不作為對本發(fā)明的限定。
[0052]基于現(xiàn)有技術(shù)存在的問題,本發(fā)明的發(fā)明人考慮將分布式緩存以及內(nèi)存數(shù)據(jù)庫這兩種技術(shù)相結(jié)合,在內(nèi)存數(shù)據(jù)庫中建立緩存ID表,存儲緩存ID和少量關(guān)鍵數(shù)據(jù)(與過濾、排序以及分頁這些查詢條件相關(guān)的字段),并根據(jù)需要建立索引,將大量詳細信息存于分布式緩存中。查詢數(shù)據(jù)時,首先利用結(jié)構(gòu)化查詢(SQL)語句在內(nèi)存數(shù)據(jù)庫中過濾出所需的緩存ID集合,再根據(jù)緩存ID從分布式緩存中獲取詳細數(shù)據(jù)信息。這不僅解決了分布式緩存中過濾緩存ID的效率難題,而且避免了內(nèi)存數(shù)據(jù)庫中存入大量數(shù)據(jù)的問題。
[0053]如圖1所示,本發(fā)明實施例提供的一種提高大數(shù)據(jù)量查詢性能的方法,包括如下步驟:
[0054]S10、將磁盤數(shù)據(jù)庫中的數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式加載到分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中;在該步驟中,優(yōu)選地,所述關(guān)鍵信息是指客戶端發(fā)送的查詢請求中與查詢條件相關(guān)的字段信息,其中,所述查詢條件包括過濾條件、排序條件、分頁條件;
[0055]S20、獲取客戶端發(fā)送的查詢請求時,依據(jù)該查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合;
[0056]S30、依據(jù)所述緩存ID集合從相應(yīng)的分布式緩存中獲取實體數(shù)據(jù)并返回客戶端。
[0057]本實施例中,在所述步驟SlO中,在執(zhí)行將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中時,還執(zhí)行:
[0058]將磁盤數(shù)據(jù)庫中的用戶權(quán)限與過濾條件也分別加載到內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表與過濾條件表中。
[0059]在具體實施時,在執(zhí)行將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中之前,還應(yīng)當包括如下步驟:
[0060]創(chuàng)建緩存ID表,并針對緩存ID和與查詢條件相關(guān)的字段信息建立索引。
[0061]本實施例中,在所述步驟S20中,依據(jù)查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合的步驟為:
[0062]S201、依據(jù)所述查詢請求的查詢條件構(gòu)造SQL語句,對內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表、過濾條件表以及緩存ID表進行關(guān)聯(lián)查詢;
[0063]S202、利用內(nèi)存數(shù)據(jù)訪問接口執(zhí)行SQL語句,返回滿足查詢條件的緩存ID集合。
[0064]優(yōu)選地,在執(zhí)行所述步驟SlO之后,還包括:
[0065]S11、周期地調(diào)用磁盤數(shù)據(jù)庫的存儲進程獲取磁盤數(shù)據(jù)庫的更新數(shù)據(jù),并將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中。
[0066]具體地,在所述步驟Sll中,所述更新包括數(shù)據(jù)的新增、修改以及刪除,將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中的方法為:
[0067]I)對于新增數(shù)據(jù),將新增數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式存入分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)的關(guān)鍵信息插入緩存ID表;[0068]2)對于修改數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù),將所述修改數(shù)據(jù)替換分布式緩存中的原有緩存數(shù)據(jù),同時更新緩存ID表;
[0069]3)對于刪除數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù)刪除分布式緩存中的原有緩存數(shù)據(jù),同時刪除緩存ID表中的記錄。
[0070]例如,與本發(fā)明實施例提出的提高大數(shù)據(jù)量查詢性能的方法相對應(yīng)的系統(tǒng),其在實施過程中包括如下步驟:
[0071]步驟一,應(yīng)用服務(wù)器啟動加載。
[0072]應(yīng)用服務(wù)器將磁盤數(shù)據(jù)庫中的數(shù)據(jù)以鍵值對的形式加載到分布式緩存中,其中,鍵是唯一的緩存標識(緩存ID),值是對應(yīng)的詳細的實體數(shù)據(jù),同時將緩存ID和實體數(shù)據(jù)中的關(guān)鍵信息數(shù)據(jù)存入內(nèi)存數(shù)據(jù)庫的緩存ID表中。實體數(shù)據(jù)中的關(guān)鍵信息數(shù)據(jù)是指與查詢請求中查詢條件相關(guān)的字段信息。
[0073]在該步驟中,應(yīng)用服務(wù)器在啟動加載時,還將磁盤數(shù)據(jù)庫中的用戶權(quán)限和過濾條件也分別加載到內(nèi)存數(shù)據(jù)庫的用戶權(quán)限表和過濾條件表中。
[0074]步驟二,應(yīng)用服務(wù)器執(zhí)行與磁盤數(shù)據(jù)庫的數(shù)據(jù)同步。
[0075]應(yīng)用服務(wù)器啟動線程定時將磁盤數(shù)據(jù)庫中的數(shù)據(jù)同步到分布式緩存中,同時更新緩存ID表,保證分布式緩存數(shù)據(jù)與磁盤數(shù)據(jù)庫數(shù)據(jù)的一致性。
[0076]其中數(shù)據(jù)同步包括新增數(shù)據(jù)加載、修改數(shù)據(jù)更新和刪除數(shù)據(jù)清除操作。
[0077]步驟三,利用內(nèi)存數(shù)據(jù)庫過濾緩存ID。
[0078]應(yīng)用服務(wù)器在收到查詢請求時,首先構(gòu)造SQL語句,對用戶權(quán)限表、過濾條件表和緩存ID表進行關(guān)聯(lián)查詢,選出符合查詢條件的緩存ID集合。
[0079]步驟四,從分布式緩存中獲取詳細數(shù)據(jù)返回。
[0080]應(yīng)用服務(wù)器根據(jù)第三步獲取的緩存ID集合,從分布式緩存中取出對應(yīng)的結(jié)果詳細數(shù)據(jù),并返回客戶端。
[0081]如2所示,本發(fā)明實施例提供的一種提高大數(shù)據(jù)量查詢性能的系統(tǒng),包括:
[0082]數(shù)據(jù)庫服務(wù)器200,用于維護磁盤數(shù)據(jù)庫;
[0083]應(yīng)用服務(wù)器100,用于將磁盤數(shù)據(jù)庫中的數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式加載到分布式緩存服務(wù)器300中,同時將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中;以及進一步用于在獲取客戶端400發(fā)送查詢請求時,依據(jù)該查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合,并依據(jù)所述緩存ID集合從相應(yīng)的分布式緩存服務(wù)器300中獲取實體數(shù)據(jù)并返回客戶端400 ;其中,所述關(guān)鍵信息是指客戶端400發(fā)送的查詢請求中與查詢條件相關(guān)的字段信息,例如,所述查詢條件包括過濾條件、排序條件、分頁條件;
[0084]至少一個分布式緩存服務(wù)器300,用于緩存應(yīng)用服務(wù)器100加載的實體數(shù)據(jù);以及進一步用于當應(yīng)用服務(wù)器100依據(jù)緩存ID集合從分布式緩存服務(wù)器300取數(shù)據(jù)時,發(fā)送相應(yīng)的實體數(shù)據(jù)至應(yīng)用服務(wù)器100 ;
[0085]客戶端400,用于根據(jù)獲取的數(shù)據(jù)查詢指令向應(yīng)用服務(wù)器100發(fā)送查詢請求,以及進一步用于從應(yīng)用服務(wù)器100獲取其查詢到的實體數(shù)據(jù)。
[0086]具體地,本實施例中,在應(yīng)用服務(wù)器100執(zhí)行將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中時,還執(zhí)行:將磁盤數(shù)據(jù)庫中的用戶權(quán)限與過濾條件也分別加載到內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表與過濾條件表中。
[0087]本實施例中,應(yīng)用服務(wù)器100依據(jù)查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合的方法為:
[0088]依據(jù)所述查詢請求的查詢條件構(gòu)造SQL語句,對內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表、過濾條件表以及緩存ID表進行關(guān)聯(lián)查詢;
[0089]3)利用內(nèi)存數(shù)據(jù)庫訪問接口執(zhí)行SQL語句,返回滿足查詢條件的緩存ID集合。
[0090]本實施例中,所述應(yīng)用服務(wù)器100還用于周期地調(diào)用磁盤數(shù)據(jù)庫的存儲進程獲取磁盤數(shù)據(jù)庫的更新數(shù)據(jù),并將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中,以保證分布式緩存服務(wù)器中的數(shù)據(jù)與磁盤數(shù)據(jù)庫中的數(shù)據(jù)的一致性。
[0091]優(yōu)選地,所述更新包括數(shù)據(jù)的新增、修改以及刪除,所述應(yīng)用服務(wù)器將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中的方法為:
[0092]對于新增數(shù)據(jù),將新增數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式存入分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)的關(guān)鍵信息插入緩存ID表;
[0093]對于修改數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù),將所述修改數(shù)據(jù)替換分布式緩存中的原有緩存數(shù)據(jù),同時更新緩存ID表;
[0094]對于刪除數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù)刪除分布式緩存中的原有緩存數(shù)據(jù),同時刪除緩存ID表中的記錄。
[0095]例如,參考圖3,本發(fā)明實施例提供的提高大數(shù)據(jù)量查詢性能的系統(tǒng),其在具體實施時,包括如下具體實施步驟:
[0096]I)應(yīng)用服務(wù)器啟動時,首先執(zhí)行分布式緩存服務(wù)器的初始化,建立與分布式緩存服務(wù)器的連接。
[0097]再通過調(diào)用磁盤數(shù)據(jù)庫存儲進程將磁盤數(shù)據(jù)庫所有數(shù)據(jù)(可以分批或增量加載)以對象的形式加載到應(yīng)用服務(wù)器的內(nèi)存中,其中,每個對象對應(yīng)一個唯一的緩存標識(即緩存 ID)。
[0098]然后調(diào)用分布式緩存客戶端接口函數(shù),將數(shù)據(jù)以〈緩存ID,數(shù)據(jù)對象 > 鍵值對的形式存入分布式緩存服務(wù)器中,此時數(shù)據(jù)對象需要實現(xiàn)序列化接口。
[0099]以及,初始化內(nèi)存數(shù)據(jù)庫,構(gòu)造SQL語句,在內(nèi)存中創(chuàng)建一個緩存ID表,其字段包括緩存ID (主關(guān)鍵字)以及用于過濾和排序的信息,如類型、級別或時間等,并調(diào)用內(nèi)存數(shù)據(jù)庫訪問接口執(zhí)行。
[0100]之后,構(gòu)造SQL語句,將緩存ID和從磁盤數(shù)據(jù)庫中獲取的數(shù)據(jù)中對應(yīng)的信息批量存入緩存ID表。為了提高查詢效率,應(yīng)用服務(wù)器啟動加載時,將磁盤數(shù)據(jù)庫中的用戶權(quán)限和過濾條件信息也分別加載到內(nèi)存數(shù)據(jù)庫的相應(yīng)表中,這些表為用戶權(quán)限表和過濾條件表。
[0101]2)完成應(yīng)用服務(wù)器的啟動加載后,應(yīng)用服務(wù)器開啟數(shù)據(jù)同步線程,定時同步磁盤數(shù)據(jù)庫與內(nèi)存及緩存(其包括內(nèi)存數(shù)據(jù)庫和分布式緩存服務(wù)器)中的數(shù)據(jù)。
[0102]例如,具體實施時,可以每隔一段時間(如3秒)調(diào)用磁盤數(shù)據(jù)庫的存儲進程獲取全部(或增量)改變的數(shù)據(jù)(包括新增、修改和刪除)。
[0103]對于新增數(shù)據(jù),新增數(shù)據(jù)以〈鍵,值 > 對的形式存入分布式緩存中,同時將對應(yīng)信息插入緩存ID表;[0104]對于修改數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù),替換原有緩存數(shù)據(jù),同時更新緩存ID表;
[0105]對于刪除數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù),刪除緩存,同時刪除緩存ID表中的記錄。
[0106]當磁盤數(shù)據(jù)庫中的數(shù)據(jù)不會發(fā)生變化時,不需要進行數(shù)據(jù)同步,則可以省略該步驟。
[0107]經(jīng)過以上兩步,我們可以認為內(nèi)存緩存中的數(shù)據(jù)與磁盤數(shù)據(jù)庫中的數(shù)據(jù)是一致的。
[0108]3)當應(yīng)用服務(wù)器收到查詢請求時,首先根據(jù)查詢條件構(gòu)造SQL語句,對用戶權(quán)限表、過濾條件表和緩存ID表進行關(guān)聯(lián)查詢,再利用內(nèi)存數(shù)據(jù)庫訪問接口執(zhí)行SQL語句,返回滿足查詢條件的緩存ID集合。
[0109]4)最后,應(yīng)用服務(wù)器根據(jù)獲得的緩存ID集合,調(diào)用分布式緩存客戶端接口函數(shù),從分布式緩存中批量獲取對應(yīng)緩存ID集合的結(jié)果詳細數(shù)據(jù)集合,返回客戶端,一次查詢結(jié)束。
[0110]以上所述僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的【技術(shù)領(lǐng)域】,均同理包括在本發(fā)明的專利保護范圍內(nèi)。
【權(quán)利要求】
1.一種提高大數(shù)據(jù)量查詢性能的方法,其特征在于,包括: A、將磁盤數(shù)據(jù)庫中的數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式加載到分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中; B、獲取客戶端發(fā)送的查詢請求時,依據(jù)該查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合; C、依據(jù)所述緩存ID集合從相應(yīng)的分布式緩存中獲取實體數(shù)據(jù)并返回客戶端。
2.如權(quán)利要求1所述的提高大數(shù)據(jù)量查詢性能的方法,其特征在于,在所述步驟A中,所述關(guān)鍵信息是指客戶端發(fā)送的查詢請求中與查詢條件相關(guān)的字段信息,其中,所述查詢條件包括過濾條件、排序條件、分頁條件。
3.如權(quán)利要求1或2所述的提高大數(shù)據(jù)量查詢性能的方法,其特征在于,在所述步驟A中,在執(zhí)行將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中時,還執(zhí)行: 將磁盤數(shù)據(jù)庫中的用戶權(quán)限與過濾條件也分別加載到內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表與過濾條件表中。
4.如權(quán)利要求3所述的提高大數(shù)據(jù)量查詢性能的方法,其特征在于,在所述步驟B中,依據(jù)查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合的步驟為: 依據(jù)所述查詢請求的查詢條件構(gòu)造SQL語句,對內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表、過濾條件表以及緩存ID表進行關(guān)聯(lián)查詢; 利用內(nèi)存數(shù)據(jù)庫訪問 接口執(zhí)行SQL語句,返回滿足查詢條件的緩存ID集合。
5.如權(quán)利要求1所述的提高大數(shù)據(jù)量查詢性能的方法,其特征在于,在執(zhí)行所述步驟A之后,還包括: Al、周期地調(diào)用磁盤數(shù)據(jù)庫的存儲進程獲取磁盤數(shù)據(jù)庫的更新數(shù)據(jù),并將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中。
6.如權(quán)利要求5所述的提高大數(shù)據(jù)量查詢性能的方法,其特征在于,所述更新包括數(shù)據(jù)的新增、修改以及刪除,將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中的方法為: 對于新增數(shù)據(jù),將新增數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式存入分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)的關(guān)鍵信息插入緩存ID表; 對于修改數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù),將所述修改數(shù)據(jù)替換分布式緩存中的原有緩存數(shù)據(jù),同時更新緩存ID表; 對于刪除數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù)刪除分布式緩存中的原有緩存數(shù)據(jù),同時刪除緩存ID表中的記錄。
7.一種提高大數(shù)據(jù)量查詢性能的系統(tǒng),其特征在于,包括: 數(shù)據(jù)庫服務(wù)器,用于維護磁盤數(shù)據(jù)庫; 應(yīng)用服務(wù)器,用于將磁盤數(shù)據(jù)庫中的數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式加載到分布式緩存服務(wù)器中,同時將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中;以及進一步用于在獲取客戶端發(fā)送查詢請求時,依據(jù)該查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合,并依據(jù)所述緩存ID集合從相應(yīng)的分布式緩存服務(wù)器中獲取實體數(shù)據(jù)并返回客戶端;至少一個分布式緩存服務(wù)器,用于緩存應(yīng)用服務(wù)器加載的實體數(shù)據(jù);以及進一步用于當應(yīng)用服務(wù)器依據(jù)緩存ID集合從分布式緩存服務(wù)器取數(shù)據(jù)時,發(fā)送相應(yīng)的實體數(shù)據(jù)至應(yīng)用服務(wù)器; 客戶端,用于根據(jù)獲取的數(shù)據(jù)查詢指令向應(yīng)用服務(wù)器發(fā)送查詢請求,以及進一步用于從應(yīng)用服務(wù)器獲取其查詢到的實體數(shù)據(jù)。
8.如權(quán)利要求7所述的提高大數(shù)據(jù)量查詢性能的系統(tǒng),其特征在于,所述關(guān)鍵信息是指客戶端發(fā)送的查詢請求中與查詢條件相關(guān)的字段信息,其中,所述查詢條件包括過濾條件、排序條件、分頁條件。
9.如權(quán)利要求7或8所述的提高大數(shù)據(jù)量查詢性能的系統(tǒng),其特征在于,在應(yīng)用服務(wù)器執(zhí)行將所述緩存ID以及實體數(shù)據(jù)中的關(guān)鍵信息存入內(nèi)存數(shù)據(jù)庫中的緩存ID表中時,還執(zhí)行:將磁盤數(shù)據(jù)庫中的用戶權(quán)限與過濾條件也分別加載到內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表與過濾條件表中。
10.如權(quán)利要求9所述的提高大數(shù)據(jù)量查詢性能的系統(tǒng),其特征在于,應(yīng)用服務(wù)器依據(jù)查詢請求查詢緩存ID表,選出符合查詢條件的緩存ID集合的方法為: 依據(jù)所述查詢請求的查詢條件構(gòu)造SQL語句,對內(nèi)存數(shù)據(jù)庫中的用戶權(quán)限表、過濾條件表以及緩存ID表進行關(guān)聯(lián)查詢; 利用內(nèi)存數(shù)據(jù)庫訪問接口執(zhí)行SQL語句,返回滿足查詢條件的緩存ID集合。
11.如權(quán)利要求7所述的提高大數(shù)據(jù)量查詢性能的系統(tǒng),其特征在于,所述應(yīng)用服務(wù)器還用于周期地調(diào)用磁盤數(shù)據(jù)庫的存儲進程獲取磁盤數(shù)據(jù)庫的更新數(shù)據(jù),并將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中。
12.如權(quán)利要求7·所述的提高大數(shù)據(jù)量查詢性能的系統(tǒng),其特征在于,所述更新包括數(shù)據(jù)的新增、修改以及刪除,所述應(yīng)用服務(wù)器將這些更新數(shù)據(jù)更新至分布式緩存以及內(nèi)存數(shù)據(jù)庫中的方法為: 對于新增數(shù)據(jù),將新增數(shù)據(jù)以緩存ID-實體數(shù)據(jù)的鍵值對形式存入分布式緩存中,同時將所述緩存ID以及實體數(shù)據(jù)的關(guān)鍵信息插入緩存ID表; 對于修改數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù),將所述修改數(shù)據(jù)替換分布式緩存中的原有緩存數(shù)據(jù),同時更新緩存ID表; 對于刪除數(shù)據(jù),調(diào)用分布式緩存客戶端接口函數(shù)刪除分布式緩存中的原有緩存數(shù)據(jù),同時刪除緩存ID表中的記錄。
【文檔編號】G06F12/08GK103853727SQ201210499321
【公開日】2014年6月11日 申請日期:2012年11月29日 優(yōu)先權(quán)日:2012年11月29日
【發(fā)明者】姬迎東, 楊志彪 申請人:深圳中興力維技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1