一种自适应编码长度的时序数据存储的方法和装置与流程

文档序号:14452908阅读:203来源:国知局

本发明涉及数据处理技术领域,更具体地,涉及一种自适应编码长度的时序数据存储的方法和装置。



背景技术:

伴随着云计算、互联网、物联网等技术的不断发展和成熟,时间序列数据(简称为时序数据)在各个领域以及人们的日常生活中占据了很大的比重。时序数据是一系列带有时间戳、依时间按照升序排列、并且来自于同一个目标的数据值,比如一段时间内的环境温度、股票价格、机器的内存使用率等等。其通常具有产生速度快、数据量大等特点。

在许多实际的应用场景中,时序数据会最终保存在磁盘上。由于数据量较大,现阶段面临的一个问题是如何高效地存储时序数据,使得占用的磁盘空间尽可能少。解决这个问题的基本思想是对数据进行编码,存储经过编码后的编码数据,即通过特定算法将原来的数据转化为另一种形式,经过这种转化之后,所需的存储空间比原来的少。目前学术和工业界已经提出了许多通用的方法,它们有一个共同点,都假定数据会按照某些规律进行变化。通过存储这些规律而不是数据本身,可以有效地减少存储空间。

但这种存储经过编码后的编码数据也会带来一系列的问题,实际的时序数据中可能存在一些异常数据(比如由于采集设备故障引起某些时刻的数据值出现异常),这种情况下对这些异常数据的编码通常需要附加大量的描述信息,导致存储的效果变差,没有达到最佳的节省存储空间的效果。



技术实现要素:

为了克服上述问题或者至少部分地解决上述问题,本发明提供一种自适应编码长度的时序数据存储的方法和装置。

根据本发明的一个方面,提供一种自适应编码长度的时序数据存储的方法,包括:按时序数据中时间戳的先后顺序依次获取每一时间戳对应的数据值;将前n个数据值按预设编码规则进行编码,获取前n个数据值对应的第一编码数据,第一编码数据包括第一数量的编码值,n为大于1的整数;确定预存储前n个数据值所需的第一存储空间值,确定预存储预设编码规则的规则信息和第一编码数据所需的第二存储空间值,将第一存储空间值与第二存储空间值的比值作为第一时刻的存储收益,第一时刻为获取第n个数据值的时刻;若第一时刻的存储收益小于第二时刻的存储收益或者第一数量达到预设值,则存储预设编码规则的规则信息和前n-1个数据值对应的第二编码数据,第二时刻为获取第n-1个数据值的时刻。

其中,将前n个数据值按预设编码规则进行编码,获取第一编码数据,包括:将前n个数据值作一阶差分处理,获取一阶差分值;确定基准值,依次获取每一一阶差分值与基准值的差值,将每一差值作为一个编码值。

其中,确定基准值,包括:将所有一阶差分值中数值最小的一阶差分值作为基准值。

其中,确定预存储前n个数据值所需的第一存储空间值,包括:确定预存储每一数据值所使用的存储空间值;将预存储每一数据值所使用的存储空间值与n的乘积作为第一存储空间值。

其中,确定预存储预设编码规则的规则信息和第一编码数据所需的第二存储空间值,包括:确定预存储规则信息所需的存储空间值;确定预存储第一编码数据中每一编码值所需的存储空间值,在所有预存储第一编码数据中每一编码值所需的存储空间值中选取最大值作为预存储第一编码数据中每一编码值的恒定存储空间值;将预存储第一编码数据中每一编码值的恒定存储空间值与第一数量的乘积作为预存储第一编码数据所需的存储空间值,将预存储规则信息所需的存储空间值与预存储第一编码数据所需的存储空间值之和作为第二存储空间值。

其中,存储预设编码规则的规则信息和前n-1个数据值对应的第二编码数据,包括:将预存储第二编码数据中每一编码值的恒定存储空间值作为实际存储空间值;将第二编码数据中编码值的数量、第一个数据值、第二编码数据中的最小编码值和实际存储空间值作为规则信息存储在数据表中;将第二编码数据中每一编码值依次按分配存储空间存储在数据表中,每一分配存储空间占用的存储空间值为实际存储空间值。

其中,存储预设编码规则的规则信息和前n-1个数据值对应的第二编码数据之后,还包括:将第n个数据值存储在单独的数据表中。

本发明的另一方面,提供一种自适应编码长度的时序数据存储的装置,包括:至少一个处理器;以及与处理器通信连接的至少一个存储器,其中:存储器存储有可被处理器执行的程序指令,处理器调用程序指令以执行上述的方法。

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

本发明的又一方面,提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机程序,该计算机程序使计算机执行上述的方法。

本发明提供的一种自适应编码长度的时序数据存储的方法和装置,包括按时序数据中时间戳的先后顺序依次获取每一时间戳对应的数据值,将前n个数据值按预设编码规则进行编码,获取前n个数据值对应的第一编码数据,第一编码数据包括第一数量的编码值,n为大于1的整数;确定预存储前n个数据值所需的第一存储空间值,确定预存储预设编码规则的规则信息和第一编码数据所需的第二存储空间值,将第一存储空间值与第二存储空间值的比值作为第一时刻的存储收益,第一时刻为获取第n个数据值的时刻;若第一时刻的存储收益小于第二时刻的存储收益或者第一数量达到预设值,则存储预设编码规则的规则信息和前n-1个数据值对应的第二编码数据,第二时刻为获取第n-1个数据值的时刻;在对时序数据序列进行编码的过程中,引入了存储收益来判断时序数据序列中是否存在异常数据,在确定存在异常数据时,对异常数据之前的所有数据对应的编码数据进行存储,从而避免了异常数据在编码过程中造成的不良影响,保证了最佳的节省存储空间的效果。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例的自适应编码长度的时序数据存储的方法的流程图;

图2为根据本发明实施例的数据表的数据结构的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的一个实施例中,参考图1,提供一种自适应编码长度的时序数据存储的方法,包括:s11,按时序数据中时间戳的先后顺序依次获取每一时间戳对应的数据值;s12,将前n个数据值按预设编码规则进行编码,获取前n个数据值对应的第一编码数据,第一编码数据包括第一数量的编码值,n为大于1的整数;s13,确定预存储前n个数据值所需的第一存储空间值,确定预存储预设编码规则的规则信息和第一编码数据所需的第二存储空间值,将第一存储空间值与第二存储空间值的比值作为第一时刻的存储收益,第一时刻为获取第n个数据值的时刻;s14,若第一时刻的存储收益小于第二时刻的存储收益或者第一数量达到预设值,则对预设编码规则的规则信息和前n-1个数据值对应的第二编码数据进行存储,第二时刻为获取第n-1个数据值的时刻。

具体的,时序数据是一系列带有时间戳、依时间戳按照升序排列、并且来自于同一个目标的数据值。对于时序数据,在对时序数据进行存储的时候,按时序数据中时间戳的先后顺序依次获取每一时间戳对应的数据值,在获取了n个数据值时,对已获取的n个数据值按预设编码规则进行编码,获得编码数据;本实施例引入存储收益,存储收益为预存储所有数据值的存储空间值与预存储编码数据和预设编码规则的规则信息所需的总存储空间值的比值;由于对编码数据进行存储时,需要附带预设编码规则的编码信息,以便于解码,因此在存储编码数据时需要存储相应的编码规则的规则信息,所需的存储空间值为存储预设编码规则的规则信息所需的存储空间值和存储编码数据所需的存储空间值之和。

将获取第n个数据值的时刻对应的存储收益与获取第n-1个数据值的时刻对应的存储收益进行比较,若获取第n个数据值的时刻对应的存储收益小于获取第n-1个数据值的时刻对应的存储收益,则说明第n个数据值带来了存储收益的下降,很可能为异常数据值,在编码过程中需要更多的信息来描述该异常数据,导致需要更多的存储空间,从而存储收益降低;那么在实际进行存储的时候,需排除第n个数据值带来的存储收益下降的影响,只对预设编码规则的规则信息和前n-1个数据值对应的编码数据进行存储;另外,在编码数据中的编码值的数量达到预设值时,为以避免数据溢出,可将预设编码规则的规则信息当前获得的编码数据进行存储。

本实施例在对时序数据序列进行编码的过程中,引入了存储收益来判断时序数据序列中是否存在异常数据,在确定存在异常数据时,对异常数据之前的所有数据对应的编码数据进行存储,从而避免了异常数据在编码过程中造成的存储收益下降的影响,保证了最佳的节省存储空间的效果。

基于以上实施例,将前n个数据值按预设编码规则进行编码,获取第一编码数据,包括:将前n个数据值作一阶差分处理,获取一阶差分值;确定基准值,依次获取每一一阶差分值与基准值的差值,将每一差值作为一个编码值。

其中,确定基准值,包括:将所有一阶差分值中数值最小的一阶差分值作为基准值。

具体的,对前n个数据值,按一阶差分的方式获取每一数据值与该数据值之前的数据值之间的一阶差分值,然后确定一个基准值,将每一个一阶差分值分别与该基准值作差,获得差值,将每一差值作为一个编码值;将该基准值选定为所有第一差值中的最小值,可以使每一个一阶差分值分别与该基准值作差后均为非负数,即所有编码值均为非负数;由于存储的数据均需转换成二进制码,编码值均为非负数,以便于在存储过程中进行二进制转码。

基于以上实施例,确定预存储前n个数据值所需的第一存储空间值,包括:确定预存储每一数据值所使用的存储空间值;将预存储每一数据值所使用的存储空间值与n的乘积作为第一存储空间值。

具体的,在存储时序数据时,对于同一个序列的数据,对每一数据均采用相同的存储空间进行存储,以便于读写与管理,存储数据值无需附加任何描述信息,则预存储数据值所需的存储空间值就是存储每一数据值所需要的存储空间值与数据值的数量(n)的乘积。

基于以上实施例,确定预存储预设编码规则的规则信息和第一编码数据所需的第二存储空间值,包括:确定预存储规则信息所需的存储空间值;确定预存储第一编码数据中每一编码值所需的存储空间值,在所有预存储第一编码数据中每一编码值所需的存储空间值中选取最大值作为预存储第一编码数据中每一编码值的恒定存储空间值;将预存储第一编码数据中每一编码值的恒定存储空间值与第一数量的乘积作为预存储第一编码数据所需的存储空间值,将预存储规则信息所需的存储空间值与预存储第一编码数据所需的存储空间值之和作为第二存储空间值。

具体的,由于存储数据时均需转换成二进制码,编码值的大小能决定了其存储空间值,例如十进制数值“10”的二进制码是“1010”,需要4bit的存储空间,十进制数值2的二进制码是“10”,只需要2bit的存储空间,每个编码值转换成二进制码后占用的存储空间可能并不相同,为了能够在没有信息损失的情况下完整的存储所有编码值,应当选择存储每一编码值所需的存储空间值中的最大值最为存储每一编码值的实际存储空间值,将该实际存储空间值与编码值的数量的乘积即为存储编码数据所需的存储空间值;由于对编码数据进行存储时,需要附带预设编码规则的编码信息,所以还需要计算存储预设编码规则的编码信息所需的存储空间值;因此,在计算存储收益时,需考虑存储预设编码规则的编码信息所需的存储空间值的影响,根据存储编码数据所需的存储空间值与存储预设编码规则的编码信息所需的存储空间值之和来计算存储收益。

基于以上实施例,存储预设编码规则的规则信息和前n-1个数据值对应的第二编码数据,包括:将预存储第二编码数据中每一编码值的恒定存储空间值作为实际存储空间值;将第二编码数据中编码值的数量、第一个数据值、第二编码数据中的最小编码值和实际存储空间值作为规则信息存储在数据表中;将第二编码数据中每一编码值依次按分配存储空间存储在数据表中,每一分配存储空间占用的存储空间值为实际存储空间值。

具体的,将预设编码规则的规则信息和前n-1个数据值对应的编码数据存储在一个数据表中,该数据表的数据结构示意图如图2所示,该数据表包括表头(header)和主体(body),表头用于存储预设编码规则的规则信息,具体包括该数据表存储的编码值的数量(number)、第一个数据值(firstvalue)、最小的编码值(mindelta)和存储每个编码值的实际存储空间值(bmax);主体用于存储编码数据(encodingdata),每个编码值占用的存储空间值均相同,为表头中的存储每个编码值的实际存储空间值。

基于以上实施例,存储预设编码规则的规则信息和前n-1个数据值对应的第二编码数据之后,还包括:将第n个数据值存储在单独的数据表中。

具体的,由于存储收益减小,则说明第n个数据值可能为异常数据,将该数据值存储在单独的数据表中,避免该数据值对其它数据值在节省存储空间的存储效果上的影响,由于只有一个数据值,该单独的数据表中,只存储“1,firstvalue,0,0”,其中的firstvalue为第n个数据值,由于没有编码数据,所以该单独的数据表中主体部分为空。

作为本发明的又一实施例,提供一种自适应编码长度的时序数据存储的装置,包括:至少一个处理器;以及与处理器通信连接的至少一个存储器,其中:存储器存储有可被处理器执行的程序指令,处理器调用所述程序指令以执行上述各方法实施例所提供的方法,例如包括:按时序数据中时间戳的先后顺序依次获取每一时间戳对应的数据值;将前n个数据值按预设编码规则进行编码,获取前n个数据值对应的第一编码数据,第一编码数据包括第一数量的编码值,n为大于1的整数;确定预存储前n个数据值所需的第一存储空间值,确定预存储预设编码规则的规则信息和第一编码数据所需的第二存储空间值,将第一存储空间值与第二存储空间值的比值作为第一时刻的存储收益,第一时刻为获取第n个数据值的时刻;若第一时刻的存储收益小于第二时刻的存储收益或者第一数量达到预设值,则存储预设编码规则的规则信息和前n-1个数据值对应的第二编码数据,第二时刻为获取第n-1个数据值的时刻。

作为本发明的又一个实施例,提供一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:按时序数据中时间戳的先后顺序依次获取每一时间戳对应的数据值;将前n个数据值按预设编码规则进行编码,获取前n个数据值对应的第一编码数据,第一编码数据包括第一数量的编码值,n为大于1的整数;确定预存储前n个数据值所需的第一存储空间值,确定预存储预设编码规则的规则信息和第一编码数据所需的第二存储空间值,将第一存储空间值与第二存储空间值的比值作为第一时刻的存储收益,第一时刻为获取第n个数据值的时刻;若第一时刻的存储收益小于第二时刻的存储收益或者第一数量达到预设值,则存储预设编码规则的规则信息和前n-1个数据值对应的第二编码数据,第二时刻为获取第n-1个数据值的时刻。

作为本发明的又一个实施例,提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机程序,该计算机程序使该计算机执行上述各方法实施例所提供的方法,例如包括:按时序数据中时间戳的先后顺序依次获取每一时间戳对应的数据值;将前n个数据值按预设编码规则进行编码,获取前n个数据值对应的第一编码数据,第一编码数据包括第一数量的编码值,n为大于1的整数;确定预存储前n个数据值所需的第一存储空间值,确定预存储预设编码规则的规则信息和第一编码数据所需的第二存储空间值,将第一存储空间值与第二存储空间值的比值作为第一时刻的存储收益,第一时刻为获取第n个数据值的时刻;若第一时刻的存储收益小于第二时刻的存储收益或者第一数量达到预设值,则存储预设编码规则的规则信息和前n-1个数据值对应的第二编码数据,第二时刻为获取第n-1个数据值的时刻。

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

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1