本发明专利技术公开了一种列访问感知的数据缓存方法及系统,所述方法包括用于非事务型查询操作的步骤、用于事务型增加、修改或删除操作的步骤和用于缓存监听的步骤;用于非事务型查询操作,判断是否命中缓存,如果是,就在数据缓存系统中查询数据同时修正列访问频数的步骤,如果否,就在关系数据库中查询数据同时修正列访问频数的步骤;用于事务型增加、修改或删除操作,将变化数据实时同步到缓存的步骤;用于缓存监听的步骤,用于修正列访问频数的步骤,用于修正缓存数据的步骤。本发明专利技术具有低响应时间、高缓存命中率以及高吞吐量等特性,通过列访问频率动态修正缓存数据内容。
【技术实现步骤摘要】
一种列访问感知的数据缓存方法及系统
本专利技术涉及一种数据缓存系统及方法,尤其涉及一种列访问感知的数据缓存方法及系统。
技术介绍
传统关系数据库是目前Web应用中存取数据的主要形式。然而,随着Web2.0、大数据、云应用等技术的发展,传统的关系数据库在高并发读写方面遇到了瓶颈,无法满足海量数据的高效率存储和访问需求。在这个背景下,无模式数据库应运而生。无模式数据库,作为一种模式自由的数据库,其模式主要有关系、树、图、文档等多种方式,主要用于解决大数据的管理、处理和分析等问题。然而,由于数据库模式和编程接口的差异,无模式数据库短时间不可能完全取代关系数据库。因此,以关系数据库为主,无模式数据库为辅,成了工业界和产业界普遍接受的方案。由于无模式数据库具有高性能、易扩展特性,因此与关系数据库进行结合,存储海量数据。无模式数据库特点决定其同样适用于缓存数据。无模式数据库作为关系数据库的缓存是一种解决关系数据库读取瓶颈问题的解决方案。然而,现有技术中无模式数据缓存缺乏保证缓存高命中率的有效方法,无法保证频繁访问的数据均命中数据缓存。为了提高数据的读取能力,现有技术存在四类数据缓存方法:(I)数据库查询缓存。该方法用内存、闪存等快速访问存储器缓存查询结果,降低数据库负载。当再次进行同一查询时,直接从缓存中取出数据。例如,集成Memcached的MySQL数据库产品;(2)应用级数据存储。应用程序直接缓存特定类方法或函数的返回值。在一定时间间隔内,当再次执行同一方法或函数时,只要参数相同,直接从缓存中取出数据。EHCache是实现该方法的一种Java EE缓存框架;(3)内存数据库。该方法抛弃了磁盘数据管理的传统方式,直接将数据存储在内存中,并且在数据缓存、快速算法和并行操作方面也进行了相应的改进。相对于快速访问存储控制器,内存的数据读写速度要高出几个数量级,极大地提高应用的性能;(4)无模式数据库与关系数据库集成方案。该方案对现有的关系数据库存储引擎进行改造,引入无模式键值序对缓存数据及索引,从而提升读取性能。上述方法在适应范围上都存在不同方面的缺陷:方法(I)与方法(2)存在缓存与实际数据的一致性问题。该类方法需要修改原有应用程序。另外,如何保证较高的缓存命中率,如何对过期数据及时清理是该类方法的最大挑战。方法(2)中的缓存结构一旦崩溃,在短时间内会造成数据库负载过高而宕机。方法(3)在存储量上存在瓶颈,不适合大数据的存取访问。方法(4)需要对数据库存储引擎进行修改,修改方法与具体数据库相关,不具备普适性。数据缓存的关键问题是如何提高缓存命中率,如果保证访问频繁的数据均命中缓存。
技术实现思路
本专利技术的目的就是提高缓存命中率,通过一系列方法保证频繁访问的数据均命中缓存,提供一种列访问感知的数据缓存方法及系统,基于列访问频率修正缓存数据,大数据下查询时,本系统具有低响应时间、高缓存命中率以及高吞吐量等特性,通过列访问频率动态修正缓存数据内容。为实现上述目的,本专利技术采用如下技术方案:[0011 ] 一种列访问感知的数据缓存方法,步骤为:用于非事务型查询操作的步骤、用于事务型增加、修改或删除操作的步骤和用于缓存监听的步骤;(I)如果是非事务型查询操作,判断是否命中缓存:(1.1)如果命中缓存,就在数据缓存中查询数据同时使用频数计数器中修正列访问频数,(1.2)如果未命中缓存,就在关系数据库中查询数据同时使用频数计数器中修正列访问频数;(2)如果是事务型增加、修改或删除操作,将关系数据库的变化数据实时同步到数据缓存系统;(3)如果是缓存监听,先使用频数计数器中修正列访问频数,再使用缓存监听器修正缓存数据。所述事务型增加、修改或删除操作的具体步骤如下:步骤111:应用程序连接关系数据库,增加、修改或删除数据;步骤112:基于日志的变化数据捕获器监听到变化前后的数据;步骤113:从变化数据中选择一列;步骤114:判断步骤113的变化数据中的数据列是否存在于数据缓存,若变化数据存在于数据缓存中,转步骤115 ;若变化数据不存在于数据缓存中,转步骤116 ;步骤115:修改数据缓存中数据,达到数据缓存与实际数据一致;步骤116:判断变化数据是否还有下一列;若存在,转步骤113,否则转步骤117 ;步骤117:结束。所述非事务型查询操作的具体步骤如下:步骤121:判断查询是否命中数据缓存;若数据命中缓存,则在数据缓存系统中查询数据,转步骤122,否则在关系数据库中查询数据,转步骤123 ;步骤122:增大该列的列访问频数,并计算新的列访问频率,转步骤126 ;步骤123:增大该列的列访问频数,并计算新的列访问频率,转步骤124 ;步骤124:根据变化后列访问频率与变化前列访问频率差的绝对值,判断是否需要将数据移入到数据缓存系统;若需要移入到数据缓存系统,转步骤125 ;否则转步骤126 ;步骤125:将数据列移入到数据缓存系统,转步骤126 ;步骤126:结束。所述缓存监听的步骤如下:步骤131:判断最近一次列访问频率与平均列访问频率大小;若最近一次列访问频率大于平均列访问频率,说明该数据列仍然是访问频繁列,不做任何处理,转步骤135 ;若最近一次列访问频率小于等于平均列访问频率,说明该数据列最近一段时间内访问频繁程度降低,转步骤132;步骤132:减小该列的列访问频数;步骤133:判断平均列访问频率与最近一次列访问频率的差的绝对值是否大于设定阈值;若满足,转步骤134:否则转步骤135 ;步骤134:在数据缓存中移除该列。步骤135:结束。一种列访问感知的数据缓存系统,包括:用于非事务型查询操作的访问判别器、用于事务型增加、修改或删除操作的基于日志的变化数据捕获器、缓存监听器、数据缓存、频数计数器和关系数据库;所述访问判别器用于判断是否命中缓存;如果命中缓存,就从所述数据缓存系统中查询数据同时使用频数计数器修正数据缓存内列访问频数,如果未命中缓存,就从所述关系数据库中查询数据的关系数据库同时使用频数计数器修正数据缓存内的列访问频数;所述基于日志的变化数据捕获器用于将关系数据库变化的数据实时同步到数据缓存;所述缓存监听器用于对数据缓存进行缓存监听;先在频数计数器中修正列访问频数,然后使用缓存监听器修正缓存数据。专业术语解释:所述列访问频数,是一种广义的列访问频数,该列数据每被访问(查询、缓存命中、缓存未命中等)一次,列访问频数增加特定数值,该数值为该访问方式的权值。若该列数据长时间未被访问,该列访问频数减小特定数值,该数值为该列访问方式的权值。所述列命中系数,用于修正列访问频数,计算新的列访问频率。当数据访问命中缓存时,说明此列一段时间内有访问需求,此时新的列访问频数=原列访问频数+列命中系数。所述列未命中系数,用于修正列访问频数,计算新的列访问频率。当数据访问未命中缓存时,说明此列一段时间内有访问需求,此时新的列访问频数=原列访问频数+列未命中系数。由于缓存命中比缓存未命中更能说明该列访问频繁,设定列未命中系数远小于列命中系数。所述列不长访问系数,用于修正列访问频数,计算新的列访问频率。当缓存监听器发现数据列长时间不被访问时,说明此列一段时间内无访问需求,此时新的列访问频数=原列访问频数-列不长访问系数。所述本文档来自技高网...
【技术保护点】
一种列访问感知的数据缓存方法,其特征是,步骤为:用于非事务型查询操作的步骤、用于事务型增加、修改或删除操作的步骤和用于缓存监听的步骤;(1)如果是非事务型查询操作,判断是否命中缓存:(1.1)如果命中缓存,就在数据缓存中查询数据同时使用频数计数器中修正列访问频数,(1.2)如果未命中缓存,就在关系数据库中查询数据同时使用频数计数器中修正列访问频数;(2)如果是事务型增加、修改或删除操作,将关系数据库的变化数据实时同步到数据缓存系统;(3)如果是缓存监听,先使用频数计数器中修正列访问频数,再使用缓存监听器修正缓存数据。
【技术特征摘要】
1.一种列访问感知的数据缓存方法,其特征是,步骤为: 用于非事务型查询操作的步骤、用于事务型增加、修改或删除操作的步骤和用于缓存监听的步骤; (1)如果是非事务型查询操作,判断是否命中缓存: (1.1)如果命中缓存,就在数据缓存中查询数据同时使用频数计数器中修正列访问频数, (1.2)如果未命中缓存,就在关系数据库中查询数据同时使用频数计数器中修正列访问频数; (2)如果是事务型增加、修改或删除操作,将关系数据库的变化数据实时同步到数据缓存系统; (3)如果是缓存监听,先使用频数计数器中修正列访问频数,再使用缓存监听器修正缓存数据。2.如权利要求1所述的一种列访问感知的数据缓存方法,其特征是,所述事务型增加、修改或删除操作的具体步骤如下: 步骤111:应用程序连接关系数据库,增加、修改或删除数据; 步骤112:基于日志的变化数据捕获器监听到变化前后的数据; 步骤113:从变化数据中选择一列; 步骤114:判断步骤113的变化数据中的数据列是否存在于数据缓存,若变化数据存在于数据缓存中,转步骤115 ;若变化数据不存在于数据缓存中,转步骤116 ; 步骤115:修改数据缓存中数据,达到数据缓存与实际数据一致; 步骤116:判断变化数据是否还有下一列;若存在,转步骤113,否则转步骤117 ; 步骤117:结束。3.如权利要求1所述的一种列访问感知的数据缓存方法,其特征是,所述非事务型查询操作的具体步骤如下: 步骤121:判断查询是否命中数据缓存;若数据命中缓存,则在数据缓存中查询数据,转步骤122,否则在关系数据库中查询数据,转步骤123 ; 步骤122:增大该列的列访问频数,并计算新的列访问频率,转步骤126 ; 步骤123:增大该...
【专利技术属性】
技术研发人员:马坤,杨波,
申请(专利权)人:济南大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。