• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種基于數(shù)據(jù)版本的高效管理緩存的方法技術

    技術編號:15691058 閱讀:95 留言:0更新日期:2017-06-24 03:57
    本發(fā)明專利技術公開了一種基于數(shù)據(jù)版本的高效管理緩存的方法,屬于軟件開發(fā)技術領域,彌補MyBatis二級緩存控制上的不足,提高二級緩存Cache和數(shù)據(jù)庫數(shù)據(jù)的同步性和一致性,處理各個Cache之間的關聯(lián)關系;精確地管理MyBatis的二級緩存,實現(xiàn)對MyBatis二級緩存細粒度的控制;當執(zhí)行過對數(shù)據(jù)庫表的更新操作時,可以指定清除由特定的StatementId表示的查詢語句產(chǎn)生的緩存。本發(fā)明專利技術解決現(xiàn)有軟件開發(fā)過程中系統(tǒng)跟數(shù)據(jù)大量交互帶來的數(shù)據(jù)庫壓力問題,滿足業(yè)務數(shù)據(jù)一致性的要求,同時降低代碼開發(fā)的難度,提高已有或者新建系統(tǒng)的性能和并發(fā)能力。

    Efficient method for managing cache based on data version

    The invention discloses a method for the efficient management of data version based on cache, which belongs to the field of software development technology, to make up for lack of MyBatis two level cache control, improve the synchronization and consistency of the two level cache of Cache and data processing, the relationship between the various Cache; accurate management MyBatis two level cache the realization of MyBatis two level cache fine-grained control; when the execution of database update operation, you can specify clear query that generated by specific StatementId cache. The invention solves the problems existing in the process of software development database system with a large number of data interaction brings, meet business data consistency requirements, and reduce the difficulty of developing code, and improve the performance of existing or new concurrency system.

    【技術實現(xiàn)步驟摘要】
    一種基于數(shù)據(jù)版本的高效管理緩存的方法
    本專利技術涉及軟件開發(fā)
    ,具體地說是一種基于數(shù)據(jù)版本的高效管理緩存的方法。
    技術介紹
    軟件開發(fā)中,有相當多的內(nèi)容需要跟數(shù)據(jù)庫交互,一般的處理是直接跟數(shù)據(jù)庫進行數(shù)據(jù)交換,但是數(shù)據(jù)庫的處理任務相當繁重,往往成為系統(tǒng)運行緩慢或者宕機的關鍵環(huán)節(jié)。即便使用了緩存技術,也會由開發(fā)人員直接操作緩存,對開發(fā)人員的開發(fā)能力和代碼質(zhì)量要求較高。MyBatis是一種數(shù)據(jù)持久化的技術框架,主要實現(xiàn)業(yè)務應用與數(shù)據(jù)庫交互的支撐,目前已經(jīng)廣泛應用于基于J2EE開發(fā)技術平臺之中。MyBatis提供了一種二級緩存機制,能夠簡單的緩存相應的數(shù)據(jù),但是二級緩存Cache和數(shù)據(jù)庫數(shù)據(jù)的同步性和一致性有所欠缺,設計一種自動緩存系統(tǒng),直接根據(jù)業(yè)務需求自主緩存,同時又要保持數(shù)據(jù)一致,滿足業(yè)務需求同時避免大量的數(shù)據(jù)庫交互和代碼人員的開發(fā)成為一種必然的需求。
    技術實現(xiàn)思路
    本專利技術的技術任務是針對以上不足之處,提供一種基于數(shù)據(jù)版本的高效管理緩存的方法,解決現(xiàn)有軟件開發(fā)過程中系統(tǒng)跟數(shù)據(jù)大量交互帶來的數(shù)據(jù)庫壓力問題,滿足業(yè)務數(shù)據(jù)一致性的要求,同時降低代碼開發(fā)的難度,提高已有或者新建系統(tǒng)的性能和并發(fā)能力。本專利技術解決其技術問題所采用的技術方案是:一種基于數(shù)據(jù)版本的高效管理緩存的方法,彌補MyBatis二級緩存控制上的不足,提高二級緩存Cache和數(shù)據(jù)庫數(shù)據(jù)的同步性和一致性,處理各個Cache之間的關聯(lián)關系;精確地管理MyBatis的二級緩存,實現(xiàn)對MyBatis二級緩存細粒度的控制;當執(zhí)行過對數(shù)據(jù)庫表的更新操作時,可以指定清除由特定的StatementId表示的查詢語句產(chǎn)生的緩存;對緩存的維護都是獨立的,緩存之間不會相互影響,指定的Mapper中的語句只會影響到該Mapper對應的Cache緩存,當執(zhí)行某些更新操作時,能夠刷新或者清空特定的查詢語句產(chǎn)生的緩存,以避免數(shù)據(jù)不一致。優(yōu)選的,對數(shù)據(jù)庫表的更新操作包括update、delete和insert。進一步的,緩存中Key的標準形式,Key的形式實際上是:GroupPrefix-ident1-ident2-ident1version-ident2version-HashKey,GroupPrefix為配置文件中配置的每個緩存組的組標識,Ident1為緩存維度1,Ident2為緩存維度2,ident1version為維度1的版本信息,ident2version為維度2的版本信息,Hashkey為select語句帶參數(shù)進行hash后的值。這里為了敘述的方便設定GroupPrefix=AAA,維度1為comid,維度2為custcode。那么key的組織形式就變成了以下:AAA-comid-custcode-a-b-Hashkey解釋:AAA為配置文件中配置的每個緩存組的組標識。Comid為緩存的數(shù)據(jù)的Comid信息。custcode為緩存的數(shù)據(jù)的custcode信息。a為于comid對應的版本號。b為于custcode對應的版本號。Hashkey為select語句帶參數(shù)進行hash后的值。2緩存版本更新策略這里為了敘述的方便設定GroupPrefix=AAA,維度1為comid,維度2為custcode。Comid=0031111301123custcode=3701234567891,下面的描述comid和custcode為兩個維度的示意名稱。2.1查詢SQL處理。2.1.1獲取緩存數(shù)據(jù)如果SelectSql中參數(shù)帶comid和custcode,那么此SQL執(zhí)行前獲取緩存,GetObject的操作中會進行以下:A、查詢AAA-comidver-comid如果有取值為a,沒有直接返回NULL,此步查詢AAA組下第1維度的版本信息,如果有那么取值為a,如果沒有那么直接返回NULL。比如查詢AAA-comidver-0031111301123的key值,來查詢AAA組下第1維度為0031111301123的版本信息。B、查詢AAA-custcodever-custcode如果有取值為b,沒有直接返回NULL,此步查詢AAA組下第2維度的版本信息,如果有那么取值為b,如果沒有那么直接返回NULL。比如查詢AAA-custcodever-3701234567891的key值,來查詢AAA組下第2維度為3701234567891的版本信息。C、查詢AAA-comid-custcode-a-b-key如果有那么取值,返回。如果沒有,返回NULL。此步驟組裝key值,比如AAA-0031111301123-3701234567891-11-32-HashKey用此key來查詢緩存,查詢AAA組下第1維度為0031111301123,第2維度為3701234567891,第1維度版本為11,第2維度版本為32的某個緩存。2.1.2添加緩存數(shù)據(jù)當從數(shù)據(jù)庫里查詢到數(shù)據(jù),那么需要把數(shù)據(jù)添加到緩存中,Put操作的時候,會有以下步驟的操作:A、查詢AAA-comidver-comid如果有取為a,沒有建一個,值為1,此步查詢AAA組下第1維度的版本信息,如果有那么取值為a,如果沒有那么建一個Key。比如查詢AAA-comidver-0031111301123的key值,來查詢AAA組下第1維度為0031111301123的版本信息。如果沒有這個Key,那么建一個Key,并設定值為1。B、查詢AAA-custcodever-custcode如果有取為b,沒有建一個值為1,此步查詢AAA組下第2維度的版本信息,如果有那么取值為b,如果沒有那么建一個Key。比如查詢AAA-custcodever-3701234567891的key值,來查詢AAA組下第2維度為3701234567891的版本信息。如果沒有這個Key,那么建一個Key,并設定值為1。C、Put(AAA-comid-custcod-a-b-key,object)。此步驟組裝key值,比如AAA-0031111301123-3701234567891-1-21-HashKey用此key來添加緩存,AAA組下第1維度為0031111301123,第2維度為3701234567891,第1維度版本為1,第2維度版本為21的某個SQL(帶參數(shù))的緩存。2.4Updatedeleteinsert參數(shù)帶comid和custcode當UpdateDeleteInsert執(zhí)行時,會觸發(fā)清空緩存的操作,如果參數(shù)中有comid和custcode那么步驟如下:查詢AAA-custcodever-custcode如果有,那么取值b,修改為b+1,沒有建一個Key值為1。此步查詢AAA組下第2維度的版本信息,如果有那么取值為b,修改為b+1,提升版本,如果沒有那么新建1個Key。比如查詢AAA-custcodever-3701234567891的key值,來查詢AAA組下第2維度為3701234567891的版本信息。然后將版本增1。3Sql語句的支持暫時只支持帶有兩個維度條件的SQL(或或者其中之一)。也就是說如果SQL語句沒有設定的兩個維度,那么putgetclear,操作都會直接返回,不影響也不使用緩存。4部署實現(xiàn)在lib下增加spymemcache.j本文檔來自技高網(wǎng)...

    【技術保護點】
    一種基于數(shù)據(jù)版本的高效管理緩存的方法,其特征在于彌補MyBatis二級緩存控制上的不足,提高二級緩存Cache和數(shù)據(jù)庫數(shù)據(jù)的同步性和一致性,處理各個Cache之間的關聯(lián)關系;精確地管理MyBatis的二級緩存,實現(xiàn)對MyBatis二級緩存細粒度的控制;當執(zhí)行過對數(shù)據(jù)庫表的更新操作時,可以指定清除由特定的StatementId表示的查詢語句產(chǎn)生的緩存;對緩存的維護都是獨立的,緩存之間不會相互影響,指定的Mapper中的語句只會影響到該Mapper對應的Cache緩存,當執(zhí)行某些更新操作時,能夠刷新或者清空特定的查詢語句產(chǎn)生的緩存,以避免數(shù)據(jù)不一致。

    【技術特征摘要】
    1.一種基于數(shù)據(jù)版本的高效管理緩存的方法,其特征在于彌補MyBatis二級緩存控制上的不足,提高二級緩存Cache和數(shù)據(jù)庫數(shù)據(jù)的同步性和一致性,處理各個Cache之間的關聯(lián)關系;精確地管理MyBatis的二級緩存,實現(xiàn)對MyBatis二級緩存細粒度的控制;當執(zhí)行過對數(shù)據(jù)庫表的更新操作時,可以指定清除由特定的StatementId表示的查詢語句產(chǎn)生的緩存;對緩存的維護都是獨立的,緩存之間不會相互影響,指定的Mapper中的語句只會影響到該Mapper對應的Cache緩存,當執(zhí)行某些更新操作時,能夠刷新或者清空特定的查詢語句產(chǎn)生的緩存,以避免數(shù)據(jù)不一致。2.根據(jù)權利要求1所述的一種基于數(shù)據(jù)版本的...

    【專利技術屬性】
    技術研發(fā)人員:李光學陳堯
    申請(專利權)人:浪潮軟件集團有限公司
    類型:發(fā)明
    國別省市:山東,37

    網(wǎng)友詢問留言 已有0條評論
    • 還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 无码丰满熟妇juliaann与黑人 | 精品国精品无码自拍自在线| 亚洲AV综合色区无码一区爱AV| 国产av永久精品无码| 精品无码综合一区二区三区 | 亚洲午夜国产精品无码| 亚洲精品无码久久毛片波多野吉衣| 无码熟妇人妻AV影音先锋| 亚洲成av人片在线观看无码不卡| 亚洲av午夜精品无码专区| 国产羞羞的视频在线观看 国产一级无码视频在线 | 无码精品国产VA在线观看 | 亚洲精品无码久久久久久久| 波多野结AV衣东京热无码专区| 久久人妻少妇嫩草AV无码专区| 国产成人无码免费看片软件 | 国产成人AV一区二区三区无码| 精品久久久久久无码中文野结衣 | 人妻无码久久中文字幕专区| AV无码免费永久在线观看| 中文字幕av无码一区二区三区电影| 亚洲aⅴ无码专区在线观看春色| 少妇伦子伦精品无码STYLES| 亚洲国产精品无码中文字| 久久久久久无码国产精品中文字幕| 久久人午夜亚洲精品无码区| 亚洲成a人无码亚洲成av无码| 永久免费av无码网站yy| 一夲道无码人妻精品一区二区| 永久免费AV无码网站在线观看 | 国产在线无码一区二区三区视频| 免费无码看av的网站| 国产av无码专区亚洲av毛片搜| 一本大道在线无码一区| 无码不卡av东京热毛片| 亚洲AV永久无码精品一福利| 亚洲av无码一区二区三区天堂| 亚洲GV天堂无码男同在线观看| 无码少妇一区二区三区芒果| 免费a级毛片无码av| 久久伊人中文无码|