一种不定长类型时序数据存储处理方法及装置制造方法及图纸

技术编号:38222547 阅读:13 留言:0更新日期:2023-07-25 17:54
本发明专利技术涉及数据库领域,具体提供了一种不定长类型时序数据存储处理方法及装置,时序数据存储引擎存储采集点采集的时序数据,采集的时序数据划分到不同的ZdataPoint对象中;ZdataPoint对象中包含若干Zblock,每个ZBlock存储一段时间内的时序数据,ZBlock之间时间段都没有交叉,每个ZBlock有一个或多个64K固定大小的内存空间;当第一个64k内存写满后,需要申请新的ZBlock对象,用来存储新的时序数据,ZBlock按照时间段的顺序依次排序,形成ZBlock数组;有一个后台的落盘线程,将已经写满的ZBlock中的时序数据落盘到磁盘中,落盘成功后在文件索引部追加这个时序数据块的信息记录。与现有技术相比,本发明专利技术在内存的利用率和访问效率间做权衡,尽量减少内存碎片,并且尽量减少性能损耗。少性能损耗。少性能损耗。

【技术实现步骤摘要】
一种不定长类型时序数据存储处理方法及装置


[0001]本专利技术涉及数据库领域,具体提供一种不定长类型时序数据存储处理方法及装置。

技术介绍

[0002]数据库存储的绝大多数数据都是定长类型的数值,如:整形、浮点型、长整型、bool类型、定长字节类型。定长字节类型:指binary,存储固定长度字节数组的类型,BINARY(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,数据库会在右边用零字节补足。
[0003]定长字节类型的最大长度有限制,一般都是小于1024个字节。对于更大最大长度的字节数组,需要使用VARBINARY类型,它是一种比binary更加灵活的数据类型,同样用于表示字节数组,但是VARBINARY可以保存可变长度的字节数组。因此,对于那些难以估计确切长度的数据对象来说,使用VARBINARY数据类型更加明智。
[0004]VARBINARY的最大长度属性,在用户创建表时输入,比如SQL语句:CREATE TABLE TS_VAR_LEN(TimeStamp int64,PicByte VARBINARY(128000));此建表语句创建出一个包含最大长度为128000个字节的不定长列PicByte;建表语句还有一个时间戳字段,是时序数据的索引。
[0005]时序数据是指时间序列数据,是按时间顺序记录的数据列,在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,也可以时点数。时序数据也可能含有不定长类型的数值或者超长字节数组的数值,比如图片、声音等等。针对这些不定长类型的数值,时序数据存储引擎需要进行相应的存储支持。
[0006]现有技术中主要的问题是索引占用的空间大,且不定长类型数值长度差异大,只用固定长度存储容易产生极大的内存浪费。

技术实现思路

[0007]本专利技术是针对上述现有技术的不足,提供一种实用性强的不定长类型时序数据存储处理方法。
[0008]本专利技术进一步的技术任务是提供一种设计合理,安全适用的不定长类型时序数据存储处理装置。
[0009]本专利技术解决其技术问题所采用的技术方案是:
[0010]一种不定长类型时序数据存储处理方法,时序数据存储引擎存储采集点采集的时序数据,采集的时序数据依据不同的采集点来源划分到不同的ZdataPoint对象中;
[0011]所述ZdataPoint对象中包含若干Zblock,每个所述ZBlock存储一段时间内的时序数据,ZBlock之间时间段都没有交叉,每个ZBlock有一个或多个64K固定大小的内存空间,其中第一个用于存放定长类型数值,其他64k内存空间用于存放不定长数值;
[0012]当第一个64k内存写满后,需要申请新的ZBlock对象,用来存储新的时序数据,
ZBlock按照时间段的顺序依次排序,形成ZBlock数组;
[0013]有一个后台的落盘线程,将已经写满的ZBlock中的时序数据落盘到磁盘中,落盘成功后在文件索引部追加这个时序数据块的信息记录。
[0014]进一步的,所述ZBlock对象中包含TSDataVector,存储记录的tuple元组数值,每个ZdataPoint对象中所有的tuple元组长度固定,tuple元组指一条记录的所有列数值依次排列存储形成的存储格式。
[0015]进一步的,所述ZBlock对象中还包含一个ZVarLenBufferMgr对象,所述ZVarLenBufferMgr对象会根据需要申请0到多个64k的内存空间,用于存放不定长类型的数值。
[0016]进一步的,针对不定长类型VARBINARY的最大长度MAX_LEN的差异,制定不同的存储策略,当MAX_LEN<255时,TSDataVector使用一个完整的64k的内存空间存储,依次顺序存储记录的tuple元组,在64K内存空间的末尾设置span空间,所述span空间表示块内内存碎片。
[0017]进一步的,当正在插入的记录的tuple元组使用span内存空间时,说明当前ZBlock对象已经存储满了,需要创建新的ZBlock对象存放正在插入的这条记录。
[0018]进一步的,当所述MAX_LEN>=255并且MAX_LEN<2048时,所述TSDataVector使用一个64k的内存空间存储的一部分,依次顺序存储记录的tuple元组,64K剩余的空间存储不定长列的列值,TSDataVector从前往后顺序存放记录tuple元组;不定长列值空间从后往前依次申请。
[0019]进一步的,64k内存空间中的span内存碎片出现在内存空间的中间部分,当span的空间不足以存放正在插入的记录的tuple元组和不定长列数值时,需要申请新的ZBlock对象存放正在插入的记录。
[0020]进一步的,当MAX_LEN>=2048时,所述TSDataVector使用一个完整的64k的内存空间存储,依次顺序存储记录的tuple元组,在tuple元组中,不定长类型字段占用固定16字节空间;
[0021]在64K内存空间的末尾设置span空间,所述span空间表示块内内存碎片。
[0022]进一步的,读取数值的方法,首先解析tuple元组的位置字节,找到ZVarLenBufferMgr对象,根据offset,找到开始读取的位置;
[0023]假定ZVarLenBufferMgr存储64k的内存空间的数组为block,根据offset定位到读取首地址的公式为:
[0024][0025]%表示取余;valuePtr是存储的列值字节数组的首地址;
[0026]取ValuePtr的前8个字节,转化成long类型数值后获取到列值字节数组长度,然后顺序读取数组长度的字节,当64k内存空间读取到末尾,但是还尚未读取到数组长度的字节数时,继续读取block数组中的下一个64k内存空间,直至读取到数组长度的字节数,完成对列值的读取操作。
[0027]一种不定长类型时序数据存储处理装置,包括:至少一个存储器和至少一个处理器;
[0028]所述至少一个存储器,用于存储机器可读程序;
[0029]所述至少一个处理器,用于调用所述机器可读程序,执行一种不定长类型时序数据存储处理方法。
[0030]本专利技术的一种不定长类型时序数据存储处理方法及装置和现有技术相比,具有以下突出的有益效果:
[0031]本专利技术通过对不定长类型数据进行分析,并制定不同的存取策略,在内存的利用率和访问效率间做权衡,尽量减少内存碎片,并且尽量减少性能损耗。实现了时序数据存储引擎对不定长列值类型的支持,并且通过制定不同的存取策略提升内存利用率。
附图说明
[0032]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种不定长类型时序数据存储处理方法,其特征在于,时序数据存储引擎存储采集点采集的时序数据,采集的时序数据依据不同的采集点来源划分到不同的ZdataPoint对象中;所述ZdataPoint对象中包含若干Zblock,每个所述ZBlock存储一段时间内的时序数据,ZBlock之间时间段都没有交叉,每个ZBlock有一个或多个64K固定大小的内存空间,其中第一个用于存放定长类型数值,其他64k内存空间用于存放不定长数值;当第一个64k内存写满后,需要申请新的ZBlock对象,用来存储新的时序数据,ZBlock按照时间段的顺序依次排序,形成ZBlock数组;有一个后台的落盘线程,将已经写满的ZBlock中的时序数据落盘到磁盘中,落盘成功后在文件索引部追加这个时序数据块的信息记录。2.根据权利要求1所述的一种不定长类型时序数据存储处理方法,其特征在于,所述ZBlock对象中包含TSDataVector,存储记录的tuple元组数值,每个ZdataPoint对象中所有的tuple元组长度固定,tuple元组指一条记录的所有列数值依次排列存储形成的存储格式。3.根据权利要求2所述的一种不定长类型时序数据存储处理方法,其特征在于,所述ZBlock对象中还包含一个ZVarLenBufferMgr对象,所述ZVarLenBufferMgr对象会根据需要申请0到多个64k的内存空间,用于存放不定长类型的数值。4.根据权利要求3所述的一种不定长类型时序数据存储处理方法,其特征在于,针对不定长类型VARBINARY的最大长度MAX_LEN的差异,制定不同的存储策略,当MAX_LEN<255时,TSDataVector使用一个完整的64k的内存空间存储,依次顺序存储记录的tuple元组,在64K内存空间的末尾设置span空间,所述span空间表示块内内存碎片。5.根据权利要求4所述的一种不定长类型时序数据存储处理方法,其特征在于,当正在插入的记录的tuple元组使用span内存空间时,说明当前ZBlock对象已经存储满了,需要创建新的ZBlock对象存放正在插入的这条记录。6.根据权利要求5所述的一种不定长类型时序...

【专利技术属性】
技术研发人员:梁波贾德星王永炎张炜刚
申请(专利权)人:上海沄熹科技有限公司
类型:发明
国别省市:

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

1