时序存储引擎的热数据管理方法及系统技术方案

技术编号:38500884 阅读:11 留言:0更新日期:2023-08-15 17:08
本发明专利技术公开了时序存储引擎的热数据管理方法及系统,属于时序数据库领域,要解决的技术问题为如何提供一种有效的热数据管理机制,对数据进行分级存储,以优化存储引擎的内存使用,在不增加存储成本的前提下,提高查询性能。包括如下步骤:定义一个参数ACTIVE_TIME,以表粒度进行配置,将时序数据划分为热数据和冷数据;每个表在存储引擎中对应一个table对象,每个table对象维护一个block数组,每个block对象是最基本的存储单元;写缓存管理内存申请、回收和释放,写缓存维护一个recycle队列,如果一个block对象存放的数据已经不属于热数据,将该block加入recycle队列,回收内存空间。回收内存空间。回收内存空间。

【技术实现步骤摘要】
时序存储引擎的热数据管理方法及系统


[0001]本专利技术涉及时序数据库
,具体地说是时序存储引擎的热数据管理方法及系统。

技术介绍

[0002]时序数据库是时间序列数据库的简称,时间序列数据库主要用于处理按照时间顺序变化的数据。时间序列数据的典型特点是:产生频率快、测点多信息量大。时序数据往往是由百万级甚至千万级终端设备产生的,写入并发量比较高,属于海量数据场景。
[0003]在时序数据库持续写入的场景下,早先写入的时序数据的查询频率会随着时间推移而逐渐降低,这样的数据通常被称为“冷数据”。相对的,最近写入的时序数据被称为“热数据”。这些时序数据的时间戳往往距离当前很近,在时序应用的场景中会被频繁查询。
[0004]在时序应用的场景中,冷数据的数据量往往非常庞大,但是极少用于查询。随着冷数据体量的不断变大,存储成本也会水涨船高。因此,我们需要设计一种合理的时序存储引擎的热数据管理机制,对数据进行分级存储,从而降低冷数据存储成本,提升热数据读取性能。
[0005]如何设计一种合理的时序存储引擎的热数据管理机制,对数据进行分级存储,从而优化存储引擎的内存使用,降低冷数据存储成本,提升热数据读取性能,是需要解决的技术问题。

技术实现思路

[0006]本专利技术的技术任务是针对以上不足,提供时序存储引擎的热数据管理方法及系统,来解决大量冷数据增加存储成本和影响读取性能的技术问题,实现优化存储引擎的内存使用,在不增加存储成本的前提下,提高时序数据库的查询性能。
[0007]第一方面,本专利技术一种时序存储引擎的热数据管理方法,其特征在于,包括如下步骤:
[0008]定义一个参数ACTIVE_TIME,以表粒度进行配置,所述参数ACTIVE_TIME用于控制一个表中尽量保存在内存的数据的时间范围,所述参数ACTIVE_TIME的大小根据数据存储量和查询时间覆盖范围,在创建完表对象后,所述参数ACTIVE_TIME的值能够进行调整;
[0009]每个表对应一个table对象,每个table对象都维护一个block数组,block是一块固定大小的内存空间,所有内存的申请、回收和释放都通过写缓存进行管理,写缓存维护一个recycle队列,recycle队列中一个元素就是一个block对象,只有当block对象中存放的数据可以在内存中清除时,才可以加入recycle队列;如果内存使用空间已经超过阈值,删除recycle队列中的block对象,释放内存空间;
[0010]为确保ACTIVE_TIME时间范围内的热数据尽量存放在内存中,则需要优化block对象进入recycle队列的时机,一个block对象要想进入recycle队列,需要满足如下两个时机条件:内存空间已经被写满;写入的最后一条数据的时间戳已经在ACTIVE_TIME时间范围之
外,即block对象中存放的数据都已经不再属于热数据。
[0011]作为优选,基于block对象要想进入recycle队列需要满足的两个时机条件,基于热数据管理机制将block对象加入recycle队列,热数据管理机制的实现方式为:
[0012]block对象加入recycle队列发生在写数据时,每次完成向table对象写入数据后,遍历该table对象的block数组,如果一个block对象已经写满且最后一条数据的时间戳已经不在ACTIVE_TIME的时间范围内,则将该block对象加入recycle数组;
[0013]由于时序数据是顺序的,如果一个block对象内的数据还包含热数据,那么其后续的block对象也一定包含,所以可以停止遍历;
[0014]维护一个参数记录block数组中最后一个加入recycle队列的block对象的偏移量;每一次遍历时,从记录的偏移量的下一个block对象开始遍历。
[0015]作为优选,如果保证每个table对象都在内存中存放ACTIVE_TIME时间范围内的数据,那么有可能会将所有的内存空间都写满,而且无法被释放,在这种情况下,时序数据库无法再正常写入数据,基于时序数据库无法再正常写入数据的情况,执行如下:
[0016]在向一个table对象写入数据时,如果因为内存空间不足导致写入失败,则牺牲table本身的热数据存放,依次淘汰block数组中最旧的block,用于写入新数据,再将其重新加入队尾,通过block重新使用的方法解决内存不足的问题。
[0017]作为优选,由于block加入recycle队列发生在数据写入时,可能存在如场景:一个table对象在写入一部分数据后不再写入新数据了,所以即使该table对象内所有数据都已经不再是热数据,但是存放数据的block对象也一直无法进入recycle队列,当出现内存不足的情况,需要释放部分内存;同样的,在写入数据时,如果因为内存不足而写入失败,那么在上层遍历所有的table对象,如果一个table内的数据都已经不再是热数据,那么将该table对象的所有block对象加入recycle队列,释放内存。
[0018]作为优选,table对象维护另外一个参数ACTUAL_ACTIVE_TIME,参数ACTUAL_ACTIVE_TIME表示table中实际存放的热数据时间范围,参数ACTUAL_ACTIVE_TIME在内存充足时有可能比ACTIVE_TIME更大,在内存不足时有可能比ACTIVE_TIME更小。
[0019]第二方面,本专利技术一种时序存储引擎的热数据管理系统,所述系统用于执行如第一方面任一项所述的时序存储引擎的热数据管理方法,所述系统包括参数配置模块和存储设计模块,
[0020]所述参数配置模块用于执行如下:定义一个参数ACTIVE_TIME,以表粒度进行配置,所述参数ACTIVE_TIME用于控制一个表中尽量保存在内存的数据的时间范围,所述参数ACTIVE_TIME的大小根据数据存储量和查询时间覆盖范围,在创建完表对象后,所述参数ACTIVE_TIME的值能够进行调整;
[0021]所述存储设计模块用于执行如下:
[0022]每个表对应一个table对象,每个table对象都维护一个block数组,block是一块固定大小的内存空间,所有内存的申请、回收和释放都通过写缓存进行管理,写缓存维护一个recycle队列,recycle队列中一个元素就是一个block对象,只有当block对象中存放的数据可以在内存中清除时,才可以加入recycle队列;如果内存使用空间已经超过阈值,删除recycle队列中的block对象,释放内存空间;
[0023]为确保ACTIVE_TIME时间范围内的热数据尽量存放在内存中,则需要优化block对
象进入recycle队列的时机,一个block对象要想进入recycle队列,需要满足如下两个时机条件:内存空间已经被写满;写入的最后一条数据的时间戳已经在ACTIVE_TIME时间范围之外,即block对象中存放的数据都已经不再本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种时序存储引擎的热数据管理方法,其特征在于,包括如下步骤:定义一个参数ACTIVE_TIME,以表粒度进行配置,所述参数ACTIVE_TIME用于控制一个表中尽量保存在内存的数据的时间范围,所述参数ACTIVE_TIME的大小根据数据存储量和查询时间覆盖范围,在创建完表对象后,所述参数ACTIVE_TIME的值能够进行调整;每个表对应一个table对象,每个table对象都维护一个block数组,block是一块固定大小的内存空间,所有内存的申请、回收和释放都通过写缓存进行管理,写缓存维护一个recycle队列,recycle队列中一个元素就是一个block对象,只有当block对象中存放的数据可以在内存中清除时,才可以加入recycle队列;如果内存使用空间已经超过阈值,删除recycle队列中的block对象,释放内存空间;为确保ACTIVE_TIME时间范围内的热数据尽量存放在内存中,则需要优化block对象进入recycle队列的时机,一个block对象要想进入recycle队列,需要满足如下两个时机条件:内存空间已经被写满;写入的最后一条数据的时间戳已经在ACTIVE_TIME时间范围之外,即block对象中存放的数据都已经不再属于热数据。2.根据权利要求1所述的时序存储引擎的热数据管理方法,其特征在于,基于block对象要想进入recycle队列需要满足的两个时机条件,基于热数据管理机制将block对象加入recycle队列,热数据管理机制的实现方式为:block对象加入recycle队列发生在写数据时,每次完成向table对象写入数据后,遍历该table对象的block数组,如果一个block对象已经写满且最后一条数据的时间戳已经不在ACTIVE_TIME的时间范围内,则将该block对象加入recycle数组;由于时序数据是顺序的,如果一个block对象内的数据还包含热数据,那么其后续的block对象也一定包含,所以可以停止遍历;维护一个参数记录block数组中最后一个加入recycle队列的block对象的偏移量;每一次遍历时,从记录的偏移量的下一个block对象开始遍历。3.根据权利要求1所述的时序存储引擎的热数据管理方法,其特征在于,如果保证每个table对象都在内存中存放ACTIVE_TIME时间范围内的数据,那么有可能会将所有的内存空间都写满,而且无法被释放,在这种情况下,时序数据库无法再正常写入数据,基于时序数据库无法再正常写入数据的情况,执行如下:在向一个table对象写入数据时,如果因为内存空间不足导致写入失败,则牺牲table本身的热数据存放,依次淘汰block数组中最旧的block,用于写入新数据,再将其重新加入队尾,通过block重新使用的方法解决内存不足的问题。4.根据权利要求1所述的时序存储引擎的热数据管理方法,其特征在于,由于block加入recycle队列发生在数据写入时,可能存在如场景:一个table对象在写入一部分数据后不再写入新数据了,所以即使该table对象内所有数据都已经不再是热数据,但是存放数据的block对象也一直无法进入recycle队列,当出现内存不足的情况,需要释放部分内存;同样的,在写入数据时,如果因为内存不足而写入失败,那么在上层遍历所有的table对象,如果一个table内的数据都已经不再是热数据,那么将该table对象的所有block对象加入recycle队列,释放内存。5.根据权利要求1所述的时序存储引擎的热数据管理方法,其特征在于,table对象维护另外一个参数ACTUAL_ACTIVE_TIME,参数ACTUAL_ACTIVE_TIME表示table中实际存放的
热数据时间范围,参数ACTUAL_ACTIVE_TIME在内存充足时有可能比ACTIVE_TIME更大,在内存不足时有可能比ACTIVE_TIME更小。6.一种时序存储引擎的热数据管理系统,其特征在于,所述系统用于执行如权利要求1

5任一项所述的时序存储引擎的热...

【专利技术属性】
技术研发人员:刘梦真
申请(专利权)人:上海沄熹科技有限公司
类型:发明
国别省市:

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

1