首页> 中国专利> 一种基于多层次列式存储结构的时序数据存储方法

一种基于多层次列式存储结构的时序数据存储方法

摘要

本发明提供一种基于多层次列式存储结构的时序数据存储方法,将所有待存储时序数据存储于文件中,所述文件包括第一部分和第二部分;将每一待存储时序数据的获取时间和每一待存储时序数据的数据值存储于所述第一部分;将所述第一部分划分为若干个行组;将每一行组划分为若干个列组;将所有行组的个数、每一行组在文件的偏移量、每一行组中所有列组的个数、每一时序数据的属性值和每一列组在所述文件的偏移量作为所述第二部分。本方法对时序数据按列组织,将同一行组内的同一列的数据在文件中连续存储,从而使得被查询的数据在文件中处于相近的位置,可以减少查询时对时序数据的读取量,从而提高查询的速度,提高了磁盘的IO性能。

著录项

  • 公开/公告号CN108182244A

    专利类型发明专利

  • 公开/公告日2018-06-19

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201711461821.5

  • 申请日2017-12-28

  • 分类号

  • 代理机构北京路浩知识产权代理有限公司;

  • 代理人王莹

  • 地址 100084 北京市海淀区清华园北京100084-82信箱

  • 入库时间 2023-06-19 05:44:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-05

    授权

    授权

  • 2018-07-13

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20171228

    实质审查的生效

  • 2018-06-19

    公开

    公开

说明书

技术领域

本发明涉及计算机数据储存技术领域,更具体地,涉及一种基于多层次列式存储结构的时序数据存储方法。

背景技术

目前,随着云计算、互联网、物联网等现代技术的不断发展,数据发挥着越来越重要的作用。

数据来源于我们生活的方方面面,并正在迅速地膨胀变大——企业的生产交易数据、互联网中人与人的交互信息、物联网中传感器回传的监测数据等等。数据的产生速度越来越快,数据量也越来越大,随之而来的便是数据如何存储以及对现有数据如何进行快速查询的问题。

工业领域自动化与信息化应用对时序数据的使用越来越多,时序数据通常由机器传感器产生,已经成为工业大数据中的主要数据格式。其存储与查询问题已经成为工业大数据研究中的一项重点内容。

传统的关系型数据库例如Oracle数据库、DB2等多被应用于低频存取的机器数据场景,其底层通常采用的是行式存储的文件格式。这种行式存储的文件格式对于时序数据格式没有原生的支持,数据的写入性能距机器大数据系统的要求差距较大。同时在存储空间方面,由于不能对数据进行有效地压缩编码,其对空间的要求也较高,尤其是在数据库建立相关索引之后,其数据大小会膨胀为原大小的数倍。所以行式存储的文件格式在存储时序数据的时候具有先天的劣势。所以,结合时序数据的结构特点及工业大数据中对时序数据的应用方式,列式存储的文件格式更加适用于海量时序数据的存储。

然而,现有的列式存储系统仅仅将每列单独存储,没有考虑到对于时序数据,存在如下不足:时间列与相应的值列是被同时操作的,现有的列式存储中每列单独存储,导致磁盘IO性能下降;若干个时序数据可能是由同一个物联网设备产生的,因此这些时序数据被同时读写的概率也较大,现有的列式存储中每个时序数据单独存储,导致磁盘IO性能下降。

基于以上两个方面可知,现有的列式存储系统的不足之处在于:磁盘IO性能不高。

发明内容

本发明提供一种克服上述问题或者至少部分地解决上述问题的一种基于多层次列式存储结构的时序数据存储方法。

根据本发明的一个方面,提供一种时序数据存储方法,包括:将所有待存储时序数据存储于文件中,所述文件包括第一部分和第二部分;将每一待存储时序数据的获取时间和每一待存储时序数据的数据值存储于所述第一部分;将所述第一部分划分为若干个行组,每一行组包括若干个待存储时序数据;将每一行组划分为若干个列组,每一列组包括若干个待存储时序数据;将所有行组的个数、每一行组在文件的偏移量、每一行组中所有列组的个数、每一时序数据的属性值和每一列组在所述文件的偏移量作为所述第二部分。

优选地,将所述第一部分划分为若干个行组,具体包括:根据所有待存储时序数据所占的内存空间和每个行组的预设容量,将所述第一部分划分为k个行组,k≥1,k为整数。

优选地,还包括:将所有待存储时序数据分为n个时间序列,对于任一时间序列,将所述任一时间序列中所有的待存储时序数据分为k个子序列,并对每一子序列进行编号,每一时间序列包括若干个时序数据,每一子序列包括若干个时序数据,n≥1,n为整数;对于任一行组,所述任一行组包括每一时间序列中第i个子序列,i为所述任一行组的编号,1≤i≤k,i为整数。

优选地,将每一行组划分为若干个列组,具体包括:将每一行组划分为n个列组,对于所述任一行组中的任一列组,对所述任一行组中的所有列组进行编号,将所述任一行组中第j个子序列作为所述任一列组,j为所述任一列组的编号,1≤j≤n,j为整数。

优选地,所述任一列组包括第一子列组和第二子列组,相应地,具体包括:将所述第j个子序列中每一待存储时序数据的获取时间作为所述第一子列组;将所述第j个子序列中每一待存储时序数据的数据值作为所述第二子列组。

优选地,所述任一列组为列存储。

优选地,还包括:分别对所述第一子列组和所述第二子列组进行压缩编码。

根据本发明的另一个方面,提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行一种时序数据存储方法。

根据本发明的又一个方面,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行一种时序数据存储方法。

本发明提出一种基于多层次列式存储结构的时序数据存储方法,对时序数据按列组织,将同一行组内的同一列的数据在文件中连续存储,从而使得被查询的数据在文件中处于相近的位置,可以减少查询时对时序数据的读取量,从而提高查询的速度,提高了磁盘的IO性能。另外,本发明有效减少数据的存储空间。该文件格式在对时序数据进行存储时,将会按照时序数据的类型,对其进行数据编码和压缩,从而较大地减少了存储空间的使用。

附图说明

图1为本发明实施例一种基于多层次列式存储结构的时序数据存储方法的流程图;

图2为本发明又一实施例一种基于多层次列式存储结构的时序数据存储方法中目标存储格式的示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

图1为本发明实施例一种基于多层次列式存储结构的时序数据存储方法的流程图,如图1所示,该方法包括:将所有待存储时序数据存储于文件中,所述文件包括第一部分和第二部分;将每一待存储时序数据的获取时间和每一待存储时序数据的数据值存储于所述第一部分;将所述第一部分划分为若干个行组,每一行组包括若干个待存储时序数据;将每一行组划分为若干个列组,每一列组包括若干个待存储时序数据;将所有行组的个数、每一行组在文件的偏移量、每一行组中所有列组的个数、每一时序数据的属性值和每一列组在所述文件的偏移量作为所述第二部分。

需要说明的是,时序数据是指时间序列数据,同一统一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,也可以时点数。例如某个设备的某个传感器按照一定频率产生的数据,每个时序数据包括时间和数值,时间是指获得或者生产该时序数据的时间,数值是指该传感器的测量值。

首先将所有待存储时序数据按照目标存储格式进行存储,目标存储格式包括两部分,第一部分包括每个待存储时序数据的时间和数值,第二部分包括每个待存储时序数据的元数据。

还需要说明的是,元数据又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。

本发明实施例提出一种基于多层次列式存储结构的时序数据存储方法,分别存储时序数据的原始数据和元数据信息。原始数据先按照行组进行划分,然后再按照列进行划分,每列对应一个时间序列,列内时间和数值分别连续存储。本发明实施例提出的存储方法,能够使待存储时序数据对应的文件支持自解析,可以与主流的计算平台进行集成;能够通过数据编码压缩较大的节省存储空间,并提升数据的查询速度,提高了磁盘的IO性能。

在上述实施例的基础上,优选地,将所述第一部分划分为若干个行组,具体包括:根据所有待存储时序数据所占的内存空间和每个行组的预设容量,将所述第一部分划分为k个行组,k≥1,k为整数。

在上述实施例的基础上,优选地,还包括:将所有待存储时序数据分为n个时间序列,对于任一时间序列,将所述任一时间序列中所有的待存储时序数据分为k个子序列,并对每一子序列进行编号,每一时间序列包括若干个时序数据,每一子序列包括若干个时序数据,n≥1,n为整数;对于任一行组,所述任一行组包括每一时间序列中第i个子序列,i为所述任一行组的编号,1≤i≤k,i为整数。

具体地,根据待存储时序数据的逻辑关系,将所有的待存储时序数据分为预设数值个时间序列。例如,可以将同一个设备中不同传感器采集的时序数据划分为一个时间序列,也可以将同业个设备中相同的传感器采集的时序数据划分为一个时间序列,具体的划分方法可以根据实际情况而定,本发明实施例在此不做具体的限定。

本发明实施例有效减少时序数据的存储空间。该方法对数据进行存储时,将会按照时序数据的类型,对其进行时序数据编码和压缩,从而较大地减少了存储空间的使用。

在上述实施例的基础上,优选地,将每一行组划分为若干个列组,具体包括:将每一行组划分为n个列组,对于所述任一行组中的任一列组,对所述任一行组中的所有列组进行编号,将所述任一行组中第j个子序列作为所述任一列组,j为所述任一列组的编号,1≤j≤n,j为整数。

在上述实施例的基础上,优选地,所述任一列组包括第一子列组和第二子列组,相应地,具体包括:将所述第j个子序列中每一待存储时序数据的获取时间作为所述第一子列组;将所述第j个子序列中每一待存储时序数据的数据值作为所述第二子列组。

在上述实施例的基础上,优选地,所述任一列组为列存储。

在上述实施例的基础上,优选地,还包括:对所述第一子列组和所述第二子列组进行压缩编码。

本发明实施例提高分析性查询的速度。该方法在对时序数据进行存储时,对时序数据按列组织,将同一行组内的同一列的时序数据在文件中连续存储,从而使得被查询的数据在文件中处于相近的位置,可以较少查询时对数据的读取量,从而提高查询的速度。

在上述实施例的基础上,优选地,所述第二部分包括:所有的行组个数、每一行组的偏移量、每一行组中列组的个数、每一列组中每一时序数据的元数据和每一列组的偏移量。

本发明实施例提出的存储方法具有高度的适配性。使得待存储的时序数据自身会维护自己的元数据信息,并提供时序数据的读取和写入接口,可自解析。所以,目标存储格式可以与主流的数据计算平台例如Hive、Spark等进行适配集成。

图2为本发明又一实施例一种基于多层次列式存储结构的时序数据存储方法中目标存储格式的示意图,如图2所示,所有的待存储时序数据划分为N个时间序列,同一个时间序列中的全部待存储时序数据按照行划分为多个行组,行组内部按照列划分为多个列组,每个列组对应一个时间序列。

对于N个时间序列,其编号以此为L1、L2、L3、……、LN。每个时间序列由多个时序时间序列成,每个时序数据包含两个字段,即时间和数值。

那么,行组的划分方法为:

(1)、根据所有的待存储时序数据所占的内存空间和每个行组的预设容量,确定所述第一部分中行组的个和每一行组的序号。假设行组的个数为k。

(2)将每个时间序列划分为k个子序列,每个子序列中的时序数据个数相等。为了方便说明,第一个时间序列中的所有时序数据划分为k个子序列,每个子序列的编号以此为L11、L12、……、L1k,第二个时间序列中的所有时序数据划分为k个子序列,每个子序列的编号以此为L21、L22、……、L2k,对每个时间序列都做相同的处理,将第N个时间序列中的所有时序数据划分为k个子序列,每个子序列的编号以此为LN1、LN2、……、LNk

(3)每个行组中将包含每个时间序列中所有时序数据的一个子序列。第一个行组将包含每个时间序列中编号为1的子序列,第二个时间序列中将包含每个时间序列中编号为2的子序列,以此类推,第k个行组中将包含每个时间序列中第k个子序列。即,第一个行组由L11、L21、L31、……、LN1,第二个行组由L12、L22、L32、……、LN2,第k个行组由L1k、L2k、L3k、……、LNk

(4)、在每个行组内部,每个列组存储该行组中的一个子序列。以第一个行组内的N个列组为例,第一个列组存储该行组中的第一个子序列L11,第二个列组存储该行组中的第二个子序列L21,以此类推,第N个列组存储该行组中的第N个子序列LN1

(5)、在一个列组内部,所有子序列中的时序数据的时间连续存储在第一子列组中,所有子序列中的时序数据的数值连续存储在第二子列组中。

(6)、第一子列组和第二子列组均可按照数据类型进行数据编码。

本发明另一实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:将所有待存储时序数据存储于文件中,所述文件包括第一部分和第二部分;将每一待存储时序数据的获取时间和每一待存储时序数据的数据值存储于所述第一部分;将所述第一部分划分为若干个行组,每一行组包括若干个待存储时序数据;将每一行组划分为若干个列组,每一列组包括若干个待存储时序数据;将所有行组的个数、每一行组在文件的偏移量、每一行组中所有列组的个数、每一时序数据的属性值和每一列组在所述文件的偏移量作为所述第二部分。

本发明再一实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:将所有待存储时序数据存储于文件中,所述文件包括第一部分和第二部分;将每一待存储时序数据的获取时间和每一待存储时序数据的数据值存储于所述第一部分;将所述第一部分划分为若干个行组,每一行组包括若干个待存储时序数据;将每一行组划分为若干个列组,每一列组包括若干个待存储时序数据;将所有行组的个数、每一行组在文件的偏移量、每一行组中所有列组的个数、每一时序数据的属性值和每一列组在所述文件的偏移量作为所述第二部分。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号