一种数据缓存方法及系统技术方案

技术编号:24168712 阅读:26 留言:0更新日期:2020-05-16 02:15
本发明专利技术涉及数据缓存领域,尤其涉及一种数据缓存方法及系统,该方法包括:将主缓存模块根据时间粒度进行分区,每个分区对应相应的配额占比;根据数据长度将数据缓存在对应时间粒度的分区;当任一分区缓存的数据达到配额占比时,将超出配额占比的数据缓存在副缓存模块。通过使用本发明专利技术,可以实现以下效果:从时间维度上将数据分类,从而将扁平的数据结构化方式进行管理,并且以时间粒度为单位实时计算对应访问量,从而量化出各时间粒度分区的使用频度,从后续清理缓存提供科学依据。

A data caching method and system

【技术实现步骤摘要】
一种数据缓存方法及系统
本专利技术涉及数据缓存领域,尤其涉及一种数据缓存方法及系统。
技术介绍
生产过程数据对企业来说是很有价值的,但由于其数据量大,实时性要求高等特点,往往采用实时数据库保存大量历史数据,但对数据进行分析时,并不能区分哪些数据是有用的,因此保存所有数据以防止丢失所需信息。然而缓存容量有限,通过这种缓存方法需要非常大的成本来提高缓存容量,同时由于对所有数据进行缓存,导致有用数据的缓存命中率较低。
技术实现思路
为解决上述问题,本专利技术提出一种数据缓存方法及系统。一种数据缓存方法,包括:将主缓存模块根据时间粒度进行分区,每个分区对应相应的配额占比;根据数据长度将数据缓存在对应时间粒度的分区;当任一分区缓存的数据达到配额占比时,将超出配额占比的数据缓存在副缓存模块。优选的,当根据查询条件进行数据查询时:若该数据都缓存在主缓存模块,则更新该数据权重;若该数据一部分或全部缓存在副缓存模块,则将缓存在副缓存模块的数据迁入主缓存模块;若数据不缓存在主缓存模块或副缓存模块,则从实时数据库读取该数据,更新该数据权重,并该数据缓存在主缓存模块或副缓存模块。优选的,所述若该数据一部分或全部缓存在副缓存模块,则将缓存在副缓存模块的数据迁入主缓存模块包括:根据数据长度确定在主缓存模块所对应时间粒度的分区A;判断该分区A是否有足够缓存空间;若有,则直接将该数据缓存在该分区A;若没有,则释放比该分区A使用频度低的分区的空间,并将释放的空间分配给分区A,并缓存该数据。优选的,所述释放比该分区A使用频度低的分区的空间,并将释放的空间分配给分区A,并缓存该数据包括:依次删除比该分区A使用频度低的分区中权重最低的数据,并将删除数据后的空闲空间分配给分区A,若权重最低的数据存在至少两段,则依次删除离最近一次访问时间最久的数据,直到所查询的数据能够缓存,并缓存该查询的数据。优选的,所述释放比该分区A使用频度低的分区的空间,并将释放的空间分配给分区A,并缓存该数据还包括:若释放完比分区A使用频度低的分区的所有可用空间,还不能将所述查询的数据缓存,则将该查询的数据进行截取并缓存。优选的,所述若数据不缓存在主缓存模块或副缓存模块,则从实时数据库读取该数据,更新该数据权重,并该数据缓存在主缓存模块或副缓存模块包括:根据数据长度确定在主缓存模块所对应时间粒度的分区B;判断该分区B是否有足够缓存空间;若有,则直接将该数据缓存在该分区B;若没有,则判断分区B使用频度,若使用频度大于或等于设定阈值,则释放比该分区B使用频度低的分区的空间,并将释放的空间分配给分区B,并缓存该数据,若使用频度小于设定阈值,则所查询的数据放入副缓存。优选的,若副缓存的空闲空间不足以缓存所查询的数据,则启动缓存迁移工作,将副缓存模块中权重高的数据迁移到主缓存模块。一种数据缓存系统,包括:主缓存模块,用于将主缓存模块根据时间粒度进行分区,每个分区对应相应的配额占比;根据数据长度将数据缓存在对应时间粒度的分区;副缓存模块,用于当任一分区缓存的数据达到配额占比时,将超出配额占比的数据进行缓存。优选的,所述主缓存模块根据数据的访问次数计算各数据的权重,并根据各数据的权重计算不同分区的使用频度。优选的,当根据查询条件进行数据查询时:若该数据都缓存在主缓存模块,则更新该数据权重;若该数据一部分或全部缓存在副缓存模块,则将缓存在副缓存模块的数据迁入主缓存模块;若数据不缓存在主缓存模块或副缓存模块,则从实时数据库读取该数据,更新该数据权重,并该数据缓存在主缓存模块或副缓存模块。通过使用本专利技术,可以实现以下效果:1.从时间维度上将数据分类,从而将扁平的数据结构化方式进行管理,并且以时间粒度为单位实时计算对应访问量,从而量化出各时间粒度分区的使用频度,从后续清理缓存提供科学依据;2.在本实施例中,对数据的结构进行定义,方便对缓存的数据进行查询以及管理;3.针对数据的查询结果,根据数据的权重、分区的使用频度选择该数据缓存的位置,并对数据的权重以及分区的使用频度进行更新,提高了缓存命中率。附图说明下面结合附图和具体实施方式对本专利技术作进一步详细的说明。图1是本专利技术一实施例一种工业数据的缓存系统的示意结构图;图2是本专利技术一实施例一种工业数据的缓存方法的示意流程图。具体实施方式以下结合附图,对本专利技术的技术方案作进一步的描述,但本专利技术并不限于这些实施例。本专利技术的基本思想是将数据缓存的区域分为主缓存模块和副缓存模块,将主缓存模块根据时间粒度进行分区,每个分区对应相应的配额占比,根据数据长度将数据缓存在对应时间粒度的分区,当任一分区缓存的数据达到配额占比时,将超出配额占比的数据缓存在副缓存模块。基于以上专利技术构思,本实施例提出一种数据缓存系统,如图1所示,包括:主缓存模块,用于将主缓存模块根据时间粒度进行分区,每个分区对应相应的配额占比;根据数据长度将数据缓存在对应时间粒度的分区;副缓存模块,用于当任一分区缓存的数据达到配额占比时,将超出配额占比的数据进行缓存。在本实施例中,数据缓存系统采用主-副两级缓存模块。其中主缓存模块根据数据长度分为小时、日、月、季、年5种时间粒度,并根据时间粒度对缓存数据分区管理,同时每种时间粒度分区定义了请求次数、默认配额占比、最小配额占比等属性。需要说明的是,本实施例中的主缓存模块和副缓存模块利用64位程序技术设计,采用64位程序技术突破了单个程序4G内存的限制,从而可充分利用现有硬件特别是内存容量,并且针对目前大量现存系统,在不需要改动实时数据库系统的情况下,只要增加相关硬件配置,就能实现对更多数据的缓存,提升实时数据库系统性能,同时也有效保护了用户现有的投资。按时间粒度分区的好处是:从时间维度上将数据分类,从而将扁平的数据结构化方式进行管理,并且以时间粒度为单位实时计算对应访问量,从而量化出各时间粒度分区的使用频度,从后续清理缓存提供科学依据。每个时间粒度分区,关联了相应的数据区,每个数据区负责缓存相应的位号数据,并根据位号数据特点,定义统一的数据结构。每种时间粒度分区定义如下表所示:其中“请求次数”表示该时间粒度下的任一一段数据在一段时间内被外界访问到的总的次数,外界每调用一次,请求次数就加1,请求次数越多,说明外界访问该事件粒度的数据越频繁,因此代表的是该时间粒度总体上的使用频度。同时数据缓存系统会定期将请求次数清0,以确保对所有时间粒度的公平和客观;“默认配额占比”表示该时间粒度占用总可用内存的百分比,假设数据缓存装置可用总内存为10G,那么用于缓存小时级别数据可用内存为3.5G,依次类推;“最小配额占比”表示当前时间粒度占用的最小内存百分比,其换算成最小配额的计算公式为:可用总本文档来自技高网...

【技术保护点】
1.一种数据缓存方法,其特征在于,包括:/n将主缓存模块根据时间粒度进行分区,每个分区对应相应的配额占比;/n根据数据长度将数据缓存在对应时间粒度的分区;/n当任一分区缓存的数据达到配额占比时,将超出配额占比的数据缓存在副缓存模块。/n

【技术特征摘要】
1.一种数据缓存方法,其特征在于,包括:
将主缓存模块根据时间粒度进行分区,每个分区对应相应的配额占比;
根据数据长度将数据缓存在对应时间粒度的分区;
当任一分区缓存的数据达到配额占比时,将超出配额占比的数据缓存在副缓存模块。


2.根据权利要求1所述的一种数据缓存方法,其特征在于,
当根据查询条件进行数据查询时:
若该数据都缓存在主缓存模块,则更新该数据权重;
若该数据一部分或全部缓存在副缓存模块,则将缓存在副缓存模块的数据迁入主缓存模块;
若数据不缓存在主缓存模块或副缓存模块,则从实时数据库读取该数据,更新该数据权重,并该数据缓存在主缓存模块或副缓存模块。


3.根据权利要求2所述的一种数据缓存方法,其特征在于,所述若该数据一部分或全部缓存在副缓存模块,则将缓存在副缓存模块的数据迁入主缓存模块包括:
根据数据长度确定在主缓存模块所对应时间粒度的分区A;
判断该分区A是否有足够缓存空间;
若有,则直接将该数据缓存在该分区A;
若没有,则释放比该分区A使用频度低的分区的空间,并将释放的空间分配给分区A,并缓存该数据。


4.根据权利要求3所述的一种数据缓存方法,其特征在于,所述释放比该分区A使用频度低的分区的空间,并将释放的空间分配给分区A,并缓存该数据包括:
依次删除比该分区A使用频度低的分区中权重最低的数据,并将删除数据后的空闲空间分配给分区A,若权重最低的数据存在至少两段,则依次删除离最近一次访问时间最久的数据,直到所查询的数据能够缓存,并缓存该查询的数据。


5.根据权利要求4所述的一种数据缓存方法,其特征在于,所述释放比该分区A使用频度低的分区的空间,并将释放的空间分配给分区A,并缓存该数据还包括:
若释放完比分区A使用频度低的分区的所有可用空间,...

【专利技术属性】
技术研发人员:张军方杰陆海琛
申请(专利权)人:浙江中控技术股份有限公司浙江中控软件技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1