国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種列訪問感知的數(shù)據(jù)緩存方法及系統(tǒng)的制作方法

      文檔序號:6525132閱讀:469來源:國知局
      一種列訪問感知的數(shù)據(jù)緩存方法及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開了一種列訪問感知的數(shù)據(jù)緩存方法及系統(tǒng),所述方法包括用于非事務(wù)型查詢操作的步驟、用于事務(wù)型增加、修改或刪除操作的步驟和用于緩存監(jiān)聽的步驟;用于非事務(wù)型查詢操作,判斷是否命中緩存,如果是,就在數(shù)據(jù)緩存系統(tǒng)中查詢數(shù)據(jù)同時修正列訪問頻數(shù)的步驟,如果否,就在關(guān)系數(shù)據(jù)庫中查詢數(shù)據(jù)同時修正列訪問頻數(shù)的步驟;用于事務(wù)型增加、修改或刪除操作,將變化數(shù)據(jù)實時同步到緩存的步驟;用于緩存監(jiān)聽的步驟,用于修正列訪問頻數(shù)的步驟,用于修正緩存數(shù)據(jù)的步驟。本發(fā)明具有低響應(yīng)時間、高緩存命中率以及高吞吐量等特性,通過列訪問頻率動態(tài)修正緩存數(shù)據(jù)內(nèi)容。
      【專利說明】一種列訪問感知的數(shù)據(jù)緩存方法及系統(tǒng)
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及一種數(shù)據(jù)緩存系統(tǒng)及方法,尤其涉及一種列訪問感知的數(shù)據(jù)緩存方法及系統(tǒng)。
      【背景技術(shù)】
      [0002]傳統(tǒng)關(guān)系數(shù)據(jù)庫是目前Web應(yīng)用中存取數(shù)據(jù)的主要形式。然而,隨著Web2.0、大數(shù)據(jù)、云應(yīng)用等技術(shù)的發(fā)展,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在高并發(fā)讀寫方面遇到了瓶頸,無法滿足海量數(shù)據(jù)的高效率存儲和訪問需求。在這個背景下,無模式數(shù)據(jù)庫應(yīng)運而生。無模式數(shù)據(jù)庫,作為一種模式自由的數(shù)據(jù)庫,其模式主要有關(guān)系、樹、圖、文檔等多種方式,主要用于解決大數(shù)據(jù)的管理、處理和分析等問題。然而,由于數(shù)據(jù)庫模式和編程接口的差異,無模式數(shù)據(jù)庫短時間不可能完全取代關(guān)系數(shù)據(jù)庫。因此,以關(guān)系數(shù)據(jù)庫為主,無模式數(shù)據(jù)庫為輔,成了工業(yè)界和產(chǎn)業(yè)界普遍接受的方案。由于無模式數(shù)據(jù)庫具有高性能、易擴展特性,因此與關(guān)系數(shù)據(jù)庫進行結(jié)合,存儲海量數(shù)據(jù)。無模式數(shù)據(jù)庫特點決定其同樣適用于緩存數(shù)據(jù)。無模式數(shù)據(jù)庫作為關(guān)系數(shù)據(jù)庫的緩存是一種解決關(guān)系數(shù)據(jù)庫讀取瓶頸問題的解決方案。然而,現(xiàn)有技術(shù)中無模式數(shù)據(jù)緩存缺乏保證緩存高命中率的有效方法,無法保證頻繁訪問的數(shù)據(jù)均命中數(shù)據(jù)緩存。
      [0003]為了提高數(shù)據(jù)的讀取能力,現(xiàn)有技術(shù)存在四類數(shù)據(jù)緩存方法:
      [0004](I)數(shù)據(jù)庫查詢緩存。該方法用內(nèi)存、閃存等快速訪問存儲器緩存查詢結(jié)果,降低數(shù)據(jù)庫負載。當(dāng)再次進行同一查詢時,直接從緩存中取出數(shù)據(jù)。例如,集成Memcached的MySQL數(shù)據(jù)庫產(chǎn)品;
      [0005](2)應(yīng)用級數(shù)據(jù)存儲。應(yīng)用程序直接緩存特定類方法或函數(shù)的返回值。在一定時間間隔內(nèi),當(dāng)再次執(zhí)行同一方法或函數(shù)時,只要參數(shù)相同,直接從緩存中取出數(shù)據(jù)。EHCache是實現(xiàn)該方法的一種Java EE緩存框架;
      [0006](3)內(nèi)存數(shù)據(jù)庫。該方法拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,直接將數(shù)據(jù)存儲在內(nèi)存中,并且在數(shù)據(jù)緩存、快速算法和并行操作方面也進行了相應(yīng)的改進。相對于快速訪問存儲控制器,內(nèi)存的數(shù)據(jù)讀寫速度要高出幾個數(shù)量級,極大地提高應(yīng)用的性能;
      [0007](4)無模式數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫集成方案。該方案對現(xiàn)有的關(guān)系數(shù)據(jù)庫存儲引擎進行改造,引入無模式鍵值序?qū)彺鏀?shù)據(jù)及索引,從而提升讀取性能。
      [0008]上述方法在適應(yīng)范圍上都存在不同方面的缺陷:方法(I)與方法(2)存在緩存與實際數(shù)據(jù)的一致性問題。該類方法需要修改原有應(yīng)用程序。另外,如何保證較高的緩存命中率,如何對過期數(shù)據(jù)及時清理是該類方法的最大挑戰(zhàn)。方法(2)中的緩存結(jié)構(gòu)一旦崩潰,在短時間內(nèi)會造成數(shù)據(jù)庫負載過高而宕機。方法(3)在存儲量上存在瓶頸,不適合大數(shù)據(jù)的存取訪問。方法(4)需要對數(shù)據(jù)庫存儲引擎進行修改,修改方法與具體數(shù)據(jù)庫相關(guān),不具備普適性。數(shù)據(jù)緩存的關(guān)鍵問題是如何提高緩存命中率,如果保證訪問頻繁的數(shù)據(jù)均命中緩存。
      【發(fā)明內(nèi)容】

      [0009]本發(fā)明的目的就是提高緩存命中率,通過一系列方法保證頻繁訪問的數(shù)據(jù)均命中緩存,提供一種列訪問感知的數(shù)據(jù)緩存方法及系統(tǒng),基于列訪問頻率修正緩存數(shù)據(jù),大數(shù)據(jù)下查詢時,本系統(tǒng)具有低響應(yīng)時間、高緩存命中率以及高吞吐量等特性,通過列訪問頻率動態(tài)修正緩存數(shù)據(jù)內(nèi)容。
      [0010]為實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
      [0011 ] 一種列訪問感知的數(shù)據(jù)緩存方法,步驟為:
      [0012]用于非事務(wù)型查詢操作的步驟、用于事務(wù)型增加、修改或刪除操作的步驟和用于緩存監(jiān)聽的步驟;
      [0013](I)如果是非事務(wù)型查詢操作,判斷是否命中緩存:
      [0014](1.1)如果命中緩存,就在數(shù)據(jù)緩存中查詢數(shù)據(jù)同時使用頻數(shù)計數(shù)器中修正列訪問頻數(shù),
      [0015](1.2)如果未命中緩存,就在關(guān)系數(shù)據(jù)庫中查詢數(shù)據(jù)同時使用頻數(shù)計數(shù)器中修正列訪問頻數(shù);
      [0016](2)如果是事務(wù)型增加、修改或刪除操作,將關(guān)系數(shù)據(jù)庫的變化數(shù)據(jù)實時同步到數(shù)據(jù)緩存系統(tǒng);
      [0017](3)如果是緩存監(jiān)聽,先使用頻數(shù)計數(shù)器中修正列訪問頻數(shù),再使用緩存監(jiān)聽器修正緩存數(shù)據(jù)。
      [0018]所述事務(wù)型增加、修改或刪除操作的具體步驟如下:
      [0019]步驟111:應(yīng)用程序連接關(guān)系數(shù)據(jù)庫,增加、修改或刪除數(shù)據(jù);
      [0020]步驟112:基于日志的變化數(shù)據(jù)捕獲器監(jiān)聽到變化前后的數(shù)據(jù);
      [0021]步驟113:從變化數(shù)據(jù)中選擇一列;
      [0022]步驟114:判斷步驟113的變化數(shù)據(jù)中的數(shù)據(jù)列是否存在于數(shù)據(jù)緩存,若變化數(shù)據(jù)存在于數(shù)據(jù)緩存中,轉(zhuǎn)步驟115 ;若變化數(shù)據(jù)不存在于數(shù)據(jù)緩存中,轉(zhuǎn)步驟116 ;
      [0023]步驟115:修改數(shù)據(jù)緩存中數(shù)據(jù),達到數(shù)據(jù)緩存與實際數(shù)據(jù)一致;
      [0024]步驟116:判斷變化數(shù)據(jù)是否還有下一列;若存在,轉(zhuǎn)步驟113,否則轉(zhuǎn)步驟117 ;
      [0025]步驟117:結(jié)束。
      [0026]所述非事務(wù)型查詢操作的具體步驟如下:
      [0027]步驟121:判斷查詢是否命中數(shù)據(jù)緩存;若數(shù)據(jù)命中緩存,則在數(shù)據(jù)緩存系統(tǒng)中查詢數(shù)據(jù),轉(zhuǎn)步驟122,否則在關(guān)系數(shù)據(jù)庫中查詢數(shù)據(jù),轉(zhuǎn)步驟123 ;
      [0028]步驟122:增大該列的列訪問頻數(shù),并計算新的列訪問頻率,轉(zhuǎn)步驟126 ;
      [0029]步驟123:增大該列的列訪問頻數(shù),并計算新的列訪問頻率,轉(zhuǎn)步驟124 ;
      [0030]步驟124:根據(jù)變化后列訪問頻率與變化前列訪問頻率差的絕對值,判斷是否需要將數(shù)據(jù)移入到數(shù)據(jù)緩存系統(tǒng);若需要移入到數(shù)據(jù)緩存系統(tǒng),轉(zhuǎn)步驟125 ;否則轉(zhuǎn)步驟126 ;
      [0031]步驟125:將數(shù)據(jù)列移入到數(shù)據(jù)緩存系統(tǒng),轉(zhuǎn)步驟126 ;
      [0032]步驟126:結(jié)束。
      [0033]所述緩存監(jiān)聽的步驟如下:
      [0034]步驟131:判斷最近一次列訪問頻率與平均列訪問頻率大小;若最近一次列訪問頻率大于平均列訪問頻率,說明該數(shù)據(jù)列仍然是訪問頻繁列,不做任何處理,轉(zhuǎn)步驟135 ;若最近一次列訪問頻率小于等于平均列訪問頻率,說明該數(shù)據(jù)列最近一段時間內(nèi)訪問頻繁程度降低,轉(zhuǎn)步驟132;
      [0035]步驟132:減小該列的列訪問頻數(shù);
      [0036]步驟133:判斷平均列訪問頻率與最近一次列訪問頻率的差的絕對值是否大于設(shè)定閾值;若滿足,轉(zhuǎn)步驟134:否則轉(zhuǎn)步驟135 ;
      [0037]步驟134:在數(shù)據(jù)緩存中移除該列。
      [0038]步驟135:結(jié)束。
      [0039]一種列訪問感知的數(shù)據(jù)緩存系統(tǒng),包括:
      [0040]用于非事務(wù)型查詢操作的訪問判別器、用于事務(wù)型增加、修改或刪除操作的基于日志的變化數(shù)據(jù)捕獲器、緩存監(jiān)聽器、數(shù)據(jù)緩存、頻數(shù)計數(shù)器和關(guān)系數(shù)據(jù)庫;
      [0041]所述訪問判別器用于判斷是否命中緩存;
      [0042]如果命中緩存,就從所述數(shù)據(jù)緩存系統(tǒng)中查詢數(shù)據(jù)同時使用頻數(shù)計數(shù)器修正數(shù)據(jù)緩存內(nèi)列訪問頻數(shù),
      [0043]如果未命中緩存,就從所述關(guān)系數(shù)據(jù)庫中查詢數(shù)據(jù)的關(guān)系數(shù)據(jù)庫同時使用頻數(shù)計數(shù)器修正數(shù)據(jù)緩存內(nèi)的列訪問頻數(shù);
      [0044]所述基于日志的變化數(shù)據(jù)捕獲器用于將關(guān)系數(shù)據(jù)庫變化的數(shù)據(jù)實時同步到數(shù)據(jù)緩存;
      [0045]所述緩存監(jiān)聽器用于對數(shù)據(jù)緩存進行緩存監(jiān)聽;先在頻數(shù)計數(shù)器中修正列訪問頻數(shù),然后使用緩存監(jiān)聽器修正緩存數(shù)據(jù)。
      [0046]專業(yè)術(shù)語解釋:
      [0047]所述列訪問頻數(shù),是一種廣義的列訪問頻數(shù),該列數(shù)據(jù)每被訪問(查詢、緩存命中、緩存未命中等)一次,列訪問頻數(shù)增加特定數(shù)值,該數(shù)值為該訪問方式的權(quán)值。若該列數(shù)據(jù)長時間未被訪問,該列訪問頻數(shù)減小特定數(shù)值,該數(shù)值為該列訪問方式的權(quán)值。
      [0048]所述列命中系數(shù),用于修正列訪問頻數(shù),計算新的列訪問頻率。當(dāng)數(shù)據(jù)訪問命中緩存時,說明此列一段時間內(nèi)有訪問需求,此時新的列訪問頻數(shù)=原列訪問頻數(shù)+列命中系數(shù)。
      [0049]所述列未命中系數(shù),用于修正列訪問頻數(shù),計算新的列訪問頻率。當(dāng)數(shù)據(jù)訪問未命中緩存時,說明此列一段時間內(nèi)有訪問需求,此時新的列訪問頻數(shù)=原列訪問頻數(shù)+列未命中系數(shù)。由于緩存命中比緩存未命中更能說明該列訪問頻繁,設(shè)定列未命中系數(shù)遠小于列命中系數(shù)。
      [0050]所述列不長訪問系數(shù),用于修正列訪問頻數(shù),計算新的列訪問頻率。當(dāng)緩存監(jiān)聽器發(fā)現(xiàn)數(shù)據(jù)列長時間不被訪問時,說明此列一段時間內(nèi)無訪問需求,此時新的列訪問頻數(shù)=原列訪問頻數(shù)-列不長訪問系數(shù)。
      [0051]所述基于日志的變化數(shù)據(jù)捕獲是從數(shù)據(jù)庫二進制日志中及時獲取到變化前后的數(shù)據(jù)。
      [0052]本發(fā)明中的列訪問感知的數(shù)據(jù)緩存方法,具有六個特點:
      [0053]( I)是基于廣義列訪問頻率感知后動態(tài)修正的;
      [0054](2)設(shè)計有緩存監(jiān)聽器,將不頻繁訪問的列移除于數(shù)據(jù)緩存,及時清理過期的數(shù)據(jù)緩存;
      [0055](3)設(shè)計有訪問判別器,用于判定訪問請求的數(shù)據(jù)是否命中緩存;
      [0056](4)設(shè)計有頻數(shù)計數(shù)器,根據(jù)不同類型訪問動態(tài)修正列訪問頻數(shù);
      [0057](5)設(shè)計有基于日志的變化數(shù)據(jù)捕獲器,用于保證關(guān)系數(shù)據(jù)庫與緩存的數(shù)據(jù)一致性;
      [0058](6)設(shè)計有無模式緩存,按照數(shù)據(jù)列的方式緩存數(shù)據(jù)。
      [0059]該方式具有以下有益效果:
      [0060](I)列訪問感知的數(shù)據(jù)緩存系統(tǒng)中的數(shù)據(jù)緩存,具有低查詢時間、高吞吐量等特
      占.[0061](2)通過對列訪問頻數(shù)的動態(tài)修正,動態(tài)調(diào)整數(shù)據(jù)緩存內(nèi)容,提高了緩存的命中率;
      [0062](3)列訪問感知的數(shù)據(jù)緩存系統(tǒng)中變化數(shù)據(jù)捕獲器,可以將數(shù)據(jù)的變化同步于緩存,從而保證了數(shù)據(jù)緩存的一致性;
      [0063](4)列訪問感知的數(shù)據(jù)緩存系統(tǒng)中緩存監(jiān)聽器,及時清理緩存中的過期數(shù)據(jù);
      [0064](5)列訪問感知的數(shù)據(jù)緩存系統(tǒng)獨立于應(yīng)用程序,對應(yīng)用本身透明?,F(xiàn)有的遺留系統(tǒng)可以在不進行任何修改的情況下引入該數(shù)據(jù)緩存方案;
      [0065](6)在列訪問感知的數(shù)據(jù)緩存系統(tǒng)中緩存崩潰后,列訪問感知的數(shù)據(jù)緩存系統(tǒng)中的訪問判別器可以保證數(shù)據(jù)的正常訪問;
      [0066](7)采用列存儲型的無模式數(shù)據(jù)庫對訪問頻繁的關(guān)系數(shù)據(jù)庫列進行存儲。所述數(shù)據(jù)緩存中的數(shù)據(jù)列隨列訪問頻數(shù)與頻率動態(tài)變化,從而保證頻繁訪問的數(shù)據(jù)列命中緩存。
      【專利附圖】

      【附圖說明】
      [0067]圖1列訪問感知的數(shù)據(jù)緩存系統(tǒng)結(jié)構(gòu)圖;
      [0068]圖2列訪問感知的數(shù)據(jù)緩存方法流程圖;
      [0069]圖3事務(wù)型增加、修改或刪除操作后變化數(shù)據(jù)到數(shù)據(jù)緩存的同步過程;
      [0070]圖4非事務(wù)型查詢操作修正列訪問頻數(shù)和數(shù)據(jù)緩存流程圖;
      [0071]圖5緩存監(jiān)聽器修正列訪問頻數(shù)和數(shù)據(jù)緩存流程圖。
      【具體實施方式】
      [0072]實施本發(fā)明中的數(shù)據(jù)緩存系統(tǒng)后,應(yīng)用程序由直接訪問關(guān)系數(shù)據(jù)庫改為訪問數(shù)據(jù)緩存系統(tǒng)。
      [0073]下面結(jié)合附圖與實施例對本發(fā)明作進一步說明。
      [0074]如圖1所示,一種列訪問感知的數(shù)據(jù)緩存系統(tǒng),包括:
      [0075]訪問判別器202,分別與數(shù)據(jù)緩存、頻數(shù)計數(shù)器和關(guān)系數(shù)據(jù)庫通信,用于接收訪問請求并判定訪問請求的數(shù)據(jù)是否命中緩存;若命中緩存,則從數(shù)據(jù)緩存系統(tǒng)中查詢數(shù)據(jù);若未命中緩存,則從關(guān)系數(shù)據(jù)庫中獲取查詢數(shù)據(jù);
      [0076]頻數(shù)計數(shù)器203,分別與數(shù)據(jù)緩存系統(tǒng)、訪問判別器和關(guān)系數(shù)據(jù)庫通信,用于計算列訪問頻數(shù)和列訪問頻率;
      [0077]基于日志的變化數(shù)據(jù)捕獲器204,分別與數(shù)據(jù)緩存系統(tǒng)和關(guān)系數(shù)據(jù)庫通信,用于監(jiān)聽關(guān)系數(shù)據(jù)庫日志中的事件,捕獲關(guān)系數(shù)據(jù)庫的變化量,將其同步到目標(biāo)數(shù)據(jù)緩存系統(tǒng)中;
      [0078]數(shù)據(jù)緩存205,分別與緩存監(jiān)聽器、訪問判別器、頻數(shù)計數(shù)器和基于日志的變化數(shù)據(jù)捕獲器通信,是頻繁訪問的數(shù)據(jù)集合,采用列存儲型的無模式數(shù)據(jù)庫對訪問頻繁的關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)列進行實時動態(tài)存儲;所述數(shù)據(jù)緩存中的數(shù)據(jù)列隨列訪問頻數(shù)與頻率動態(tài)變化,從而保證頻繁訪問的數(shù)據(jù)列命中緩存;
      [0079]緩存監(jiān)聽器201,監(jiān)聽數(shù)據(jù)緩存系統(tǒng)中的數(shù)據(jù)緩存,并移除數(shù)據(jù)緩存系統(tǒng)中最近不頻繁訪問的數(shù)據(jù);
      [0080]關(guān)系數(shù)據(jù)庫206,分別與訪問判別器、頻數(shù)計數(shù)器和基于日志的變化數(shù)據(jù)捕獲器通信。
      [0081]如圖2所示,列訪問感知的數(shù)據(jù)緩存方式流程圖,給出了訪問數(shù)據(jù)緩存系統(tǒng)的流程。在此過程中修正新的列訪問頻數(shù)。一種列訪問感知的數(shù)據(jù)緩存方法,步驟為:
      [0082]啟動數(shù)據(jù)緩存系統(tǒng),應(yīng)用程序通過JDBC等方式訪問數(shù)據(jù)緩存系統(tǒng);如果是非事務(wù)型查詢操作就進入步驟102 ;如果是事務(wù)型增加、修改或刪除操作就進入步驟105 ;如果緩存監(jiān)聽器攔截到緩存變化就進入步驟107 ;
      [0083]步驟102:判斷請求數(shù)據(jù)是否命中數(shù)據(jù)緩存,如果命中數(shù)據(jù)緩存轉(zhuǎn)步驟103 ;如果未命中數(shù)據(jù)緩存就轉(zhuǎn)步驟104 ;
      [0084]步驟103:在數(shù)據(jù)緩存系統(tǒng)中查詢數(shù)據(jù),同時修正列訪問頻數(shù),轉(zhuǎn)步驟106 ;新的列訪問頻數(shù)=原列訪問頻數(shù)+列命中系數(shù);
      [0085]步驟104:在關(guān)系數(shù)據(jù)庫中查詢數(shù)據(jù),同時修正列訪問頻數(shù),轉(zhuǎn)步驟106 ;新的列訪問頻數(shù)=原列訪問頻數(shù)+列未命中系數(shù);設(shè)定列未命中系數(shù)遠小于列命中系數(shù);
      [0086]步驟105:將關(guān)系數(shù)據(jù)庫變化增量動態(tài)同步到數(shù)據(jù)緩存系統(tǒng),轉(zhuǎn)步驟106 ;
      [0087]步驟107:修正列訪問頻率,緩存監(jiān)聽器修正緩存數(shù)據(jù),轉(zhuǎn)步驟106 ;
      [0088]步驟106:結(jié)束。
      [0089]如圖3所示,變化數(shù)據(jù)到數(shù)據(jù)緩存的同步過程,給出了基于日志的變化數(shù)據(jù)捕獲器將變化數(shù)據(jù)同步到數(shù)據(jù)緩存的同步過程。所述步驟105的具體步驟如下:
      [0090]步驟111:應(yīng)用程序通過JDBC等方式連接關(guān)系數(shù)據(jù)庫,增加、修改或刪除數(shù)據(jù);
      [0091]步驟112:基于日志的變化數(shù)據(jù)捕獲器監(jiān)聽到變化前后的數(shù)據(jù);
      [0092]步驟113:從變化數(shù)據(jù)中選擇一列;
      [0093]步驟114:判斷步驟113的變化數(shù)據(jù)中的數(shù)據(jù)列是否存在于數(shù)據(jù)緩存系統(tǒng),若變化數(shù)據(jù)存在于數(shù)據(jù)緩存系統(tǒng)中,轉(zhuǎn)步驟115 ;若變化數(shù)據(jù)不存在于數(shù)據(jù)緩存系統(tǒng)中,轉(zhuǎn)步驟116 ;
      [0094]步驟115:修改數(shù)據(jù)緩存系統(tǒng)中數(shù)據(jù),達到數(shù)據(jù)緩存系統(tǒng)與實際數(shù)據(jù)一致;若為新增數(shù)據(jù),則將該數(shù)據(jù)同時存儲于緩存;若為修改數(shù)據(jù),則修改緩存中相對應(yīng)的數(shù)據(jù);若為刪除數(shù)據(jù),則將緩存中相對應(yīng)數(shù)據(jù)刪除;
      [0095]步驟116:判斷變化數(shù)據(jù)是否還有下一列;若存在,轉(zhuǎn)步驟113,否則轉(zhuǎn)步驟117 ;
      [0096]步驟117:結(jié)束。
      [0097]如圖4所示,非事務(wù)型查詢操作修正列訪問頻數(shù)和數(shù)據(jù)緩存流程圖,給出了查詢類操作修正列訪問頻數(shù)的方法。所述非事務(wù)型查詢操作的具體步驟如下:[0098]步驟121:判斷查詢是否命中數(shù)據(jù)緩存;若數(shù)據(jù)命中緩存,則在數(shù)據(jù)緩存中查詢數(shù)據(jù),轉(zhuǎn)步驟122,否則在關(guān)系數(shù)據(jù)庫中查詢數(shù)據(jù),轉(zhuǎn)步驟123 ;
      [0099]步驟122:增大該列的列訪問頻數(shù),并計算新的列訪問頻率,轉(zhuǎn)步驟126 ;新的列訪問頻數(shù)=原列訪問頻數(shù)+命中系數(shù),新的列訪問頻率=新的列訪問頻數(shù)/時間;
      [0100]步驟123:增大該列的列訪問頻數(shù),并計算新的列訪問頻率,轉(zhuǎn)步驟124 ;新的列訪問頻數(shù)=原列訪問頻數(shù)+未命中系數(shù),新的列訪問頻率=新的列訪問頻數(shù)/時間。設(shè)定未命中系數(shù)遠小于命中系數(shù);
      [0101]步驟124:根據(jù)變化后列訪問頻率與變化前列訪問頻率差的絕對值,判斷是否需要將數(shù)據(jù)移入到數(shù)據(jù)緩存系統(tǒng);若需要移入到數(shù)據(jù)緩存系統(tǒng),轉(zhuǎn)步驟125 ;否則轉(zhuǎn)步驟126 ;
      [0102]步驟125:將數(shù)據(jù)列移入到數(shù)據(jù)緩存系統(tǒng),轉(zhuǎn)步驟126 ;
      [0103]步驟126:結(jié)束。
      [0104]所述步驟124的詳細步驟如下:
      [0105]步驟124-1,計算當(dāng)前列訪問頻率與上次計算的列訪問頻率;
      [0106]步驟124-2,若當(dāng)前列訪問頻率小于上次計算的列訪問頻率,將該數(shù)據(jù)移入到數(shù)據(jù)緩存;
      [0107]步驟124-3,若當(dāng)前列訪問頻率大于等于上次計算的列訪問頻率,不做任何處理。
      [0108]如圖5所示,所述步驟107的步驟如下:
      [0109]步驟131:判斷最近一次列訪問頻率與平均列訪問頻率大??;若最近一次列訪問頻率大于平均列訪問頻率,說明該數(shù)據(jù)列仍然是訪問頻繁列,不做任何處理,轉(zhuǎn)步驟135 ;若最近一次列訪問頻率小于等于平均列訪問頻率,說明該數(shù)據(jù)列最近一段時間內(nèi)訪問頻繁程度降低,轉(zhuǎn)步驟132;
      [0110]步驟132:減小該列的列訪問頻數(shù);新的列訪問頻數(shù)=原列訪問頻數(shù)-列不長訪問系數(shù),新的列訪問頻數(shù)=新的列訪問頻數(shù)/時間。
      [0111]步驟133:判斷平均列訪問頻率與最近一次列訪問頻率的差的是否大于設(shè)定閾值;若滿足,轉(zhuǎn)步驟134:否則轉(zhuǎn)步驟135 ;
      [0112]步驟134:在數(shù)據(jù)緩存中移除該列。
      [0113]步驟135:結(jié)束。
      [0114]上述雖然結(jié)合附圖對本發(fā)明的【具體實施方式】進行了描述,但并非對本發(fā)明保護范圍的限制,所屬領(lǐng)域技術(shù)人員應(yīng)該明白,在本發(fā)明的技術(shù)方案的基礎(chǔ)上,本領(lǐng)域技術(shù)人員不需要付出創(chuàng)造性勞動即可做出的各種修改或變形仍在本發(fā)明的保護范圍以內(nèi)。
      【權(quán)利要求】
      1.一種列訪問感知的數(shù)據(jù)緩存方法,其特征是,步驟為: 用于非事務(wù)型查詢操作的步驟、用于事務(wù)型增加、修改或刪除操作的步驟和用于緩存監(jiān)聽的步驟; (1)如果是非事務(wù)型查詢操作,判斷是否命中緩存: (1.1)如果命中緩存,就在數(shù)據(jù)緩存中查詢數(shù)據(jù)同時使用頻數(shù)計數(shù)器中修正列訪問頻數(shù), (1.2)如果未命中緩存,就在關(guān)系數(shù)據(jù)庫中查詢數(shù)據(jù)同時使用頻數(shù)計數(shù)器中修正列訪問頻數(shù); (2)如果是事務(wù)型增加、修改或刪除操作,將關(guān)系數(shù)據(jù)庫的變化數(shù)據(jù)實時同步到數(shù)據(jù)緩存系統(tǒng); (3)如果是緩存監(jiān)聽,先使用頻數(shù)計數(shù)器中修正列訪問頻數(shù),再使用緩存監(jiān)聽器修正緩存數(shù)據(jù)。
      2.如權(quán)利要求1所述的一種列訪問感知的數(shù)據(jù)緩存方法,其特征是,所述事務(wù)型增加、修改或刪除操作的具體步驟如下: 步驟111:應(yīng)用程序連接關(guān)系數(shù)據(jù)庫,增加、修改或刪除數(shù)據(jù); 步驟112:基于日志的變化數(shù)據(jù)捕獲器監(jiān)聽到變化前后的數(shù)據(jù); 步驟113:從變化數(shù)據(jù)中選擇一列; 步驟114:判斷步驟113的變化數(shù)據(jù)中的數(shù)據(jù)列是否存在于數(shù)據(jù)緩存,若變化數(shù)據(jù)存在于數(shù)據(jù)緩存中,轉(zhuǎn)步驟115 ;若變化數(shù)據(jù)不存在于數(shù)據(jù)緩存中,轉(zhuǎn)步驟116 ; 步驟115:修改數(shù)據(jù)緩存中數(shù)據(jù),達到數(shù)據(jù)緩存與實際數(shù)據(jù)一致; 步驟116:判斷變化數(shù)據(jù)是否還有下一列;若存在,轉(zhuǎn)步驟113,否則轉(zhuǎn)步驟117 ; 步驟117:結(jié)束。
      3.如權(quán)利要求1所述的一種列訪問感知的數(shù)據(jù)緩存方法,其特征是,所述非事務(wù)型查詢操作的具體步驟如下: 步驟121:判斷查詢是否命中數(shù)據(jù)緩存;若數(shù)據(jù)命中緩存,則在數(shù)據(jù)緩存中查詢數(shù)據(jù),轉(zhuǎn)步驟122,否則在關(guān)系數(shù)據(jù)庫中查詢數(shù)據(jù),轉(zhuǎn)步驟123 ; 步驟122:增大該列的列訪問頻數(shù),并計算新的列訪問頻率,轉(zhuǎn)步驟126 ; 步驟123:增大該列的列訪問頻數(shù),并計算新的列訪問頻率,轉(zhuǎn)步驟124 ; 步驟124:根據(jù)變化后列訪問頻率與變化前列訪問頻率差的絕對值,判斷是否需要將數(shù)據(jù)移入到數(shù)據(jù)緩存系統(tǒng);若需要移入到數(shù)據(jù)緩存系統(tǒng),轉(zhuǎn)步驟125 ;否則轉(zhuǎn)步驟126 ; 步驟125:將數(shù)據(jù)列移入到數(shù)據(jù)緩存系統(tǒng),轉(zhuǎn)步驟126 ; 步驟126:結(jié)束。
      4.如權(quán)利要求1所述的一種列訪問感知的數(shù)據(jù)緩存方法,其特征是,所述緩存監(jiān)聽的步驟如下: 步驟131:判斷最近一次列訪問頻率與平均列訪問頻率大?。蝗糇罱淮瘟性L問頻率大于平均列訪問頻率,說明該數(shù)據(jù)列仍然是訪問頻繁列,不做任何處理,轉(zhuǎn)步驟135 ;若最近一次列訪問頻率小于等于平均列訪問頻率,說明該數(shù)據(jù)列最近一段時間內(nèi)訪問頻繁程度降低,轉(zhuǎn)步驟132 ; 步驟132:減小該列的列訪問頻數(shù);步驟133:判斷平均列訪問頻率與最近一次列訪問頻率的差的絕對值是否大于設(shè)定閾值;若滿足,轉(zhuǎn)步驟134:否則轉(zhuǎn)步驟135 ; 步驟134:在數(shù)據(jù)緩存中移除該列; 步驟135:結(jié)束。
      5.一種列訪問感知的數(shù)據(jù)緩存系統(tǒng),其特征是,包括: 用于非事務(wù)型查詢操作的訪問判別器、用于事務(wù)型增加、修改或刪除操作的基于日志的變化數(shù)據(jù)捕獲器、緩存監(jiān)聽器、數(shù)據(jù)緩存、頻數(shù)計數(shù)器和關(guān)系數(shù)據(jù)庫; 所述訪問判別器用于判斷是否命中緩存; 如果命中緩存,就從所述數(shù)據(jù)緩存系統(tǒng)中查詢數(shù)據(jù)同時使用頻數(shù)計數(shù)器修正數(shù)據(jù)緩存內(nèi)列訪問頻數(shù), 如果未命中緩存,就從所述關(guān)系數(shù)據(jù)庫中查詢數(shù)據(jù)的關(guān)系數(shù)據(jù)庫同時使用頻數(shù)計數(shù)器修正數(shù)據(jù)緩存內(nèi)的列訪問頻數(shù); 所述基于日志的變化數(shù)據(jù)捕獲器用于將關(guān)系數(shù)據(jù)庫變化的數(shù)據(jù)實時同步到數(shù)據(jù)緩存; 所述緩存監(jiān)聽器用于對數(shù)據(jù)緩存進行緩存監(jiān)聽;先在頻數(shù)計數(shù)器中修正列訪問頻數(shù),然后使用緩存監(jiān)聽器修 正緩存數(shù)據(jù)。
      【文檔編號】G06F17/30GK103631972SQ201310716863
      【公開日】2014年3月12日 申請日期:2013年12月23日 優(yōu)先權(quán)日:2013年12月23日
      【發(fā)明者】馬坤, 楊波 申請人:濟南大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1