一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

时序数据库的架构方法、查询方法和时序数据库与流程

2022-04-09 05:32:09 来源:中国专利 TAG:


1.本发明涉及时序数据库技术领域,更为具体的,涉及一种时序数据库的架构方法、查询方法和时序数据库。


背景技术:

2.目前时序数据库存储结构主要采用b-tree、b tree、lsm-stree。以lsm-tree为例,lsm-tree其核心思想是充分利用了磁盘批量的顺序写远比随机写性能高很多的原理设计的,这种结构的写入全部是以append的模式追加,不存在删除和修改,这种结构虽然大大弥补了b tree的数据写入能力,但却是以牺牲部分读取性能为代价。


技术实现要素:

3.本发明的目的在于克服现有技术的不足,提供一种时序数据库的架构方法、查询方法和时序数据库,可以有效减少i/o操作,提高数据库查询性能等。
4.本发明的目的是通过以下方案实现的:
5.一种时序数据库的架构方法,包括步骤:
6.s1,根据时序数据本身自带顺序的特点,保留顺序写;
7.s2,按时间颗粒度进行统计信息分层,每一层之间直接访问,无需返回根节点或上层节点,所述统计信息按统一的数据块来进行管理。
8.进一步地,步骤s2基于如下框架实现:
9.最底层为data-page层,每个数据块中有多条记录;按颗粒度从小到大依次往上排列为second-chunk层、minute-chuck层、hour-chunk层、root层、partition层;在second-chunk层、minute-chuck层和hour-chunk层,记录分别以第一时间和第二时间为单位进行统计,统计出第一时间和第二时间内每个字段的特征值信息;同时,每条minute-chunk的记录会记下对应的第一时间内第一条data-page层记录所在的数据块的数据块号block no;每条hour-chunk记录也会记下对应的第二时间内第一条minute-chunk层记录所在的minute-chunk层数据块的数据块号block no;在root层,每一个hour-chunk block对应一条root记录,每条root记录只存放对应hour-chunk block中的第一条记录的时间最小值和这个hour-chunk block的数据块号block no。
10.进一步地,所述partition层的颗粒度根据需求调整。
11.进一步地,所述特征值信息包括最大值、最小值、平均值、数据量以及根据用户需求自定义聚合函数信息中的任一种或多种。
12.进一步地,所述第一时间设为分钟,所述第二时间设为小时。
13.一种基于如上所述架构方法的时序数据库查询方法,包括步骤:依据用户sql语句在框架对应层中快速抓取所需信息,针对不同颗粒度做的统计信息在数据写入时就已经形成,完成降采样查询。
14.一种基于如上所述架构方法的时序数据库查询方法,包括步骤:当要查询数据中
是否存在异常值时,直接根据最上层的记录即可判断下层是否有满足条件的,完成异常值查询。该实施方案可以快速定位异常值所在范围,降低查询所需时长,提高用户使用效率。
15.一种基于如上所述架构方法的时序数据库,包括可读存储介质和程序,基于可读存储介质运行程序实现所述框架。
16.本发明的有益效果是:
17.1、本发明实施例,可以有效减少i/o,提高数据库查询性能。
18.2、本发明实施例中,可以提高查询速度,可以实现按需返回;具体的,例如要获取分钟级的统计数据,应用本发明实施例可以直接从分钟级去拉取数据,不必下到源数据层,这样可以大大提升数据查询的速度。
19.3、应用本发明实施例的查询方案,在查询某个向量或几个向量出现异常值的数据,主要用于异常值快读定位,即所有数据都有可能查询,普通索引无法解决此类问题。
20.4、应用本发明实施例的查询方案,查询某个时间段内设备平均小时间段(时分秒)的平均值、最小值、最大值等,可以用于曲线图的绘制。
附图说明
21.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
22.图1为本发明实施例的时序数据库框架图;
23.图2为本发明实施例的步骤流程图;
24.data-page:原始数据层;
25.second-chunk:秒级层;
26.minute-chuck:分钟层;
27.hour-chunk:小时层;
28.partition:数据库会按照维度字段分为多个partition,每个partition中包含相同维度的不同数据;
29.chunk:一个partition分为多个chunk,每一个chunk都会记录相应时间范围内所有数据字段的范围及统计信息;
30.root:每一个hour-chunk block对应一条root记录,即root层管理着hour-chunk;
31.block-no:数据块号,快速定位数据所处位置;
32.tags:维度字段,用户在创建表时可以指定哪些字段为维度字段。
具体实施方式
33.本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
34.下面根据附图1~图2,对本发明解决的技术问题、技术构思、工作原理、工作过程和有益效果作进一步详细说明。
35.如图1~图2所示,本发明提出了一种时序数据库的架构方法、查询方法和时序数
据库,至少解决如下技术问题:减少i/o操作,有效提高查询性能。
36.在本发明方法实施例中,可以面向专用于存储管理时序的时序数据库,提出一种支持异常值快速查询的分层统计时序数据库架构方法。根据时序数据本身自带顺序的特点,保留了顺序写,并且按时间颗粒度进行统计信息分层,每一层之间可直接访问,无需返回根节点,或上层节点。统计信息按统一的块来进行管理,以此有效减少i/o操作。这样既解决了b tree写入性能低的问题,也解决了lsm-tree查询性能不足的问题。
37.在本发明的实施例中,具体可设计如下框架:
38.最底层为data-page层,每个数据块中有若干条记录。按颗粒度从小到大依次往上排列为second-chunk层,minute-chuck层,hour-chunk层,root层,partition层,上述层级颗粒度可根据需求调整。在second-chunk层,minute-chuck层,hour-chunk层,记录分别以分钟和小时为单位进行统计,统计出每分钟每小时内每个字段的最大值、最小值、平均值、数据量等信息(可根据用户需求自定义聚合函数)。同时,每条minute-chunk层的记录会记下对应的分钟内第一条data-page层记录所在的数据块的block no。每条hour-chunk记录也会记下对应的小时内第一条minute-chunk记录所在的minute-chunk层数据块的block no。在root层,每一个hour-chunk block对应一条root记录,每条root记录只存放对应hour-chunk block中的第一条记录的时间最小值和这个hour-chunk block的block no。
39.为证实本发明实施例提出的时序数据库框架,针对基于时间序列的数据的查询有性能上的明显提升,故在以下环境中进行了测试验证:
40.表1
[0041][0042]
表2
[0043]
[0044]
[0045][0046]
由上表的测试数据可以看出,在该架构方法下执行查询基于时间序列的数据,性能非常棒的。在本发明提供的架构方法之下,每次抓取数据,并非直接抓取原始数据,而是根据数据块中的第一条记录直接判定数据块所在位置,后直接获得数据所处位置,不会出现全部数据从头遍历的情况,查询统计信息则更加快速,可以根据每层的统计信息,直接获得数据,例如使用count(*)语句时,只需在houre-chunk层就可获得结果。
[0047]
在进行降采样查询时,可以依据用户sql语句在框架对应层中快速抓取所需信息,针对不同颗粒度做的统计信息在数据写入时就已经形成,完成降采样查询,降低复杂度,提升查询性能。
[0048]
在进行异常值查询时,要查询数据中是否存在异常值时,可以直接根据最上层的记录即可判断下层是否有满足条件的,快速定位异常值所在范围,降低查询所需时长,提高用户使用效率。
[0049]
实施例1:一种时序数据库的架构方法,包括步骤:
[0050]
s1,根据时序数据本身自带顺序的特点,保留顺序写;
[0051]
s2,按时间颗粒度进行统计信息分层,每一层之间直接访问,无需返回根节点或上层节点,所述统计信息按统一的数据块来进行管理。
[0052]
实施例2:在实施例1的基础上,步骤s2基于如下框架实现:
[0053]
最底层为data-page层,每个数据块中有多条记录;按颗粒度从小到大依次往上排列为second-chunk层、minute-chuck层、hour-chunk层、root层、partition层;在second-chunk层、minute-chuck层和hour-chunk层,记录分别以第一时间和第二时间为单位进行统计,统计出第一时间和第二时间内每个字段的特征值信息;同时,每条minute-chunk的记录会记下对应的第一时间内第一条data-page层记录所在的数据块的数据块号block no;每条hour-chunk记录也会记下对应的第二时间内第一条minute-chunk层记录所在的minute-chunk层数据块的数据块号block no;在root层,每一个hour-chunk block对应一条root记录,每条root记录只存放对应hour-chunk block中的第一条记录的时间最小值和这个hour-chunk block的数据块号block no。
[0054]
实施例3:在实施例2的基础上,所述partition层的颗粒度根据需求调整。
[0055]
实施例4:在实施例2的基础上,所述特征值信息包括最大值、最小值、平均值、数据
量以及根据用户需求自定义聚合函数信息中的任一种或多种。
[0056]
实施例5:在实施例2的基础上,所述第一时间设为分钟,所述第二时间设为小时。
[0057]
实施例6:在实施例2的基础上,一种基于如上所述架构方法的时序数据库查询方法,包括步骤:依据用户sql语句在框架对应层中快速抓取所需信息,针对不同颗粒度做的统计信息在数据写入时就已经形成,完成降采样查询。
[0058]
实施例7:在实施例2的基础上,一种基于如上所述架构方法的时序数据库查询方法,包括步骤:当要查询数据中是否存在异常值时,直接根据最上层的记录即可判断下层是否有满足条件的,完成异常值查询,可以快速定位异常值所在范围,降低查询所需时长,提高用户使用效率。
[0059]
实施例8:在实施例2的基础上,一种基于如上所述架构方法的时序数据库,包括可读存储介质和程序,基于可读存储介质运行程序实现所述框架。
[0060]
本发明功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,在一台计算机设备(可以是个人计算机,服务器,或者网络设备等)以及相应的软件中执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、或者光盘等各种可以存储程序代码的介质,进行测试或者实际的数据在程序实现中存在于只读存储器(random access memory,ram)、随机存取存储器(random access memory,ram)等。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献