一种时序数据库自适应数据压缩方法转让专利

申请号 : CN202210330862.5

文献号 : CN114665885B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王宏志闫浩郑博梁栋叶天生燕钰丁小欧

申请人 : 北京诺司时空科技有限公司哈尔滨工业大学

摘要 :

一种时序数据库自适应数据压缩方法,涉及数据压缩领域。本发明是为了解决目前时序数据压缩方法还存在无法对时序数据的特征和模式自适应压缩以及压缩率低造成内存空间浪费的问题。本发明包括:获取时序数据中的时间戳和Field Value;获取待压缩的时间戳每个时间点的delta‑of‑delta值;根据每个时间点的delta‑of‑delta值进行压缩获得每个时间点的压缩结果;以时间戳每个时间点为间隔将Field Value分为Field Value数据段,利用时间戳时间点的delta‑of‑delta值对Field Value数据段划分,获得Field Value数据小段;将Field Value数据小段输入训练好的神经网络分类器中,获得Field Value数据小段压缩结果;将时间戳压缩结果和Field Value压缩结果存储到内存中,获得时间序列数据压缩结果。本发明用于时序数据的压缩。

权利要求 :

1.一种时序数据库自适应数据压缩方法,其特征在于所述方法具体过程为:

步骤一、获取待压缩的时间序列数据;

所述时间序列数据包括:时间戳和Field Value;

步骤二、获取待压缩的时间戳每个时间点的delta‑of‑delta值;

步骤三、根据步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta值,对待压缩的时间戳每个时间点进行自适应压缩获得待压缩的时间戳每个时间点的压缩结果;

步骤四、以待压缩的时间戳每个时间点为间隔将待压缩的Field Value分为多个Field Value数据段,然后根据步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta值对Field Value数据段进行划分,获得划分好的待压缩的Field Value数据小段;

步骤五、将划分好的待压缩的Field Value数据小段输入到训练好的神经网络分类器中,获得每个待压缩的Field Value数据小段的压缩结果;

步骤六、将步骤三获得的待压缩的时间戳每个时间点的压缩结果和步骤五获得的待压缩的Field Value数据小段的压缩结果按照点位存储到内存中,获得待压缩的时间序列数据的压缩结果。

2.根据权利要求1所述的一种时序数据库自适应数据压缩方法,其特征在于:所述步骤二中的获取待压缩的时间戳每个时间点的delta‑of‑delta值,包括以下步骤:首先,将待压缩的时间戳中的前两个时间点直接以原始格式存储;

然后,利用前两个时间点迭代计算其他时间点的delta‑of‑delta值。

3.根据权利要求2所述的一种时序数据库自适应数据压缩方法,其特征在于:所述步骤三中的根据步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta值,对待压缩的时间戳每个时间点进行自适应压缩获得待压缩的时间戳每个时间点压缩结果,包括以下步骤:步骤三一、根据步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta值确定待压缩的时间戳每个时间点之间的时间间隔是否规则,若待压缩的时间戳每个时间点之间的时间间隔相同则采用RLE算法进行编码压缩获得待压缩的时间戳每个时间点的压缩结果,结束时间戳压缩;若待压缩的时间戳每个时间点之间的时间间隔不规则则执行步骤三二;

步骤三二、获取间隔不规则的待压缩的时间戳每个时间点的delta‑of‑delta的值,并根据delta‑of‑delta的值所在范围对待压缩的时间戳每个时间点进行压缩获得待压缩的时间戳每个时间点的压缩结果。

4.根据权利要求3所述的一种时序数据库自适应数据压缩方法,其特征在于:所述步骤三一中的根据步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta确定待压缩的时间戳每个时间点之间的时间间隔是否规则,通过以下方式确定:若待压缩的时间戳每个时间点的delta‑of‑delta值都为0则待压缩的时间戳每个时间点之间的时间间隔都相同;若待压缩的时间戳任一时间点的delta‑of‑delta值不为0,则待压缩的时间戳每个时间点之间的时间间隔不规则。

5.根据权利要求4所述的一种时序数据库自适应数据压缩方法,其特征在于:所述步骤三二中的根据delta‑of‑delta的值所在范围对待压缩的时间戳每个时间点进行压缩获得待压缩的时间戳每个时间点的压缩结果,具体方式为:delta‑of‑delta的值在{‑4,4}范围内的时间点,以4bits进行编码,获得待压缩的时间戳每个时间点的压缩结果;

delta‑of‑delta的值在{‑16,16}范围内的时间点,以7bits进行编码,获得待压缩的时间戳每个时间点的压缩结果;

delta‑of‑delta的值在其他范围内的时间戳时间点,分别采用去除头尾零法和表示零法进行编码,将编码压缩比高的编码结果作为压缩结果。

6.根据权利要求5所述的一种时序数据库自适应数据压缩方法,其特征在于:所述步骤四中的利用步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta值对Field Value数据段进行划分,获得划分好的待压缩的Field Value数据小段,包括以下步骤:首先,获得delta‑of‑delta值的绝对值大于16的时间戳时间点;

然后,在delta‑of‑delta值的绝对值大于16的时间点处对Field Value数据段进行切割,获得切割后Field Value数据段;

最后,将切割后的每个Field Value数据段的长度与预设的最小阙值min和最大阙值max进行比较,若切割后的Field Value数据段的长度小于min,则与前一段Field Value数据段合并,若切割后的Field Value数据段的长度大于max则将该段Field Value数据段对半切割,直到所有Field Value数据段的长度在min和max之间,获得划分好的待压缩的Field Value数据小段;

若时间戳每个时间点的delta‑of‑delta值的绝对值均不大于16,则直接将Field Value数据段的长度与预设的最小阙值min和最大阙值max进行比较,获得划分好的待压缩的Field Value数据小段。

7.根据权利要求6所述的一种时序数据库自适应数据压缩方法,其特征在于:所述步骤五中的训练好的神经网络分类器,通过以下方式获得:步骤五一、获取时间序列数据中的Field Value数据,将Field Value数据划分为Field Value数据小段;

步骤五二、利用划分好的Field Value数据小段构建训练集;

步骤五三、构建神经网络分类器,并利用步骤五二获得的训练集训练神经网络分类器,获得训练好的神经网络分类器。

8.根据权利要求7所述的一种时序数据库自适应数据压缩方法,其特征在于:所述步骤五二中的利用划分好的Field Value数据小段构建训练集,包括以下步骤:步骤五二一、对每个Field Value数据小段进行细粒度分析,获得细粒度分析结果;

步骤五二二、利用细粒度分析结果分别采用不同压缩算法对Field Value数据小段进行压缩,获得每个Field Value数据小段压缩比最高的算法,并对每个Field Value数据小段进行标注,获得训练集。

9.根据权利要求8所述的一种时序数据库自适应数据压缩方法,其特征在于:所述步骤五二二中的不同压缩算法包括:Delta、Delta‑of‑delta、XOR、Zigzag、Bit‑packing、Delta XOR。

10.根据权利要求9所述的一种时序数据库自适应数据压缩方法,其特征在于:所述步骤五三中的神经网络分类器包括:word2vec网络和Bi‑LSTM网络;

所述word2vec网络用于将步骤五二获得的训练集中的Field Value数据小段转换为数字向量;

所述Bi‑LSTM网络包括:Bi‑LSTM层、全连接层、Softmax层;

所述Bi‑LSTM层包含多个LSTM神经元,用于在word2vec网络和全连接层之间进行双向链接;

所述全连接层用于将Bi‑LSTM层输出的分布式特征表示映射到样本标记空间;

所述Softmax层用于将神经网络分类器的输出结果转化成概率表达式,并获得最大概率项。

说明书 :

一种时序数据库自适应数据压缩方法

技术领域

[0001] 本发明涉及数据压缩领域,特别涉及一种时序数据库自适应数据压缩方法。

背景技术

[0002] 时序数据在当前有着极为广泛的需求。包括经济金融领域、环境监控领域、医疗生物领域、工业制造领域、农业生产领域、软硬件系统平台等各方面,都在大量使用时序数据。特别是在金融行业中,金融时序分析是金融变量随时间演变的关键技术,是金融量化分析的基础技术,对规模巨大的金融时间序列进行有效分析的基础是对其时序数据的有效管理。随着5G、“工业互联网”等领域的快速发展和传感器的大量部署,工业环境越来越复杂。
在工业检测数据中,超过80%是时序数据,主要为由各行业各类型实时监测设备所采集、产生的数据。因此时序数据的高效管理对提高各个领域的生产效率至关重要。
[0003] 时序数据的结构并不复杂。针对少量时序数据,添加时间戳和键值就可将数据存储在传统的数据库中,但面对终端设备产生、写入并发量比较高的海量数据场景,传统数据库管理系统的存储与管理存在问题。常用的关系数据库管理系统对于时序数据压缩表现不佳;维护成本高;单机写入吞吐低;对适用于交易处理、海量数据的聚合分析性能差。一种高效的解决方案是用时序数据库对这些时序数据进行存储和查询,时序数据库能够高效地收集、存储和分析海量时序数据,提供快速实时的检测、诊断和分析能力,精准的监控系统各个组件的运行状况和性能,当问题出现时能够快速定位和诊断。因此时序数据库需存储处理大量的时序数据,这对数据库本身的压缩方法与存储结构提出了很高的要求。
[0004] 目前的时序数据库针对时序数据的不同种类,采用基于数据种类的压缩方法来进行压缩。以目前时序数据库开源社区最稳定的时序数据库InfluxDB为例,数据库中时间戳目前有两种压缩方式分别是Run‑Length‑Encoding(RLE)和Simple8b,还有可能不压缩。所以 TimeStamps的存储结构就有三种可能通过前4bit来表示它属于存储方式;这种方法的字符串压缩算法采用的是google开源的snappy压缩算法;Float类型使用Facebook Gorillal的 XOR算法进行编码。然而现有技术的压缩方法灵活性差,相对比较死板,无法对时序数据的特征和模式自适应。同时随着数据量的增大,导致基于数据种类的压缩方法已经无法满足对压缩率的需求,从而造成了内存空间的浪费。

发明内容

[0005] 本发明目的是为了解决目前时序数据压缩方法还存在无法对时序数据的特征和模式进行自适应压缩以及目前的压缩方法压缩率低从而造成内存空间浪费的问题,而提出了一种时序数据库自适应数据压缩方法。
[0006] 一种时序数据库自适应数据压缩方法具体过程为:
[0007] 步骤一、获取待压缩的时间序列数据;
[0008] 所述时间序列数据包括:时间戳和Field Value;
[0009] 步骤二、获取待压缩的时间戳每个时间点的delta‑of‑delta值;
[0010] 步骤三、根据步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta值,对待压缩的时间戳每个时间点进行自适应压缩获得待压缩的时间戳每个时间点的压缩结果;
[0011] 步骤四、以待压缩的时间戳每个时间点为间隔将待压缩的Field Value分为多个Field Value数据段,然后根据步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta值对Field Value数据段进行划分,获得划分好的待压缩的Field Value数据小段;
[0012] 步骤五、将划分好的待压缩的Field Value数据小段输入到训练好的神经网络分类器中,获得每组待压缩的Field Value数据小段的压缩结果;
[0013] 步骤六、将步骤三获得的待压缩的时间戳每个时间点的压缩结果和步骤五获得的待压缩的Field Value数据小段的压缩结果按照点位存储到内存中,获得待压缩的时间序列数据的压缩结果。
[0014] 本发明的有益效果为:
[0015] 本发明将时序数据的压缩分为时间戳与Field Value两个部分,基于数据特征与模式进行自适应的数据压缩算法选取,提升了数据的压缩比、灵活性和可扩展性,节约了内存空间。本发明针对时间戳的数据形态和时间间隔情况,自适应运用符合其特点的数据压缩算法,在保证解压效率的情况下提高了数据的压缩比,灵活性和可扩展性。本发明针对Field Value数据,基于数据模式自适应运用数据压缩策略,提高了数据的压缩比率,避免了内存空间的浪费。本发明使用神经网络模型形成压缩算法分类器,提升了压缩的自动化程度,提升了压缩效率,避免了内存资源的过多消耗。本发明在数据库内部内置多种压缩算法,从而在不同的需求场景中对数据采用不同的压缩策略,避免了不同特征的数据采用同一压缩算法而造成的压缩率比低和解压缩速率慢的问题。

附图说明

[0016] 图1为时间戳压缩算法的流程示意图;
[0017] 图2为Field Value压缩算法的流程示意图;
[0018] 图3为神经网络分类器结构图。

具体实施方式

[0019] 具体实施方式一:本实施方式一种时序数据库自适应数据压缩方法具体过程为:
[0020] 步骤一、获取待压缩的时间序列数据中的时间戳和Field Value;
[0021] 步骤二、获取待压缩的时间戳每个时间点的delta‑of‑delta值;
[0022] 步骤三、根据步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta值,对待压缩的时间戳每个时间点进行自适应压缩获得待压缩的时间戳每个时间点压缩结果,如图1所示;
[0023] 步骤四、以待压缩的时间戳每个时间点为间隔将待压缩的Field Value分为多个Field Value数据段,然后利用步骤二获得的待压缩的时间戳每个时间点的的delta‑of‑delta值对 Field Value数据段进行划分,获得划分好的待压缩的Field Value数据小段;
[0024] 步骤五、将划分好的待压缩的Field Value数据小段输入到训练好的神经网络分类器中,获得每组待压缩的Field Value数据小段的压缩结果,如图2所示;
[0025] 步骤六、将步骤三获得的待压缩的时间戳每个时间点的压缩结果和步骤五获得的待压缩的Field Value压缩结果按照点位存储到内存中,获得待压缩的时间序列数据的压缩结果;
[0026] 具体实施方式二:所述步骤二中的获取待压缩的时间戳每个时间点的delta‑of‑delta值,包括以下步骤:
[0027] 首先,将待压缩的时间戳中的前两个时间点以原始格式存储在数据中;
[0028] 然后,利用前两个时间点计算第三个时间点的delta‑of‑delta值,利用第二、三时间点计算第四个时间点的delta‑of‑delta值,依次类推进行迭代计算,获得时间戳中每个时间点的 delta‑of‑delta值;
[0029] 具体实施方式三:所述步骤三中的根据步骤二获得的待压缩的时间戳每个时间点的 delta‑of‑delta值,对待压缩的时间戳每个时间点进行自适应压缩获得待压缩的时间戳每个时间点的压缩结果,包括以下步骤:
[0030] 步骤三一、根据步骤二获得的待压缩的时间戳每个时间点的delta‑of‑delta确定待压缩的时间戳中的时间点时间间隔是否规则,若待压缩的时间戳每个时间点时间间隔相同则采用Run‑Length‑Encoding(RLE)算法进行编码压缩获得待压缩的时间戳每个时间点的压缩结果,结束时间戳压缩;若待压缩的时间戳每个时间点的时间间隔不规则则执行步骤三二;
[0031] 待压缩的时间戳每个时间点的时间间隔是否规则通过以下方式确定:若每个时间点的 delta‑of‑delta值都为0即每个时间点的时间都相同;若所有时间点中任一时间点的delta‑of‑delta值不为0,则待压缩的时间戳时间点间隔不规则;
[0032] 所述待压缩的时间戳每个时间点的压缩结果包括:用于delta‑of‑delta输出的标头和用于不规则数据点的数据;
[0033] 步骤三二、获取间隔不规则的待压缩的时间戳每个时间点的delta‑of‑delta的值,若 delta‑of‑delta的值在{‑4,4}范围内,则以4bits进行编码(采用1位二进制(1b’0)表示控制位以及3位二进制表示数据位),获得待压缩的时间戳每个时间点压缩结果;若 delta‑of‑delta的值在{‑16,16}范围内,则以7bits进行编码(采用2位二进制(2b’10)表示控制位以及5位二进制表示数据位),获得待压缩的时间戳每个时间点的压缩结果;若 delta‑of‑delta的值在其他范围内则分别采用去除头尾零法和表示零法进行编码,选择压缩比更高的方法进行压缩,将编码压缩比高的编码结果附加到数据段获得待压缩时间戳的压缩结果;
[0034] delta‑of‑delta的绝对值超出16后可选取的Methond如表1所示:
[0035] 表1
[0036]
[0037] 去除头尾零法:通过控制信息来存储原始数据中头尾的连续为0的数据段,从而将数据中的非零位提取出来。本文设计的格式为使用后3位来表示数据中从末位开始连续为零的字节数,用前3位来表示数据从首位起连续为零的字节数。3位控制位表示范围[1,8]而不是[0,7]。以表2中的数据为例,输入8字节的原始数据0x00 00 12 65 01 00 00 00,从首位开始有2个字节全为0,从尾部位开始有3字节全为0,因此指示位记录为6b’001010,这之后接其中非零数据信息0x12 65 01。这样,原始消耗8字节(64位)的数据被压缩转换为6位+24位=30位空间存储。
[0038] 表示零法:对于一个8字节(64位)的数据,表示零法使用8位的二进制控制位来表示其中每8位数据是否是为0,然后在控制信息后将对应非零的字节数据存储。如表1所示,输入的原始数据0x00 24 00 00 00 34 10 00,控制位则以0b01000110依次表示数据的每八位数是否全为0,再将其中非0的数据值存储在控制位后面表示为0x243410。这样,原始消耗8字节(64位)的数据被压缩转换为8位+24位=30位空间存储。
[0039] 本实施方式中,时间戳通常具有固定的间隔,例如1秒,这种模式可以很容易地通过 delta或者delta‑of‑delta变换操作来捕获。但是,某些点通常会违反此模式,例如采样抖动、网络延迟或是机器故障等。因此,本发明以字节为单位对齐不规则数据以提高压缩率比率。
[0040] 具体实施方式四:所述步骤四中的根据步骤二获得的待压缩的时间戳每个时间点的 delta‑of‑delta值对Field Value数据段进行划分,获得划分好的待压缩的Field Value数据小段,具体切割规则为:
[0041] 如果delta‑of‑delta值的绝对值大于16则认为时间间隔相差很大,则:
[0042] 首先,在delta‑of‑delta值的绝对值大于16的时间点进行切割,获得切割后的待压缩的Field Value数据段;
[0043] 然后,设置阙值最大值max和最小值min,如果切割后的待压缩的Field Value数据段的长度小于min则和前一段数据段就近合并,如果大于max就对半切割,直到所有待压缩的Field Value数据段的长度在min和max之间,获得划分好的待压缩的Field Value数据小段;
[0044] 根据数据集的具体情况设置max和min,一般情况下,max是min的10倍以上;
[0045] 若delta‑of‑delta值的绝对值都不大于16,则直接与预设的min和max进行比较,获得划分好的待压缩的Field Value数据小段。
[0046] 具体实施方式五:所述步骤五中的训练好的神经网络分类器,通过以下方式获得:
[0047] 步骤五一、获取Field Value数据,将Field Value数据划分为Field Value数据小段;
[0048] 其中,划分方法与步骤四一致;
[0049] 步骤五二、利用划分好的Field Value数据小段构建训练集:
[0050] 步骤五二一、对每个Field Value数据小段进行细粒度分析,获得细粒度分析结果;
[0051] 步骤五二二、利用细粒度分析结果采用不同的压缩算法对Field Value数据小段进行压缩,获得每个Field Value数据小段压缩比最高的算法,并对每个Field Value数据小段进行标注,获得训练集;
[0052] 压缩算法,包括:Delta、Delta‑of‑delta、XOR、Zigzag、Bit‑packing、Delta XOR,如表2所示:
[0053] 表2
[0054]
[0055]
[0056] 步骤五三、利用步骤五二获得训练集训练神经网络分类器,获得训练好的神经网络分类器;
[0057] 所述神经网络分类器包括以下两个部分,如图3所示:
[0058] 1.word2vec网络
[0059] word2vec网络将步骤五二获得的训练集中的Field Value数据小段转化为Embedding向量,来作为神经网络的输入。由于需要保留每一段数据的模式特征,使用word2vec,将数值转换成数字向量。
[0060] word2vec是词嵌入方法的一种,在这里将每一个数值看成一个词语,其本质上是简化的神经网络,通过训练可以得到当前词与上下文词的关系模型,模型的权重参数即是当前词的数字编码结果,一般是隐藏层的权重矩阵。使用word2vec获得的数字向量可以在保留词上下文关系的前提下简化向量维度,包含变量在整个段传递的关系。
[0061] 2.基于Bi‑LSTM构造的网络:
[0062] 压缩算法选择器神经网络模型是基于Bi‑LSTM构造的网络。下所示为神经网络的结构图,它有一个Bi‑LSTM层,一个Dense layer(全连接层)和一个Softmax层。Bi‑LSTM层包含了LSTM神经元,将它们进行前后双向链接,能够前后双向的传播误差,提高算法准确度;Dense layer(全连接层)用学到的分布式特征表示映射到样本标记空间;Softmax层将神经网络的输出结果转化成概率表达式,找到最大概率项,对分类问题来说,不同大小的概率值表示这个结果属于不同类别的可能性大小。
[0063] 本实施方式中,时间序列包含在一段时间内连续收集的数据点,这导致了连续的时间戳值以相对固定的速率前进并且连续的度量值总是彼此接近。同时,时间序列数据可以由不同的应用程序和领域生成,其中数据模式可能会有很大差异,为某些模式设计的压缩策略通常在其他模式上表现不佳,因此Field Value的压缩需要考虑不同模式情况。时间戳的压缩方法可以判断出时间戳存在的间隔不固定情况,基于时间序列数据的特性,很大程度上可以反映出数据模式发生了变化。