说明:收录25万 73个行业的国家标准 支持批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210484342.X (22)申请日 2022.05.06 (71)申请人 山东浪潮科 学研究院有限公司 地址 250100 山东省济南市高新浪潮路 1036号S02号楼 (72)发明人 梁波 贾德星  (74)专利代理 机构 济南信达专利事务所有限公 司 37100 专利代理师 孙园园 (51)Int.Cl. G06F 16/242(2019.01) G06F 16/2455(2019.01) G06F 16/172(2019.01) G06F 16/2458(2019.01) (54)发明名称 一种时序数据存 储和查询方法 (57)摘要 本发明公开了一种时序数据存储和查询方 法, 属于数据库技术领域, 本发明要解决的技术 问题为如何实现海量时序数据的高效存储和快 速入库, 同时提升查询操作的整体性能, 采用的 技术方案为: 该方法具体如下: 存储: 将 存储方式 分为内存存储和文件存储, 新写入的时序数据先 进入内存存储中暂存, 再落盘到文件存储中存 储; 查询: 将查询方式分为内存存储的数据查询 及文件存储的数据查询。 权利要求书4页 说明书10页 附图1页 CN 114896268 A 2022.08.12 CN 114896268 A 1.一种时序数据存 储和查询方法, 其特 征在于, 该 方法具体如下: 存储: 将存储方式分为内存存储和文件存储, 新写入的时序数据先进入内存存储中暂 存, 再落盘到文件 存储中存储; 查询: 将查询方式分为内存 存储的数据查询及文件 存储的数据查询。 2.根据权利要求1所述的时序数据存 储和查询方法, 其特 征在于, 存 储具体如下: 使用Meml ist数组和Fi lelist数组管理所有的时序数据; 当有新的时序数据插 入时, 先进入Meml ist数组中, 插 入操作完成; 有一个或多个后台线程将Memlist数组中已经规整完成的时序数据落盘形成文件, 落 盘后的时序数据由Fi lelist数组继续管理, Meml ist数组不再 管理。 3.根据权利要求2所述的时序数据存储和查询方法, 其特征在于, Memlist数组用于管 理在内存存储中的时序数据; Memlist数 组的空间容量在程序配置文件中定义; 在程序启动 时Memlist数组已经初始化完毕, 在程序执 行过程中, Meml ist数组的长度不会变; Memlist数组存储的是MetricVector对 象的指针, MetricVector对 象存储特定数量的 时序数据, 数量阈值可配置; MetricVector对象中有一个Blocks数组, Blocks数组中存储 Block内存块的指针; Blocks数组中包含若干Block, 每个Block内存块中顺序存储插入的时 序数据Metric,每个时序数据Metr ic的结构为时间戳和具体的value值, 通过追加的方式将 时序数据Metric写入到Block内存块中, 读操作时通过时序数据Metric的固定长度特性解 析出追加的每条记录; 其中, Bl ock内存块的大小是 可配置; Metric时序数据的结构还包括curOffset变量, curOffset变量用于计数正在插入的 Block内存块当前已经存 储的最新的时序数据的位置; 每当Block 内存块中的时序数据存满时, 程序向内存存储中重新申请一个新的Block 内 存块, 将curOffset变量指向新的Block内存块的第一个位置, 并且将新的Block内存块插入 数组Blocks中。 4.根据权利 要求2所述的时序数据存储和查询方法, 其特征在于, Filelist数组用于管 理已经落盘的时序数据; 按照文件生成 的时间顺序依次存储在Filelist数组中, Filelist 数组中存 储的文件 对象包括文件绝对路径、 文件的mi nTS、 maxTS及数据量; 将MetricVector对象中的时序数据按照时间顺序依次写入到文件存储中, 在文件的末 尾增加定长的footer信息, footer信息中包含minTS、 maxTS、 一个metric占用空间大小、 metric记录数量以及校验码。 5.根据权利要求1所述的时序 数据存储和查询方法, 其特征在于, 内存存储的数据查询 具体如下: S1、 定位se ekTS所在的Met ricVector; S2、 定位se ekTS在Met ricVector的Bl ock内存块; S3、 定位se ekTS在Block内存块的位置; S4、 返回位置: 返回Bl ock内存块中第i ndexOpt条记录的位置 。 6.根据权利要求5所述的时序数据存储和查询方法, 其特征在于, 定位seekTS所在的 MetricVector具体如下: S101、 设Memlist数组长度为L,Memlist数组中存储的时序数据最小时间戳为minTS, 最 大时间戳为maxTS; 待查询的时间点为seekTS, 查询seekTS存在于Memlist数组中第几个权 利 要 求 书 1/4 页 2 CN 114896268 A 2MetricVector中, 使用如下公式: S102、 计算出i ndex后, 判断i ndex是否等于 ‑1: ①、 若是, 则表示se ekTS的数据不在内存中; ②、 若否, 则执 行步骤S10 3; S103、 判断seekTS是否在Memlist[index]这个MetricVector对象的minTS和maxTS区间 中: ①、 若是, 则跳转至步骤S10 5; ②、 若否, 则执 行步骤S104; S104、 进行一次i ndex加一或减一的微调, 公式如下: 其中, minTS和maxTS指Memlist[index]这个MetricVector对象中时序数据的最小时间 戳和最大时间戳; i ndexOpt指微调后的i ndex; S105、 确定继续定位的Met ricVector对象。 7.根据权利要求5所述的时序数据存储和查询方法, 其特征在于, 定位seekTS在 MetricVector的Bl ock内存块具体如下: S201、 设MetricVector中数组Blocks长度为L,MetricVector中存储的时序数据最小时 间戳为minTS, 最大时间戳为maxTS; 待查询的时间点为seekTS, 查询seekTS 存在于Blocks中 第几个Bl ock中, 使用如下公式: S202、 计算出index后, 判断seekTS是否在Blocks[index]这个Block的minTS和maxTS区 间中: ①、 若是, 则跳转至步骤S204; ②、 若否, 则执 行步骤S20 3、 S203、 进行一次i ndex加一或减一的微调, 微调公式如下: 其中, minTS和maxTS指Blocks[index]这个B lock中时序数据的最小时间戳和最大时间 戳, indexOpt指微调后的i ndex; S204、 确定继续定位的Bl ock内存块; 定位seekTS在Block内存块的位置具体如下: S301、 设Block内存块存储的时序数据的数据量为L,该Block内存块 中存储的时序数据 最小时间戳为minTS、 最大时间戳为maxTS; 待查询的时间点为seekTS, 查询seekTS是Block 中第几条记录, 公式如下:权 利 要 求 书 2/4 页 3 CN 114896268 A 3

.PDF文档 专利 一种时序数据存储和查询方法

文档预览
中文文档 16 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共16页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种时序数据存储和查询方法 第 1 页 专利 一种时序数据存储和查询方法 第 2 页 专利 一种时序数据存储和查询方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 00:11:32上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。