1 .一种时序数据存储和查询方法,其特征在于,该方法具体如下:
存储:将存储方式分为内存存储和文件存储,新写入的时序数据先进入内存存储中暂
存,再落盘到文件存储中存储;
查询:将查询方式分为内存存储的数据查询及文件存储的数据查询。
2.根据权利要求1所述的时序数据存储和查询方法,其特征在于,存储具体如下:
使用Memlist数组和Filelist数组管理所有的时序数据;
当有新的时序数据插入时,先进入Memlist数组中,插入操作完成;
有一个或多个后台线程将Memlist数组中已经规整完成的时序数据落盘形成文件,落
盘后的时序数据由Filelist数组继续管理,Memlist数组不再管理。
3 .根据权利要求2所述的时序数据存储和查询方法,其特征在于,Memlist数组用于管
理在内存存储中的时序数据;Memlist数组的空间容量在程序配置文件中定义;在程序启动
时Memlist数组已经初始化完毕,在程序执行过程中,Memlist数组的长度不会变;
Memlist数组存储的是MetricVector对象的指针,MetricVector对象存储特定数量的
时序数据,数量阈值可配置;MetricVector对象中有一个Blocks数组,Blocks数组中存储
Block内存块的指针;Blocks数组中包含若干Block,每个Block内存块中顺序存储插入的时
序数据Metric ,每个时序数据Metric的结构为时间戳和具体的value值,通过追加的方式将
时序数据Metric写入到Block内存块中,读操作时通过时序数据Metric的固定长度特性解
析出追加的每条记录;其中,Block内存块的大小是可配置;
Metric时序数据的结构还包括curOffset变量,curOffset变量用于计数正在插入的
Block内存块当前已经存储的最新的时序数据的位置;
每当Block内存块中的时序数据存满时,程序向内存存储中重新申请一个新的Block内
存块,将curOffset变量指向新的Block内存块的第一个位置,并且将新的Block内存块插入
数组Blocks中。
4 .根据权利要求2所述的时序数据存储和查询方法,其特征在于,Filelist数组用于管
理已经落盘的时序数据;按照文件生成的时间顺序依次存储在Filelist数组中,Filelist
数组中存储的文件对象包括文件绝对路径、文件的minTS、maxTS及数据量;
将MetricVector对象中的时序数据按照时间顺序依次写入到文件存储中,在文件的末
尾增加定长的footer信息,footer信息中包含minTS、maxTS、一个metric占 用空间大小、
metric记录数量以及校验码。
5 .根据权利要求1所述的时序数据存储和查询方法,其特征在于,内存存储的数据查询
具体如下:
S1、定位seekTS所在的MetricVector;
S2、定位seekTS在MetricVector的Block内存块;
S3、定位seekTS在Block内存块的位置;
S4、返回位置:返回Block内存块中第indexOpt条记录的位置。
6 .根据权利要求5所述的时序数据存储和查询方法,其特征在于,定位seekTS所在的
MetricVector具体如下:
S101、设Memlist数组长度为L ,Memlist数组中存储的时序数据最小时间戳为minTS,最
大时间戳为maxTS;待查询的时间点为seekTS,查询seekTS存在于Memlist数组中第几个
权 利 要 求 书
1/4 页
2
相关文档
评论