1.本发明涉及的是一种实时数据库领域的方法,具体涉及一种通过动态预测、修正与检验对工业物联网实时数据库数据进行有损压缩的方法及装置。
背景技术:2.随着工业物联网的快速发展,其需要处理和存储的数据量急剧上升,这些数据对于生产情况的分析、设备性能的监控等都有十分重要的意义,将这些数据记录到数据库中,由此产生了实时数据库。针对实时系统在短时间内产生大量数据,数据冗余多,且对实时性的要求很高等问题,非常有必要将数据压缩技术引入实时数据库系统中,而寻找高压缩比和高压缩与解压速度的压缩算法则是其关键所在。
3.目前,实时数据库压缩技术主要可分为有损压缩和无损压缩两种。有损压缩是一种不可逆的压缩,其原理是通过一定的数据筛选规则,选择性地保留部分数据,抛弃部分数据,并保证解压算法的还原精度在系统精度误差允许范围内。无损压缩也称为冗余度压缩,其是一种可逆的压缩,其本质则是削减源数据中的冗余成分,但是却不能舍弃源数据中的有效信息,以保证压缩前的源数据和解压缩还原后的数据完全一致。
4.而无损压缩受到数据统计冗余度的理论限制,其压缩比一般不会太高,无法解决所有数据的存储和传输问题的,因此主要应用于要求准确恢复数据及无失真信息传输等场合。相反,有损压缩算法则有较高的压缩比,可适用于实时数据库系统的存储需求,但同时也会导致系统精度下降。
5.目前,常见的有损压缩算法有死区限值压缩算法和趋势压缩算法,死区限值压缩算法是将新值与上一次的记录值进行比较,当两者差的绝对值小于误差允许阈值时,就抛弃该数据,反之保留该数据,死区压缩算法简单,但是压缩比低,很难满足实时数据库系统的要求。趋势压缩则以pi公司的旋转门算法为代表,旋转门算法提高了实时数据库的压缩率,但并没有对趋势的变化情况加以描述、记录和预测,因此压缩率和精确度都仍有提升的空间。
6.经检索发现,公开号cn108197181a的中国专利于2018年6月22日公开了一种时序数据的压缩存储方法、电子设备及存储介质,包括,分配步骤、建表步骤、合并步骤、存储步骤。该专利对测点数据表中属于同一行的时序数据进行压缩,旋转门算法是一种线性拟合算法,能够减少时序数据的保存量,节省存储空间。但仍然存在无法对压缩趋势的变化进行描述和记录的问题。所以针对工业物联网实时数据库的数据特征及对压缩算法的要求,本领域技术人员仍然需要对工业物联网实时数据库中有损压缩方法进行深入研究。
技术实现要素:7.为克服上述现有技术的不足,本发明提供一种工业物联网实时数据库中有损压缩方法及装置,通过动态预测、修正与检验对实时数据进行有损压的方法,可以同时提高有损压缩的压缩率和精确度。
8.本发明是通过以下技术方案予以实现的:
9.一种工业物联网实时数据库单点有损压缩方法,包括如下步骤:
10.基于预设的时间周期进行数据采集,并对采集到的数据进行数据预处理;
11.对前k个预处理后的数据计算两两之间的斜率,基于预设的误差容忍范围取得当前斜率上下限并进行排序,同时获取当前斜率限值率,确定与斜率限值率对应的数据作为斜率限制率点,将斜率限制率点之前的数据写入数据库,并将斜率限制率点记录为“最后写入数据”,第k个数据记录为“最后读入数据”;
12.读入新数据,基于预设的初始修正值对新数据和“最后写入数据”计算新斜率;同时调整当前斜率限值率,得到新数据的斜率限值率区间;结合新斜率和斜率限值率区间,取得新数据的斜率上下限;
13.将新数据的斜率上下限与当前斜率上下限进行比较,若新数据的斜率上下限均大于当前斜率的上限或新数据的斜率上下限均小于当前斜率的下限,则保存新数据,将新数据作为更新后斜率限制率点,将更新后斜率限制率点的数据记录为“最后读入数据”;
14.计算得到更新后斜率限制率点对应的斜率限值率作为更新后当前斜率限值率;同时计算斜率修正值,基于斜率修正值计算斜率上下限作为更新后当前斜率上下限;
15.再次读入新数据,重复计算和判断步骤,直到完成全部数据压缩。
16.上述技术方案中,采集初始数据,并进行预处理,计算初始斜率得到当前斜率上下限,定义初始斜率限值率和斜率限制率点,将数据写入数据库;对新数据计算斜率并调整当前斜率限值率,得到斜率限值率区间后取得新数据的斜率上下限;根据比较当前和新数据的斜率上下限判断是否保存新数据,若保存新数据,则更新斜率限制率点并计算斜率限值率;调整当前斜率上下限,并重复对新数据进行是否保存的判断步骤,从而实现通过动态预测、修正与检验对实时数据进行有损压缩,同时提高有损压缩的压缩率和精确度。
17.优选地,数据预处理的过程包括:读入k个实时数据p1,p2,...,pk,并进行归一化处理,定义第i(i∈k)个实时采集数据归一化处理公式如下:
[0018][0019]
其中pi为第i个实时采集数据,pi为归一化处理后数据,p
min
为数据最小值,p
max
为数据最大值,数据归一化后,进行时序排列,得到处理后数据:p1(t1,v1),p2(t2,v2),...,pk(tk,vk),其中,t1,t2,
…
tk表示采集数据的时间值,v1,v2,
…
vk表示采集数据的数据值。
[0020]
具体地,对读入的数据进行归一化可以提升数据模型的收敛速度以及提升数据模型的精度,并且对读入的数据进行归一化可以让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
[0021]
优选地,计算前k个初始数据的斜率的过程包括:
[0022]
s11、遍历数据,基于预设的误差容忍范围,对数据两两求斜率限值,得到个斜率上限、个斜率下限以及个斜率中线。
[0023]
具体地,以p1、p2为例,斜率上限为:r
up1
=(v2+t-v1)/(t
2-t1),斜率下限为:r
down1
=(v
2-t-v1)/(t
2-t1),斜率中线为:r1=(v
2-v1)/(t
2-t1),得到个斜率上限、斜率下限以及斜率中线,其中t为误差容忍范围
±
t,初始化斜率修正值dr为0。
[0024]
s12、将s11得到的个斜率上限、斜率下限按分别从小到大排序,取斜率上限平均值为斜率上限r
up
,斜率下限平均值为斜率下限r
down
。
[0025]
s13、将s11得到的个斜率中线r按从小到大排序,按照预设的比例从排序后的斜率中线中选取初始斜率限值率α
p
,取初始斜率限值率对应的数据作为初始斜率限制率点p
α
。
[0026]
s14、将初始斜率限制率点记录为“最后写入数据”,第k个数据记录为“最后读入数据”。
[0027]
具体地,将p
α
作为“最后写入数据”记录为p
last
(t
last
,v
last
),pk作为“最后读入数据”记录为p
read
(t
read
,v
read
)。
[0028]
优选地,用新数据和“最后写入数据”计算新斜率的过程包括:
[0029]
s21、读入新的数据,并进行归一化处理。
[0030]
具体地,对新的数据p
k+1
进行归一化处理,得到p
k+1
(t
k+1
,v
k+1
)。
[0031]
s22、根据“最后写入数据”对新数据的斜率限值进行计算,计算新的斜率上限,计算新的斜率下限。
[0032]
具体地,计算新数据的斜率上限为r'
up1
=(v
k+1
+t-v
last
)/(t
k+1-t
last
)+dr*(t
k+1-t
last
),计算新数据的斜率下限为r'
down1
=(v
k+1-t-v
last
)/(t
k+1-t
last
)+dr*(t
k+1-t
last
)。
[0033]
s23、设置调整间隔为λ,计算调整后的斜率限值率:α
p
±
λσ,并按数值从小到大排序,组成该点的斜率限值率区间,取区间最大值和区间最小值,其中,λ为调整间隔。
[0034]
具体地,1≤λ≤m,m为p
k+1
与p
α
间隔数据数,初始σ取0.05。
[0035]
s24、取新的斜率上限和区间最大值中最小的作为新数据的斜率上限,区新的斜率下限和区间最小值中最小的取新数据的斜率下限。
[0036]
具体地,取新数据的斜率上限r'
up
=min{r'
up1
,r'
up2
},取新数据的斜率下限r'
down
=max{r'
down1
,r'
down2
}。
[0037]
优选地,将新数据的斜率上下限与当前斜率上下限进行比较,若新数据的斜率上下限任一不大于当前斜率的上限或新数据的斜率上下限任一不小于当前斜率的下限,则判断不保存新数据。
[0038]
具体地,若r'
up
>r
up
且r'
down
>r
up
或r'
down
<r
down
且r'
up
<r
down
,那么需要保存新数据,否则不保存数据。
[0039]
具体地,s41、如果需要保存新数据,计算斜率修正值:
[0040]dr
=((v
k+1-v
read
)/(t
k+1-t
read
)-r)/(t
read-t
last
)。
[0041]
s42、作一通过“最后读入数据”的纵垂线,如果r'
up
>r
up
,把该纵垂线与r
up
的交点写入数据库并记录为“最后写入数据”,如果r'
down
<r
down
,把该纵垂线与r
down
的交点写入数据库并记录为“最后写入数据”,并重新计算上下限,
[0042]rup
=(v
k+1
+t-v
last
)/(t
k+1-t
last
)+dr*(t
k+1-t
last
);
[0043]rdown
=(v
k+1-t-v
last
)/(t
k+1-t
last
)+dr*(t
k+1-t
last
)。
[0044]
优选地,若不保存新数据,则重新调整当前斜率上下限,调整当前斜率上下限的规则具体为:如果新数据的斜率上限小于当前斜率上限,则调整新数据的斜率上限作为更新后当前斜率上限;如果新数据的斜率下限大于当前斜率下限,则调整新数据的斜率下限作为更新后当前斜率下限。
[0045]
具体地,若无需保存新数据,如果r'
up
<r
up
,调整r
up
为r'
up
,如果r'
down
>r
down
,调整r
down
为r'
down
。
[0046]
优选地,若保存新数据,则计算斜率限制率点的斜率中线,作为更新后当前斜率限值率。
[0047]
优选地,无论是否保存新数据,记录新数据为“最后读入数据”。
[0048]
进一步地,解压过程包括如下步骤:设查询时间为t,则读取t之前最近的3个数据p1(t1,v1),p2(t2,v2),p3(t3,v3),计算p
t
(t,v
t
)的方法如下:k1=(v
2-v1)/(t
2-t1),k2=(v
3-v2)/(t
3-t2),v
t
=v3+(t
3-t2)(k2+(k
2-k1)(t
3-t2)/(t
2-t1))。
[0049]
一种工业物联网实时数据库单点有损压缩装置,包括:
[0050]
数据采集模块,用于基于预设的时间周期进行数据采集,并对采集到的数据进行数据预处理;
[0051]
数据初始化模块,用于对前k个预处理后的数据计算两两之间的斜率,基于预设的误差容忍范围取得当前斜率上下限并进行排序,同时获取当前斜率限值率,确定与斜率限值率对应的数据作为斜率限制率点,将斜率限制率点之前的数据写入数据库,并将斜率限制率点记录为“最后写入数据”,第k个数据记录为“最后读入数据”;
[0052]
数据计算模块,用于读入新数据,基于预设的初始修正值对新数据和“最后写入数据”计算新斜率;同时调整当前斜率限值率,得到新数据的斜率限值率区间;结合新斜率和斜率限值率区间,取得新数据的斜率上下限;
[0053]
数据比较及保存模块,用于将新数据的斜率上下限与当前斜率上下限进行比较,若新数据的斜率上下限均大于当前斜率的上限或新数据的斜率上下限均小于当前斜率的下限,则保存新数据,将新数据作为更新后斜率限制率点,将更新后斜率限制率点的数据记录为“最后读入数据”;
[0054]
数据更新模块,用于计算得到更新后斜率限制率点对应的斜率限值率作为更新后当前斜率限值率;同时计算斜率修正值,基于斜率修正值计算斜率上下限作为更新后当前斜率上下限。
[0055]
优选地,数据更新模块,还用于在不保存新数据时,重新调整当前斜率上下限。
[0056]
与现有技术相比,本发明的有益效果在于:
[0057]
(1)本发明采集初始数据,并进行预处理,计算初始斜率得到当前斜率上下限,定义初始斜率限值率和斜率限制率点,将数据写入数据库;对新数据计算斜率并调整当前斜率限值率,得到斜率限值率区间后取得新数据的斜率上下限;根据比较当前和新数据的斜率上下限判断是否保存新数据,若保存新数据,则更新斜率限制率点并计算斜率限值率;调整当前斜率上下限,并重复对新数据进行是否保存的判断步骤,从而实现通过动态预测、修正与检验对实时数据进行有损压缩,同时提高有损压缩的压缩率和精确度;
[0058]
(2)本发明针对工业物联网实时系统在短时间内产生大量数据,数据冗余多,且对实时性的要求很高,以及目前无损压缩算法压缩比与还原精度仍有提升空间等问题,通过动态修正与预测,对实时数据进行快速高效的有损压缩,在提高压缩比的同时能满足系统对还原精度的要求,可适用于工业物联网中对实时数据库的存储需求;
[0059]
(3)本发明通过定期对σ值、斜率限值值及区间进行更新确认的方法,使数据的压缩精度随着斜率限值率区间和新数据的变化动态调整、自动适应,有效减少了人为干预因
素,为后期扩展ai(人工智能)压缩提供条件,可以确保系统长期处于可靠和高效运行状态。
附图说明
[0060]
图1为根据本发明实施例的实时数据库中有损压缩方法步骤流程图;
[0061]
图2为根据本发明实施例的斜率限值率概念定义图;
[0062]
图3为根据本发明实施例的监测点的工作状态定期诊断并更新方法流程图;
[0063]
图4为根据本发明实施例的解压过程流程图;
[0064]
图5为根据本发明实施例的系统框架图。
具体实施方式
[0065]
以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述发实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
[0066]
实施例1
[0067]
本实施例提出了一种工业物联网实时数据库中有损压缩方法。首先读入约定次数的连续实时数据,并根据对应实时采集数据及误差允许范围,计算初始斜率上下限以及斜率限值率;读入新的数据,结合斜率限值率区间,计算新的斜率上下限;根据新数据的斜率上下限与当前斜率上下限进行比较,并决定是否保存新数据。本发明针对工业物联网实时系统在短时间内产生大量数据,数据冗余多,且对实时性的要求很高,以及目前无损压缩算法压缩比与还原精度仍有提升空间等问题,通过动态修正与预测,对实时数据进行快速高效的有损压缩,在提高压缩比的同时能满足系统对还原精度的要求,可适用于工业物联网中对实时数据库的存储需求。
[0068]
如图1所示,一种工业物联网实时数据库中有损压缩方法,步骤如下:
[0069]
步骤1:系统初始化,读入k个实时数据,并对数据进行归一化处理,根据前k个数据及误差允许范围,计算斜率上下限以及斜率限值率,将小于斜率限值率对应的斜率限制率点的数据写入数据库,并将斜率限制率点数据记录为“最后写入数据”,第k个数据记录为“最后读入数据”,初始化各修正值为0;
[0070]
步骤2:读入新的数据,用新数据、“最后写入数据”及误差允许范围,结合斜率限值率区间,计算斜率上下限;
[0071]
步骤3:根据新数据的斜率上下限与当前斜率上下限进行比较,并决定是否保存新数据,并更新斜率限值率;
[0072]
步骤4:调整当前斜率上下限及斜率修正值,并重复步骤2。
[0073]
其中,步骤1中初始化过程为:读入k个实时数据p1,p2,...,pk,并进行归一化处理,定义第i(i∈k)个实时采集数据归一化处理公式如下:
[0074][0075]
其中pi为第i个实时采集数据,pi为归一化处理后数据,p
min
为数据最小值,p
max
为数据最大值。
[0076]
如图2所示,数据归一化后,按横坐标由小到大排序,得到处理后数据:p1(t1,v1),p2(t2,v2),...,pk(tk,vk),其中,t1,t2,
…
tk表示采集数据的时间值,v1,v2,
…
vk表示采集数据的数据值,并计算初始斜率上限,步骤如下:
[0077]
s11、遍历数据,两两求斜率限值,以p1、p2为例,斜率上限为:r
up1
=(v2+t-v1)/(t
2-t1),斜率下限为:r
down1
=(v
2-t-v1)/(t
2-t1),斜率中线为:r1=(v
2-v1)/(t
2-t1),得到个斜率上限、斜率下限以及斜率中线,其中t为误差容忍范围
±
t,初始化斜率修正值dr为0。
[0078]
s12、将s11得到的个斜率上限、斜率下限按从小到大排序,取上限平均值为斜率上限r
up
,下限平均值为斜率下限r
down
。
[0079]
s13、将s11得到的斜率中线按从小到大排序,按80%比例定义初始斜率限值率α
p
,将第80%个斜率中线定义为初始斜率限值率α
p
,取初始斜率限值率α
p
对应的数据作为初始斜率限制率点p
α
。
[0080]
s14、将p
α
作为“最后写入数据”记录为p
last
(t
last
,v
last
),pk作为“最后读入数据”记录为p
read
(t
read
,v
read
)。
[0081]
步骤2中所述计算斜率上下限的过程,包括:
[0082]
s21、读入新的数据p
k+1
,并进行归一化处理,得到p
k+1
(t
k+1
,v
k+1
)。
[0083]
s22、计算斜率上限:r'
up1
=(v
k+1
+t-v
last
)/(t
k+1-t
last
)+dr*(t
k+1-t
last
),斜率下限:r'
down1
=(v
k+1-t-v
last
)/(t
k+1-t
last
)+dr*(t
k+1-t
last
)。
[0084]
s23、计算p
k+1
(t
k+1
,v
k+1
)点的斜率限值率区间:设置调整间隔为λ(1≤λ≤n,n为p
k+1
与p
α
间隔数据数),计算调整后的斜率限值率:α
p
±
λσ(初始σ取0.05),并按数值从小到大排序,组成该点的斜率限值率区间,取最大值、最小值r'
up2
、r'
down2
。
[0085]
s24、取r'
up
=min{r'
up1
,r'
up2
},r'
down
=max{r'
down1
,r'
down2
}。
[0086]
同时,由于监测点数据采集的连续长期运行,为系统部署工作状态定期诊断并更新方案,在首次确定的计算模式基础上,将定期为监测点的采集系统调节σ的大小值。监测点的工作状态定期诊断并更新方法流程如图3所示。在每次调节σ的大小时,将计算并更新对应的斜率限值率及区间。利用重新实际数据采集,对新的斜率限值率及区间进行有效性验证。当计算后的新斜率与图2中模型的计算模式匹配度最好时,则确定调节σ值,否则σ值保持为上一次设置值。根据已经压缩的数据效果,来调整更新更优的取值,如一个周期一调整,具体的调整策略和方式要结合实际应用的系统来选取。监测点的定期调节流程如表1所示。本发明通过定期对σ值及斜率限值率及区间进行更新确认的方法,可以确保系统长期处于可靠和高效运行状态。
[0087]
表1调整策略
[0088][0089][0090]
步骤3中所述的比较过程如下:如果r'
up
>r
up
且r'
down
>r
up
或r'
down
<r
down
且r'
up
<r
down
,那么需要保存新数据,则更新斜率限制率点为p
k+1
,并更新斜率限值率α
p
,否则,不保存新数据,只重新调整当前斜率。
[0091]
步骤4中所述调整过程如下:
[0092]
s41、根据第三步的结果,如果需要保存新数据,计算斜率修正值:
[0093]dr
=((v
k+1-v
read
)/(t
k+1-t
read
)-r)/(t
read-t
last
)。
[0094]
s42、作一通过“最后读入数据”的纵垂线,如果r'
up
>r
up
,把该纵垂线与r
up
的交点写入数据库并记录为“最后写入数据”,如果r'
down
<r
down
,把该纵垂线与r
down
的交点写入数据库并记录为“最后写入数据”,并重新计算上下限:
[0095]rup
=(v
k+1
+t-v
last
)/(t
k+1-t
last
)+dr*(t
k+1-t
last
);
[0096]rdown
=(v
k+1-t-v
last
)/(t
k+1-t
last
)+dr*(t
k+1-t
last
);
[0097]
s43、若无需保存新数据,如果r'
up
<r
up
,调整r
up
为r'
up
,如果r'
down
>r
down
,调整r
down
为r'
down
。
[0098]
s44、无论是否保存新数据,记录当前数据为“最后读入数据”。
[0099]
解压过程如图4所示,包括如下步骤:设查询时间为t,则读取t之前最近的3个数据p1(t1,v1),p2(t2,v2),p3(t3,v3),计算p
t
(t,v
t
)的方法如下:k1=(v
2-v1)/(t
2-t1),k2=(v
3-v2)/(t
3-t2),v
t
=v3+(t
3-t2)(k2+(k
2-k1)(t
3-t2)/(t
2-t1))。
[0100]
实施例2
[0101]
如图5所示,本实施例提供了一种工业物联网实时数据库单点有损压缩装置,包括:
[0102]
数据采集模块,用于基于预设的时间周期进行数据采集,并对采集到的数据进行数据预处理;
[0103]
数据初始化模块,用于对前k个预处理后的数据计算两两之间的斜率,基于预设的误差容忍范围取得当前斜率上下限并进行排序,同时获取当前斜率限值率,确定与斜率限值率对应的数据作为斜率限制率点,将斜率限制率点之前的数据写入数据库,并将斜率限制率点记录为“最后写入数据”,第k个数据记录为“最后读入数据”;
[0104]
数据计算模块,用于读入新数据,基于预设的初始修正值对新数据和“最后写入数据”计算新斜率;同时调整当前斜率限值率,得到新数据的斜率限值率区间;结合新斜率和斜率限值率区间,取得新数据的斜率上下限;
[0105]
数据比较及保存模块,用于将新数据的斜率上下限与当前斜率上下限进行比较,若新数据的斜率上下限均大于当前斜率的上限或新数据的斜率上下限均小于当前斜率的下限,则保存新数据,将新数据作为更新后斜率限制率点,将更新后斜率限制率点的数据记录为“最后读入数据”;
[0106]
数据更新模块,用于计算得到更新后斜率限制率点对应的斜率限值率作为更新后当前斜率限值率;同时计算斜率修正值,基于斜率修正值计算斜率上下限作为更新后当前斜率上下限。
[0107]
数据更新模块,还用于在不保存新数据时,重新调整当前斜率上下限。
[0108]
本系统由终端层、边缘层和平台层组成,数据采集与压缩处理部署在边缘层,将模型计算和更新的交互工作部署于靠近终端的边缘侧,可以降低系统数据远程传输的时延,提升系统的工作性能。监测时,intagent采用周期性模型更新方法,即设定的模型更新周期到达后,将自动执行模型更新计算的过程。所述的周期时间可以由平台层的服务平台进行配置,而且可以进行周期间隔的调节。每个终端中植入一个智能代理(即intagent)软件,该intagent负责接收平台层发来的数据压缩的工作策略(如intagent的模型参数、模型更新周期等),并根据压缩策略完成数据压缩的模型更新及计处理。
[0109]
边缘层各边缘节点执行数据采集、模型计算和更新,并依据参数更新后的模型实施压缩操作;边缘节点采用区域化(工厂内不同区域或多个工厂区域)部署方案,边缘数据采集和压缩的分布式处理。平台层:采集方案定义、压缩参数设置、诊断预测模型;所述的采集方案定义指采集点与边缘节点(en)的关联关系;压缩参数设置用于设置采集周期、σ参数等的设定;诊断预测模型对现场异常采集数据进行识别并自分析,通过连续采样数据执行预测等。
[0110]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案。