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

时序数据的存储及读取方法、装置、设备及存储介质与流程

2022-07-31 05:51:36 来源:中国专利 TAG:


1.本技术涉及云存储技术领域,尤其涉及一种时序数据的存储及读取方法、装置、设备及存储介质。


背景技术:

2.时序数据是一种按照时间顺序记录的数据序列,每一个数据点都会包含时间戳和数值,存储每个数据点都需要16bytes的空间,其中,时间戳8b,数值8b。随着时间跨度增大,需要存储的数据点也会越来越多。
3.目前主流的时序数据库在存储时都对数据点进行一系列的压缩,尽可能地节省存储空间。比如:对时间维度采用delta-delta压缩算法,对数值采用xor压缩算法,通常情况下能够达到11倍的压缩比,但是压缩比受到时间维度和数值的双重影响,在某些情况下并不能达到理想的压缩比,占用存储空间较大。


技术实现要素:

4.本技术提供了一种时序数据的存储及读取方法、装置、设备及存储介质,用以解决现有技术中,时序数据占用存储空间较大的技术问题。
5.第一方面,本技术提供了一种时序数据的存储方法,包括:
6.获取各个待存储的时序数据值及获取每个所述时序数据值各自对应的时间戳;其中,任意相邻时序数据值的时间戳的时间差值均相同;
7.从各个所述时间戳中,提取参照时间戳;
8.对于每个所述时序数据值,计算所述时序数据值对应的所述时间戳与目标时间戳之间的偏移量;其中,所述目标时间戳为所述参照时间戳,或者,与所述时间戳相邻的时间戳;
9.对应存储所述参照时间戳和各所述偏移量,并对各所述时序数据值进行压缩存储;且每个所述偏移量与所述偏移量对应的压缩后的时序数据值对应存储。
10.可选的,所述计算所述时序数据值对应的所述时间戳与目标时间戳之间的偏移量,包括:
11.计算所述时序数据值对应的所述时间戳和所述目标时间戳之间的时间差值;
12.利用所述时间差值除以所述时序数据的采集周期,得到所述时序数据的时间戳相对于所述目标时间戳的偏移量。
13.可选的,所述获取每个所述时序数据值各自对应的时间戳,包括:
14.获取采集每个所述时序数据值时的实际采集时间戳;
15.判断任意相邻时序数据值的实际采集时间戳之间的时间差值是否相同;
16.如果是,则将所述实际采集时间戳作为所述时序数据值对应的时间戳;
17.如果否,则对每个所述时序数据值的实际采集时间戳进行规整,将规整后的时间戳作为所述时序数据对应的时间戳。
18.可选的,所述对每个所述时序数据值的实际采集时间戳进行规整,包括:
19.获取所述时序数据值的采集周期;
20.利用所述实际采集时间戳对所述采集周期取整,得到规整后的时间戳。
21.可选的,所述从各个所述时间戳中,提取参照时间戳,包括:
22.从各个所述时间戳中,提取最早时间戳作为所述参照时间戳;
23.或者,提取最晚时间戳作为所述参照时间戳;
24.或者,提取中间位置的时间戳作为所述参照时间戳。
25.可选的,所述对应存储所述参照时间戳和各所述偏移量,并对各所述时序数据值进行压缩存储,包括:
26.以所述参照时间戳和采集周期为标识,存储与所述参照时间戳对应的目标时序数据值以及目标偏移量;
27.对于除所述目标时序数据值之外的其余时序数据值中的每一个,计算每个所述时序数据值与所述时序数据值的前一个时序数据值之间的异或运算结果;根据所述异或运算结果对所述时序数据值进行压缩,得到压缩结果;并按序将所述偏移量与所述压缩结果对应存储。
28.可选的,所述根据所述异或运算结果对所述时序数据值进行压缩,包括:
29.若所述异或运算结果为0,则将所述时序数据值压缩为第一预设值,将所述第一预设值作为所述压缩结果;
30.否则,获取所述异或运算结果中前导零和后缀零的个数;如果所述前导零和所述后缀零的个数相同,则确定所述时序数据值压缩后的控制位的值为第一预设控制位值;并提取所述前导零和所述后缀零之间的第一有效位部分,将所述时序数据压缩为第二预设值、所述第一预设控制位值和所述第一有效位部分组成的第一压缩数据;将所述第一压缩数据作为所述压缩结果;
31.如果所述前导零和所述后缀零的个数不同,则确定所述时序数据值压缩后的控制位的值为第二预设控制位值,并提取所述前导零的个数、所述前导零和所述后缀零之间的第二有效位部分以及所述第二有效位部分的位数,将所述时序数据压缩为第二预设值、第二预设控制位值、所述前导零的个数、所述位数以及所述第二有效位部分组成的第二压缩数据;将所述第二压缩数据作为所述压缩结果。
32.第二方面,本技术实施例提供了一种时序数据的读取方法,包括:
33.获取压缩后的时序数据序列;
34.对所述压缩后的时序数据序列进行解压缩,得到各时序数据值;
35.对于每个所述时序数据值,获取所述时序数据值对应的参照时间戳和偏移量;根据所述参照时间戳和所述偏移量,确定所述时序数据值对应的时间戳。
36.可选的,所述根据所述参照时间戳和所述偏移量,确定所述时序数据值对应的时间戳,包括:
37.获取所述时序数据值对应的采集周期;
38.计算所述采集周期和所述偏移量的乘积,并加上所述参照时间戳,得到所述时序数据对应的时间戳。
39.第三方面,本技术实施例提供了一种时序数据的存储装置,包括:
40.第一获取模块,用于获取各个待存储的时序数据值及获取每个所述时序数据值各自对应的时间戳;其中,任意相邻时序数据值的时间戳的时间差值均相同;
41.提取模块,用于从各个所述时间戳中,提取参照时间戳;
42.计算模块,用于对于每个所述时序数据值,计算所述时序数据值对应的所述时间戳与目标时间戳之间的偏移量;其中,所述目标时间戳为所述参照时间戳,或者,与所述时间戳相邻的时间戳;
43.存储模块,用于对应存储所述参照时间戳和各所述偏移量,并对各所述时序数据值进行压缩存储;且每个所述偏移量与所述偏移量对应的压缩后的时序数据值对应存储。
44.第四方面,本技术实施例提供了一种时序数据的读取装置,包括:
45.第二获取模块,用于获取压缩后的时序数据序列;
46.解压缩模块,用于对所述压缩后的时序数据序列进行解压缩,得到各时序数据值;
47.确定模块,用于对于每个所述时序数据值,获取所述时序数据值对应的参照时间戳和偏移量;根据所述参照时间戳和所述偏移量,确定所述时序数据值对应的时间戳。
48.第五方面,本技术提供了一种电子设备,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;所述存储器,用于存储计算机程序;所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的时序数据的存储方法或第二方面所述的时序数据的读取方法。
49.第六方面,本技术提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的时序数据的存储方法或第二方面所述的时序数据的读取方法。
50.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:本技术实施例提供的该方法,从各时间戳中,提取参照时间戳,计算每个时序数据值对应的时间戳与目标时间戳之间的偏移量;其中,所述目标时间戳为所述参照时间戳,或者,与所述时间戳相邻的时间戳;对应存储参照时间戳和各偏移量,并对各时序数据值进行压缩存储。在存储时序数据时,利用偏移量来代替时间戳,剔除时间维度对数据压缩比的影响,使得压缩比更高,占用存储空间更小,存储成本更低。
附图说明
51.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
52.图1为本技术实施例提供的一种时序数据的存储方法的流程示意图;
53.图2为本技术实施例提供的对时间戳进行规整的示意图;
54.图3为本技术实施例提供的存储偏移量的示意图;
55.图4为本技术实施例提供的对时序数据进行压缩存储的方法的流程示意图;
56.图5为本技术实施例提供的对时序数据进行分段的示意图;
57.图6为本技术实施例提供的压缩后的时序数据的示意图;
58.图7为本技术实施例提供的时序数据的存储方法的示意图;
59.图8为本技术实施例提供的一种时序数据的读取方法的流程示意图;
60.图9为本技术实施例提供的一种时序数据的存储装置的结构示意图;
61.图10为本技术实施例提供的一种时序数据的读取装置的结构示意图;
62.图11为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
63.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
64.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
65.为了解决现有技术中,压缩比不够理想,导致占用存储空间较大的技术问题,本技术实施例提供了一种时序数据的存储方法,如图1所示,具体包括如下步骤:
66.步骤101,获取各个待存储的时序数据值及获取每个时序数据值各自对应的时间戳;其中,任意相邻时序数据值的时间戳的时间差值均相同;
67.时序数据通常是利用固定的采集周期来采集的,每个时序数据包括:时间戳和时序数据的数值,即时序数据值。时间戳指采集时序数据值时的采集时间。
68.但是,在具体实现时,采集过程可能受到周期任务或者系统负载等方面的影响,导致采集到数据的具体时间可能存在少许误差,则需要对每个时序数据值对应的时间戳进行规整,使得任意相邻的两个时序数据值对应时间戳之间的时间差值均相同;
69.其中,在具体实现时,获取每个时序数据值各自对应的时间戳,包括:获取采集每个时序数据值时的实际采集时间戳;判断任意相邻时序数据值的实际采集时间戳之间的时间差值是否相同;如果是,则将实际采集时间戳作为时序数据值对应的时间戳;如果否,则对每个时序数据值的实际采集时间戳进行规整,将规整后的时间戳作为时序数据对应的时间戳。
70.其中,将时间戳进行规整是指将时序数据的时间戳调整为采集周期的整数倍。具体的,获取时序数据值的采集周期;利用实际采集时间戳对采集周期取整,得到规整后的时间戳。规整后,任意相邻的两个时序数据值对应的规整后的时间戳之间的时间差值均相同,且均为采集周期。
71.为了便于理解,这里举例说明:需要采集当前系统运行的进程数,若采集周期是1分钟,理论上将每间隔1分钟就会产生一个时序数据值,但是,采集过程可能受到周期任务或者系统负载等方面的影响,采集到的时序数据值的具体时间(即时间戳)可能存在些许误差,需要对每个数据的时间戳进行规整,最终得到每整分钟对应的时间戳。
72.如图2所示,以采集周期为1分钟为例,由于周期任务或系统负载等方面因素的影响,第一个数据的时间戳是2021-09-01 09:00:02,规整后的时间戳为2021-09-01 09:00:00;第二个数据的时间戳是2021-09-01 09:01:05,规整后的时间戳为2021-09-01 09:01:00;第三个数据的时间戳是2021-09-01 09:02:01,规整后的时间戳为2021-09-01 09:02:00。此外,图2中,每个数据的时间戳对应的数值为该时序数据值,例如:第一个数据的数值为12,则以规整后的时间戳为例,第一个时序数据的含义是:采集时刻为2021-09-01 09:00:00,在2021-09-01 09:00:00这一采集时刻,系统运行的进程数为12。对于其他时序数据的含义的理解,请参见第一个时序数据,这里不再展开描述。
73.步骤102,从各个时间戳中,提取参照时间戳;
74.其中,参照时间戳可以是各个时间戳中的任意一个时间戳,例如:最早时间戳,也可以是最晚时间戳,或者,按照时间先后顺序排列后,中间位置的时间戳。
75.在具体实现时,优选的,将各个时间戳按照时间先后顺序排序后,从中提取最早时间戳,作为参照时间戳。
76.步骤103,对于每个时序数据值,计算时序数据值对应的时间戳与目标时间戳之间的偏移量;其中,目标时间戳为参照时间戳,或者,与时间戳相邻的时间戳;
77.其中,偏移量用于在存储时序数据时,该时序数据与目标时间戳对应的时序数据之间的相对位置关系。相邻的时间戳可以是前一个时间戳,也可以是后一个时间戳。在具体实现时,可以按照时间先后顺序将各时间戳进行排序,然后再计算偏移量。
78.具体的,计算时序数据值对应的时间戳和目标时间戳之间的时间差值;利用时间差值除以时序数据的采集周期,得到时序数据的时间戳相对于目标时间戳的偏移量。
79.总结起来,每个时序数据的偏移量的计算公式为:偏移量=(时间戳-目标时间戳)/采集周期。
80.以参照时间戳为最早时间戳为例,每个时序数据的偏移量的计算公式为:偏移量=(时间戳-最早时间戳)/采集周期。
81.通常,各个时序数据是按照时间先后顺序排列的,但是在网络状态不稳定的情况下,在获取时序数据时,有可能出现,后面的时序数据的位置出现在前面的情况,因此,在提取最早时间戳时,可以将各个规整后的时间戳按照时间的先后顺序进行排序,从而确定最早时间戳。其中,偏移量用于确定存储时序数据时,该时序数据与最早时间戳对应的时序数据之间的相对位置关系。
82.为了便于理解,这里举例说明,如图3所示,图3中示出了从开始时间(start time)2021-09-01 09:00:00到结束时间(end time)2021-09-01 09:59:00采集的时序数据,图3中,header代表表头,采集周期为1分钟,即图3中的interval为60秒,如果第一个时序数据值对应的规整后的时间戳是2021-09-01 09:00:00,且该时间戳也是最早时间戳;第二个时序数据值对应的规整后的时间戳为2021-09-01 09:01:00;第三个时序数据值对应的规整后的时间戳为2021-09-01 09:02:00;则根据上述偏移量的计算公式,第二个时序数据值的偏移量为(2021-09-01 09:01:00-2021-09-01 09:00:00)/1分钟=1,则第二个时序数据值的偏移量(index)为1;第三个时序数据值的偏移量为(2021-09-01 09:02:00-2021-09-01 09:00:00)/1分钟=2,则第二个时序数据值的偏移量为2,以此类推,可以得到各个时序数据值相对于最早时间戳的偏移量,从而确定后续压缩存储时,各个时序数据与最早时间戳对应的时序数据的相对位置。
83.在本技术实施例中,按照数据采集周期规整数据点的时间戳,可以根据开始时间(最早时间戳)、采集周期直接计算出对应数值的偏移量,用偏移量代替时间戳,不仅降低了存储空间,而且后续的查询效率更高。
84.步骤104,对应存储参照时间戳和各偏移量,并对各时序数据值进行压缩存储;且每个偏移量与偏移量对应的压缩后的时序数据值对应存储。
85.存储时序数据时,并不存储时序数据值对应的时间戳,而是存储时序数据值对应的偏移量,通过记录参照时间戳和偏移量,在读取数据时,能够确定时序数据值对应的时间
戳。在本技术实施例中,在对时序数据进行压缩存储时,剔除了时间戳,以偏移量来表示时间维度的数值,更加节约空间。
86.在本技术实施例中,从各时间戳中,提取参照时间戳,计算每个时序数据值对应的时间戳与目标时间戳之间的偏移量;其中,目标时间戳为参照时间戳,或者,与时间戳相邻的时间戳;对应存储参照时间戳和各偏移量,并对各时序数据值进行压缩存储。在压缩存储时序数据时,利用偏移量来代替时间戳,剔除时间维度对数据压缩比的影响,使得压缩比更高,占用存储空间更小,存储成本更低。
87.在一个具体实施例中,可以利用异或压缩算法(xor算法),对各时序数据值进行压缩存储,如图4所示,具体压缩方法包括如下步骤:
88.步骤401,以参照时间戳和采集周期为标识,存储与参照时间戳对应的目标时序数据以及目标偏移量;
89.具体实现时,将标识部分存储在表头,表头数据存储一次即可,时序数据值和偏移量存储在该表头之后。通过参照时间戳、采集周期和偏移量,能够计算得到各时序数据值对应的时间戳。对于参照时间戳的目标时序数据直接存储,不做压缩,对其余时序数据值做压缩,请参见步骤402。
90.步骤402,对于除目标时序数据值之外的其余时序数据值中的每一个,计算每个时序数据值与时序数据值的前一个时序数据值之间的异或运算结果;根据异或运算结果对时序数据值进行压缩,得到压缩结果;并按序将偏移量与压缩结果对应存储。
91.以参照时间戳为最早时间戳为例,对于最早时间戳对应的时序数据(即第一个时序数据)的数值直接存储,不做任何压缩,最早时间戳对应的目标偏移量为0。对于后面产生的数据做压缩存储。
92.具体的,若异或运算结果为0,则将时序数据值压缩为第一预设值,将第一预设值作为压缩结果;
93.异或运算的结果为0,说明当前时序数据值与前一个时序数据值相同,则在压缩存储时,只用1bit来表示,例如:用“0”来表示,即将当前时序数据压缩为“0”,仅占用1bit,大大降低了数据的存储空间。在具体实现时,将该时序数据的偏移量和压缩结果“0”对应存储。
94.否则,获取异或运算结果中前导零和后缀零的个数;如果前导零和后缀零的个数相同,则确定时序数据值压缩后的控制位的值为第一预设控制位值;并提取前导零和后缀零之间的第一有效位部分,将时序数据压缩为第二预设值、第一预设控制位值和第一有效位部分组成的第一压缩数据;将第一压缩数据作为压缩结果;
95.其中,前导零个数是指从异或结果的最高位开始数,到第一个“1”之前的零的个数;后缀零的个数指从异或结果的最低位开始数,到第一个“1”之前的零的个数。为了便于理解,举例说明,例如:当前时序数据和前一个时序数据的异或运算结果为“00100000 00010000”,则从前面数(最高位),第一个“1”位于第三位,则前导零的个数为2,从后面数(最低位),第一个“1”位于倒数第五位,则后缀零的个数为4。
96.如果前导零和后缀零的个数相同,则确定时序数据压缩后的控制位的值为第一预设控制位值,例如:第一预设控制位值为“0”;
97.其中,前导零和后缀零中间所夹的数据位即为有效数据位,以异或运算结果为“00100000 00010000”为例,有效数据位为“100000 0001”,对于前导零和后缀零相同的异或运算结果,只需要记录中间有效数据位。由于异或运算结果的总位数是相同的,通过第一预设控制位值“0”,则可以知晓有效数据位前后的0的个数是相同的,则可以得到完整的异或运算结果。
98.如果前导零和后缀零的个数相同,则确定时序数据压缩后的控制位的值为第一预设控制位值,例如:第一预设控制位值为“0”;在具体实现时,第二预设值可以设定为“1”。
99.以异或运算结果为“00010000 00001000”为例,首先,整个运算结果不为0,则第二预设位为“1”;前导零的个数为3,后缀零的个数也为3,即前导零和后缀零的个数相同,则第一预设控制位值为0,前导零和后缀零中间的第一有效位为“10000 00001”,则该时序数据的压缩结果为“10”:10000 00001。在存储时,将该压缩结果和对应的偏移量进行存储,存储到相应的以最早时间戳、时序数据的采集周期以及各个偏移量的总个数为标识,或者,以最早时间戳、最晚时间戳以及采集周期为标识的表格中。
100.如果前导零和后缀零的个数不同,则确定时序数据值压缩后的控制位的值为第二预设控制位值,并提取前导零的个数、前导零和后缀零之间的第二有效位部分以及第二有效位部分的位数,将时序数据压缩为第二预设值、第二预设控制位值、前导零的个数、位数以及第二有效位部分组成的第二压缩数据;将第二压缩数据作为压缩结果。
101.如果前导零和后缀零的个数不同,则确定时序数据压缩后的控制位的值为第二预设控制位值,例如:第二预设控制位值为“1”。
102.以异或运算结果为“00100000 00000000”为例,首先,整个运算结果不为0,则第二预设位为“1”,前导零的个数为2,后缀零的个数为13,则前导零和后缀零的个数不同,前导零和后缀零之间的第二有效位部分为“1”,第二有效位部分的位数为“1”。其中,对于前导零的个数,异或运算结果以16进制表示,则前导零的个数2,实际代表8个0,第三位“1”用二进制表示有3个0,共11个0,则将该时序数据的数值压缩为“11”:11:1:“1”。
103.在存储时,可以利用表格的形式存储,将该压缩结果和对应的偏移量对应存储,存储到相应的标识之后。
104.此外,在具体实现时,由于每间隔一个采集周期即产生一个时序数据,如果一直按照某一个时序数据的时间戳来对后续的时序数据进行压缩处理,则在读取数据时,数据量比较大,查找的计算量比较大,导致查找效率低。因此,考虑到查找效率的问题,可以对采集的时序数据进行分段处理。具体的,按照预设时间间隔,对各个时序数据进行分段处理。
105.对于分段处理,可以边采集时序数据,边分段;也可以采集一段时长的时序数据,再进行分段。
106.第一种情况:边采集时序数据边分段
107.采集的时序数据的时间跨度满足预设时间间隔即作为一段时序数据段,对时序数据段中的每一个时序数据,将时间戳进行规整,得到规整后的时间戳,其中,任意相邻的两个时序数据对应的规整后的时间戳之间的时间差值均相同;从各个规整后的时间戳中,提取最早时间戳;并确定每个时序数据相对于最早时间戳的偏移量;根据最早时间戳和偏移量,对各个时序数据进行压缩存储。
108.其中,最早时间戳指该段时序数据中时间最早的最早时间戳。每一段时序数据段均对应一个最早时间戳,偏移量是指相对该段时序数据段中的最早时间戳的相对位置,与
其他段时序数据的最早时间戳无关。在具体实现时,预设时间间隔可以设定为1小时。此外,在具体实现时,可以在采集时序数据的同时,对时序数据的时间戳进行规整,达到预设时间间隔即作为一段,即进行分段处理;也可以得到预设时间间隔的一段时序数据段后,再对各个时序数据的时间戳进行规整,规整后再进行分段。
109.第二种情况:采集一段时间的时序数据,再进行分段;
110.采集预设时长的时序数据,将预设时长的时序数据,按照预设时间间隔进行分段,得到至少一段时序数据段;对时序数据段中的每一个时序数据,将时间戳进行规整,得到规整后的时间戳,其中,任意相邻的两个时序数据对应的规整后的时间戳之间的差值均相同;从各个规整后的时间戳中,提取最早时间戳;并确定每个时序数据相对于最早时间戳的偏移量;根据最早时间戳和偏移量,对各个时序数据进行压缩存储。
111.其中,最早时间戳指某段时序数据中时间最早的最早时间戳。每一段时序数据段均对应一个最早时间戳,偏移量是指相对该段时序数据段中的最早时间戳的相对位置,与其他段时序数据的最早时间戳无关。在具体实现时,优选的,将预设时长设置为预设时间间隔的整数倍,例如,预设时长为3小时,预设时间间隔为1小时。此外,在具体实现时,可以对预设时长的时序数据先进行规整,再进行分段;也可以对预设时长的时序数据先进行分段,然后再对各段的时序数据进行规整。
112.此外,还需要说明的是,对于分段处理的情况,在存储时,还可以将该段时序数据集合的开始时间、结束时间也作为标识,存储在表头,以和其他段的时序数据区分开。
113.此外,需要说明的是,对这部分实施例的理解,可以参见上述方法图1所示的方法实施例的部分的描述,重复之处不再赘述。
114.下面结合具体实例对本技术提供的时序数据的存储方法做进一步说明。
115.(1)、将时序数据序列中每个数据点(时序数据值)的时间戳按照采集周期进行规整。
116.如图2,需要采集当前系统运行的进程数,采集周期是1分钟。也就是说每分钟都会产生一个数据,但是采集过程可能受到周期任务或者系统负载等方面的影响,采集到数据的具体时间可能存在少许误差,所以需要对每个数据点的时间戳进行规整,最终得到每整分钟的数据点。
117.(2)、对时序数据分时间段处理,并记录每个时间段的开始时间、结束时间、数据点间的时间间隔(采集周期)等信息。
118.如图5,图5中示出了对时序数据进行分段的示意图,例如:预设时间间隔为1小时,则将图5所示的各个时序数据分成了2段,分别为第一时序数据段:开始时间(start time)为2021-09-01 09:00:00,结束时间(end time)为2021-09-01 09:59:00采集的时序数据,采集周期(interval)为60秒;第二时序数据段:开始时间(start time)为2021-09-01 10:00:00,结束时间(end time)为2021-09-01 10:59:00采集的时序数据,采集周期(interval)为60秒。其中,timestamp代表时间戳,value代表具体数值,例如:进程数。
119.对于(1)中处理后的数据,每个时间段内会包含60个数据点,每个数据点之间时间间隔为60秒,同时记录该时间段的起止时间作为索引,方便后续查询。
120.(3)、将(2)中处理后的某时间段内的数据点按时间戳先后顺序进行排列,并计算出数据点相对于该时间段开始时间(该时间段的最早时间戳)的偏移量,并根据该偏移量确
定数据点的数值的位置。偏移量计算公式为:偏移量=(数据点时间戳-该时间段开始时间)/采集周期。
121.如图3,对于2021年9月1日上午9点到10点间的数据点,处理之后得到一组长度为60的数据序列,每个数据点的时间戳也可以根据偏移量计算得到timstamp=starttime interval*index。
122.其中,timstamp表示时间戳,starttime表示时间段的开始时间,又叫最早时间戳,interval表示采集周期,index表示偏移量,又叫该时间段中时序数据的索引值。用偏移量来代替时间戳,从时序数据中剔除了时间维度。
123.(4)、将剔除时间维度的数值序列进行xor压缩,并进行存储。
124.xor压缩算法具体步骤如下:
125.1)第一个时序数据的数值直接存储,不做任何压缩;
126.2)后面产生的每个数值与前一个数值计算xor(异或运算)值;
127.3)如果xor值为0,即这两个数值相同,只需存储一个
’0’
,占1bit;
128.4)如果xor值为非0,计算其前导零和后缀零个数,并存储一个
’1’
,占1bit,根据前导零和后缀零的个数,确定不同的压缩结果,参见下面的a和b。
129.a.如果前导零和后缀零个数相同,则控制位为
‘0’
,占用1bit,并存储当前xor结果的中间有效位部分;
130.b.如果前导零和后缀零个数不同,则控制位为
‘1’
,占用1bit,接下来为前导零个数,占用5bits,然后是6bits存储当前xor结果的有效位长度,最后为xor结果的有效位部分。
131.以图6中的第三行时序数据为例,异或运算结果为“0010000000000000”为例,首先,整个运算结果不为0,则第二预设位为“1”;前导零的个数为2,后缀零的个数为13,即前导零和后缀零的个数不同,则第一预设控制位值为1,前导零的个数2,实际代表8个0,第三位“1”用二进制表示有3个0,共11个前导零;前导零和后缀零之间的第二有效位部分为“1”,第二有效位部分的位数为1位,因此,则第三行时序数据的数值压缩为“11”:11:1:“1”,并与偏移量对应存储。
132.为了便于理解本技术实施例提供的一种时序数据的存储方法,请参见图7,图7示出了时序数据的存储方法的主要流程:
133.首先,将采集到的时序数据流中的各数据点时间戳进行规整,并按固定时间段来划分数据点进行处理,得到格式化之后的数据;然后,保留各时间段的起止时间(start time2021-09-01 09:00:00和end time2021-09-01 09:59:00)和采集间隔(interval:60秒),并根据数据点时间戳计算出对应的数值偏移量(index),将时间段内所有数值按序保存到连续的序列中;最后,使用xor压缩算法对该时间段内的数值进行压缩存储。
134.此外,如图8所示,本技术实施例还提供了一种时序数据的读取方法,具体包括如下步骤:
135.步骤801,获取压缩后的时序数据序列;
136.步骤802,对压缩后的时序数据序列进行解压缩,得到各时序数据值;
137.解压缩的过程实际是基于首个数值(未压缩处理的数值)以及压缩结果计算时序数据的实际数值的过程,是前述xor算法的逆过程。
138.步骤803,对于每个时序数据值,获取时序数据值对应的参照时间戳和偏移量;根据参照时间戳和偏移量,确定时序数据值对应的时间戳;
139.其中,在存储时,偏移量和时序数据值是一一对应的关系,能够通过对应关系确定偏移量,根据存储的表头能够确定该时序数据所对应的参照时间戳。
140.具体的,根据参照时间戳和偏移量,确定时序数据值对应的时间戳,包括:获取时序数据值对应的采集周期;计算采集周期和偏移量的乘积,并加上参照时间戳,得到时序数据对应的时间戳。
141.基于同一构思,本技术实施例中提供了一种时序数据的存储装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述。如图9所示,该装置主要包括:
142.第一获取模块901,用于获取各个待存储的时序数据值及获取每个所述时序数据值各自对应的时间戳;其中,任意相邻时序数据值的时间戳的时间差值均相同;
143.提取模块902,用于从各个所述时间戳中,提取参照时间戳;
144.计算模块903,用于对于每个所述时序数据值,计算所述时序数据值对应的所述时间戳与目标时间戳之间的偏移量;其中,所述目标时间戳为所述参照时间戳,或者,与所述时间戳相邻的时间戳;
145.存储模块904,用于对应存储所述参照时间戳和各所述偏移量,并对各所述时序数据值进行压缩存储;且每个所述偏移量与所述偏移量对应的压缩后的时序数据值对应存储。
146.在一个具体实施例中,计算模块903,用于计算所述时序数据值对应的所述时间戳和所述目标时间戳之间的时间差值;利用所述时间差值除以所述时序数据的采集周期,得到所述时序数据的时间戳相对于所述目标时间戳的偏移量。
147.在一个具体实施例中,第一获取模块901,用于获取采集每个所述时序数据值时的实际采集时间戳;判断任意相邻时序数据值的实际采集时间戳之间的时间差值是否相同;如果是,则将所述实际采集时间戳作为所述时序数据值对应的时间戳;如果否,则对每个所述时序数据值的实际采集时间戳进行规整,将规整后的时间戳作为所述时序数据对应的时间戳。
148.在一个具体实施例中,第一获取模块901,用于获取所述时序数据值的采集周期;利用所述实际采集时间戳对所述采集周期取整,得到规整后的时间戳。
149.在一个具体实施例中,提取模块902,用于从各个所述时间戳中,提取最早时间戳作为所述参照时间戳;或者,提取最晚时间戳作为所述参照时间戳;或者,提取中间位置的时间戳作为所述参照时间戳;或者,提取每个时间戳的前一个或后一个采集周期的时间戳作为参照时间戳。
150.在一个具体实施例中,本技术实施例提供的一种时序数据的存储装置还包括:分段模块,用于按照预设时间间隔,对各个时序数据进行分段处理。
151.在一个具体实施例中,存储模块904,用于以所述参照时间戳和采集周期为标识,存储与所述参照时间戳对应的目标时序数据值以及目标偏移量;对于除所述目标时序数据值之外的其余时序数据值中的每一个,计算每个所述时序数据值与所述时序数据值的前一个时序数据值之间的异或运算结果;根据所述异或运算结果对所述时序数据值进行压缩,得到压缩结果;并按序将所述偏移量与所述压缩结果对应存储。
152.在一个具体实施例中,存储模块904,用于若所述异或运算结果为0,则将所述时序数据值压缩为第一预设值,将所述第一预设值作为所述压缩结果;否则,获取所述异或运算结果中前导零和后缀零的个数;如果所述前导零和所述后缀零的个数相同,则确定所述时序数据值压缩后的控制位的值为第一预设控制位值;并提取所述前导零和所述后缀零之间的第一有效位部分,将所述时序数据压缩为第二预设值、所述第一预设控制位值和所述第一有效位部分组成的第一压缩数据;将所述第一压缩数据作为所述压缩结果;如果所述前导零和所述后缀零的个数不同,则确定所述时序数据值压缩后的控制位的值为第二预设控制位值,并提取所述前导零的个数、所述前导零和所述后缀零之间的第二有效位部分以及所述第二有效位部分的位数,将所述时序数据压缩为第二预设值、第二预设控制位值、所述前导零的个数、所述位数以及所述第二有效位部分组成的第二压缩数据;将所述第二压缩数据作为所述压缩结果。
153.在一个具体实施例中,本技术实施例提供的一种时序数据的存储装置还包括:排序模块,用于在获取每个所述时序数据值各自对应的时间戳之后,按照时间戳对各个时序数据进行排序。
154.此外,本技术实施例中提供了一种时序数据的读取装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述。如图10所示,该装置主要包括:
155.第二获取模块1001,用于获取压缩后的时序数据序列;
156.解压缩模块1002,用于对所述压缩后的时序数据序列进行解压缩,得到各时序数据值;
157.确定模块1003,用于对于每个所述时序数据值,获取所述时序数据值对应的参照时间戳和偏移量;根据所述参照时间戳和所述偏移量,确定所述时序数据值对应的时间戳。
158.在一个具体实施例中,确定模块1003,用于获取所述时序数据值对应的采集周期;计算所述采集周期和所述偏移量的乘积,并加上所述参照时间戳,得到所述时序数据对应的时间戳。
159.基于同一构思,本技术实施例中还提供了一种电子设备,如图11所示,该电子设备主要包括:处理器1101、存储器1102和通信总线1103,其中,处理器1101和存储器1102通过通信总线1103完成相互间的通信。其中,存储器1102中存储有可被处理器1101执行的程序,处理器1101执行存储器1102中存储的程序,实现如下步骤:
160.获取各个待存储的时序数据值及获取每个所述时序数据值各自对应的时间戳;其中,任意相邻时序数据值的时间戳的时间差值均相同;
161.从各个所述时间戳中,提取参照时间戳;
162.对于每个所述时序数据值,计算所述时序数据值对应的所述时间戳与目标时间戳之间的偏移量;其中,所述目标时间戳为所述参照时间戳,或者,与所述时间戳相邻的时间戳;
163.对应存储所述参照时间戳和各所述偏移量,并对各所述时序数据值进行压缩存储;且每个所述偏移量与所述偏移量对应的压缩后的时序数据值对应存储;
164.或者,
165.获取压缩后的时序数据序列;
166.对所述压缩后的时序数据序列进行解压缩,得到各时序数据值;
167.对于每个所述时序数据值,获取所述时序数据值对应的参照时间戳和偏移量;根据所述参照时间戳和所述偏移量,确定所述时序数据值对应的时间戳。
168.上述电子设备中提到的通信总线1103可以时外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该通信总线1103可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
169.存储器1102可以包括随机存取存储器(random access memory,简称ram),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器1101的存储装置。
170.上述的处理器1101可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等,还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
171.在本技术的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述的时序数据的存储方法或时序数据的读取方法。
172.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本技术实施例所述的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如dvd)或者半导体介质(例如固态硬盘)等。
173.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
174.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明
将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

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

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

相关文献