首页 / 专利分类库 / 基本电子电路 / 基于流式大数据技术的分布式农业数据存储管理方法

基于流式大数据技术的分布式农业数据存储管理方法

申请号 CN202410208228.3 申请日 2024-02-26 公开(公告)号 CN117792403B 公开(公告)日 2024-05-07
申请人 成都农业科技职业学院; 发明人 向模军;
摘要 本 发明 涉及 电子 数字 数据处理 技术领域,具体涉及基于流式 大数据 技术的分布式农业数据存储管理方法,包括:对历史流式数据进行压缩,根据子串的长度以及被压缩的次数获得当前流式数据的初始字典长度,根据字符之间的距离、被压缩的次数、字符所属子串的长度以及子串之间的间隔获得字符的瞬时增量参数,根据历史流式数据被压缩的过程中,不同子串的间隔以及不同字符的瞬时增量参数获得字符所属字典增量参数;结合初始字典长度和字典增量参数对当前流式数据进行压缩存储。本发明提高了 对流 式数据进行动态压缩的适应性,更加适应了农业流式数据动态变化的特点,提高了对农业流式大数据的压缩效率。
权利要求

1.基于流式大数据技术的分布式农业数据存储管理方法,其特征在于,该方法包括以下步骤:
获取持续更新的流式数据,将更新前的流式数据记为历史流式数据,将最新一次更新得到的流式数据记为当前流式数据;
将流式数据中连续字符形成序列记为子串,对历史流式数据进行压缩,根据子串的长度以及被压缩的次数获得当前流式数据的初始字典长度,根据当前流式数据中字符之间的距离、字符被压缩的次数、字符所属子串的长度以及子串之间的间隔获得字符的瞬时增量参数,所述子串的长度为子串中字符的数量;
根据历史流式数据被压缩的过程中,字符所属的相同长度的不同子串之间的间隔以及不同字符之间的瞬时增量参数差异获得字符所属子串的字典增量参数;
结合初始字典长度和字典增量参数对当前流式数据进行压缩存储;
其中,所述对历史流式数据进行压缩,根据子串的长度以及被压缩的次数获得当前流式数据的初始字典长度,包括的具体方法为:
利用LZ77压缩算法对历史流式数据进行压缩处理,在压缩处理过程中将所有相同长度的子串被压缩的次数记为历史流式数据中对应长度下的子串的第一参数;
当前流式数据的初始字典长度的具体计算方法为:
其中,H表示当前流式数据的初始字典长度;wl表示历史流式数据中长度为l的子串的压缩权值;L表示历史流式数据中子串的最大长度;l表示历史流式数据中子串的长度;Nl表示历史流式数据中长度为l的子串的第一参数;N′表示历史流式数据中所有字符的数量; 表示向上取整;norm()表示线性归一化函数;
其中,所述根据当前流式数据中字符之间的距离、字符被压缩的次数、字符所属子串的长度以及子串之间的间隔获得字符的瞬时增量参数,包括的获取方法为:
根据字符所属子串的长度以及子串之间的间隔获得字符的时序连续率;
根据字符之间的距离、字符被压缩的次数以及字符所属子串的长度获得当前流式数据中字符的时序增益参数;
根据字符的时序连续率和时序增益参数获得字符的瞬时增量参数;
其中,所述根据字符所属子串的长度以及子串之间的间隔获得字符的时序连续率,包括的具体方法为:
获取历史流式数据在压缩过程中各字符所属子串的长度,将同一种字符所属的所有相同长度的子串记为所述同一种字符的目标子串,对于历史流式数据中任意字符的所有目标子串中相邻的两个目标子串,将第一个目标子串的最后一个字符与第二个目标子串的第一个字符之间所包括的字符数量,记为目标子串的间隔长度,将任意字符的所有目标子串的间隔长度的均值记为字符所属子串的平均间隔长度参数;
当前流式数据中任意字符的时序连续率的具体计算方法为:
其中,SL表示当前流式数据中字符的时序连续率;l′表示当前流式数据中字符所属子串的长度;Sl表示当前流式数据中所属子串的长度为l的字符的平均间隔长度参数;L′表示当前流式数据中字符所属子串的最大长度;norm()表示线性归一化函数;
其中,所述根据字符之间的距离、字符被压缩的次数以及字符所属子串的长度获得当前流式数据中字符的时序增益参数,包括的具体方法为:
获取历史流式数据在压缩过程中,任意字符所属的所有子串被压缩的次数,记为字符的压缩频次,将当前流式数据中任意两个字符之间所包括字符的数量记为所述两个字符之间的字符距离参数;
获取当前流式数据中字符的时序增益参数,具体计算方法为:
其中,SZi表示当前流式数据中第i个字符的时序增益参数;Pi表示当前流式数据中第i个字符的压缩频次;Sim表示当前流式数据中第i个字符被第m次压缩时与当前流式数据中最后一个字符的字符距离参数;PCim表示当前流式数据中第i个字符被第m次压缩时的压缩贡献参数;Mi表示当前流式数据中第i个字符被压缩的次数;e表示自然常数;Nilm表示第i个字符所属长度为l的子串被第m次压缩之前的压缩过程中出现的总次数;li表示当前流式数据中第i个字符所属子串的长度;N′表示历史流式数据中所有字符的数量;
其中,所述根据字符的时序连续率和时序增益参数获得字符的瞬时增量参数,包括的具体方法为:将 记为当前流式数据中第i个字符的瞬时增量参数,其中e表示自然常数;SLi表示当前流式数据中第i个字符的时序连续率;SZi表示当前流式数据中第i个字符的时序增益参数;
其中,所述根据历史流式数据被压缩的过程中,字符所属的相同长度的不同子串之间的间隔以及不同字符之间的瞬时增量参数差异获得字符所属子串的字典增量参数,包括的具体方法为:
根据历史流式数据被压缩的过程中,字符所属的相同长度的不同子串之间的间隔获得第一子串和第一子串的压缩间隔长度;
当前流式数据中字符所属子串的字典增量参数的具体计算方法为:
其中,ΔHil表示当前流式数据中第i个字符所属长度为l的子串的字典增量参数;Sijl′表示当前流式数据中第i个数据所属长度为l′的第j个第一子串的压缩间隔长度;Jil′表示当前流式数据中第i个数据所属长度为l′的第一子串的数量;ZJ′i表示当前流式数据中第i个字符的压缩增量参数;ki表示当前流式数据中第i个字符的字典增量系数;
其中,所述当前流式数据中第i个字符的压缩增量参数的具体计算方法为:
其中i′≠i,I表示当前流式数据中所有字符的数量;ZJi表示当前流式数据中第i个字符的瞬时增量参数;ZJi′表示当前流式数据中第i′个字符的瞬时增量参数;ZJ′i表示当前流式数据中第i个字符的压缩增量参数。
2.根据权利要求1所述基于流式大数据技术的分布式农业数据存储管理方法,其特征在于,所述根据历史流式数据被压缩的过程中,字符所属的相同长度的不同子串之间的间隔获得第一子串和第一子串的压缩间隔长度,包括的具体方法为:
对历史流式数据进行压缩的过程中,将任意长度的所有子串中已经压缩的子串记为第一子串,将未压缩且即将压缩的子串记为第二子串,将每一个第一子串与第二子串的间隔长度记为第一子串的压缩间隔长度。
3.根据权利要求1所述基于流式大数据技术的分布式农业数据存储管理方法,其特征在于,所述结合初始字典长度和字典增量参数对当前流式数据进行压缩存储,包括的具体方法为:
历史流式数据更新得到当前流式数据后,将更新的字符滑入LZ77压缩算法的压缩字典中,若更新字符在当前流式数据中所述子串对应的字典增量参数不为零,则将当前流式数据的初始字典长度和更新的字符在当前流式数据中所属子串的字典增量参数的和值,记为更新的字符在当前流式数据中所属子串的压缩字典长度;
结合压缩字典长度,并利用LZ77压缩算法对更新的字符所属子串进行压缩,获得当前流式数据的压缩数据,将所有流式数据对应当前流式数据的压缩数据打包为一个压缩包进行存储。

说明书全文

基于流式大数据技术的分布式农业数据存储管理方法

技术领域

[0001] 本发明涉及电子数字数据处理技术领域,具体涉及基于流式大数据技术的分布式农业数据存储管理方法。

背景技术

[0002] 在农业生产过程中通常通过多种传感器实时生成大量的流式数据用于农业生产监测,但是由于分布式的农业流式大数据的密集程度越来越高,数据量越来越大,因此需要对其进行压缩存储。
[0003] 传统的LZ77压缩算法进行数据压缩时,由于压缩字典的长度限制,当流式数据更新后新的数据进入压缩字典,导致无法对整个输入进行压缩或者无法利用之前的数据进行匹配,进一步对流式数据的压缩效率低下。

发明内容

[0004] 本发明提供基于流式大数据技术的分布式农业数据存储管理方法,以解决现有的问题。
[0005] 本发明的基于流式大数据技术的分布式农业数据存储管理方法采用如下技术方案:
[0006] 本发明一个实施例提供了基于流式大数据技术的分布式农业数据存储管理方法,该方法包括以下步骤:
[0007] 获取持续更新的流式数据,将更新前的流式数据记为历史流式数据,将最新一次更新得到的流式数据记为当前流式数据;
[0008] 将流式数据中连续字符形成序列记为子串,对历史流式数据进行压缩,根据子串的长度以及被压缩的次数获得当前流式数据的初始字典长度,根据当前流式数据中字符之间的距离、字符被压缩的次数、字符所属子串的长度以及子串之间的间隔获得字符的瞬时增量参数,所述子串的长度为子串中字符的数量;
[0009] 根据历史流式数据被压缩的过程中,字符所属的相同长度的不同子串之间的间隔以及不同字符之间的瞬时增量参数差异获得字符所属子串的字典增量参数;
[0010] 结合初始字典长度和字典增量参数对当前流式数据进行压缩存储。
[0011] 进一步地,所述对历史流式数据进行压缩,根据子串的长度以及被压缩的次数获得当前流式数据的初始字典长度,包括的具体方法为:
[0012] 利用LZ77压缩算法对历史流式数据进行压缩处理,在压缩处理过程中将所有相同长度的子串被压缩的次数记为历史流式数据中对应长度下的子串的第一参数;
[0013] 当前流式数据的初始字典长度的具体计算方法为:
[0014]
[0015] 其中,表示当前流式数据的初始字典长度; 表示历史流式数据中长度为 的子串的压缩权值;表示历史流式数据中子串的最大长度;表示历史流式数据中子串的长度;表示历史流式数据中长度为 的子串的第一参数; 表示历史流式数据中所有字符的数量; 表示向上取整; 表示线性归一化函数。
[0016] 进一步地,所述根据当前流式数据中字符之间的距离、字符被压缩的次数、字符所属子串的长度以及子串之间的间隔获得字符的瞬时增量参数,包括的获取方法为:
[0017] 根据字符所属子串的长度以及子串之间的间隔获得字符的时序连续率;
[0018] 根据字符之间的距离、字符被压缩的次数以及字符所属子串的长度获得当前流式数据中字符的时序增益参数;
[0019] 根据字符的时序连续率和时序增益参数获得字符的瞬时增量参数。
[0020] 进一步地,所述根据字符所属子串的长度以及子串之间的间隔获得字符的时序连续率,包括的具体方法为:
[0021] 获取历史流式数据在压缩过程中各字符所属子串的长度,将同一种字符所属的所有相同长度的子串记为所述同一种字符的目标子串,对于历史流式数据中任意字符的所有目标子串中相邻的两个目标子串,将第一个目标子串的最后一个字符与第二个目标子串的第一个字符之间所包括的字符数量,记为目标子串的间隔长度,将任意字符的所有目标子串的间隔长度的均值记为字符所属子串的平均间隔长度参数;
[0022] 当前流式数据中任意字符的时序连续率的具体计算方法为:
[0023]
[0024] 其中, 表示当前流式数据中字符的时序连续率;表示当前流式数据中字符所属子串的长度;表示当前流式数据中所属子串的长度为 的字符的平均间隔长度参数;表示当前流式数据中字符所属子串的最大长度; 表示线性归一化函数。
[0025] 进一步地,所述根据字符之间的距离、字符被压缩的次数以及字符所属子串的长度获得当前流式数据中字符的时序增益参数,包括的具体方法为:
[0026] 获取历史流式数据在压缩过程中,任意字符所属的所有子串被压缩的次数,记为字符的压缩频次,将当前流式数据中任意两个字符之间所包括字符的数量记为所述两个字符之间的字符距离参数;
[0027] 获取当前流式数据中字符的时序增益参数,具体计算方法为:
[0028]
[0029] 其中, 表示当前流式数据中第 个字符的时序增益参数;表示当前流式数据中第个字符的压缩频次; 表示当前流式数据中第 个字符被第 次压缩时与当前流式数据中最后一个字符的字符距离参数; 表示当前流式数据中第 个字符被第 次压缩时的压缩贡献参数; 表示当前流式数据中第 个字符被压缩的次数;表示自然常数; 表示第 个字符所属长度为 的子串被第 次压缩之前的压缩过程中出现的总次数;表示当前流式数据中第个字符所属子串的长度; 表示历史流式数据中所有字符的数量。
[0030] 进一步地,所述根据字符的时序连续率和时序增益参数获得字符的瞬时增量参数,包括的具体方法为:
[0031] 将 记为当前流式数据中第 个字符的瞬时增量参数,其中 表示自然常数; 表示当前流式数据中第 个字符的时序连续率; 表示当前流式数据中第个字符的时序增益参数。
[0032] 进一步地,所述根据历史流式数据被压缩的过程中,字符所属的相同长度的不同子串之间的间隔以及不同字符之间的瞬时增量参数差异获得字符所属子串的字典增量参数,包括的具体方法为:
[0033] 根据历史流式数据被压缩的过程中,字符所属的相同长度的不同子串之间的间隔获得第一子串和第一子串的压缩间隔长度;
[0034] 当前流式数据中字符所属子串的字典增量参数的具体计算方法为:
[0035]
[0036] 其中, 表示当前流式数据中第 个字符所属长度为 的子串的字典增量参数;表示当前流式数据中第 个数据所属长度为 的第 个第一子串的压缩间隔长度; 表示当前流式数据中第 个数据所属长度为 的第一子串的数量; 表示当前流式数据中第个字符的压缩增量参数;表示当前流式数据中第 个字符的字典增量系数。
[0037] 进一步地,所述根据历史流式数据被压缩的过程中,字符所属的相同长度的不同子串之间的间隔获得第一子串和第一子串的压缩间隔长度,包括的具体方法为:
[0038] 对历史流式数据进行压缩的过程中,将任意长度的所有子串中已经压缩的子串记为第一子串,将未压缩且即将压缩的子串记为第二子串,将每一个第一子串与第二子串的间隔长度记为第一子串的压缩间隔长度。
[0039] 进一步地,所述当前流式数据中第个字符的压缩增量参数的具体计算方法为:
[0040]
[0041] 其中 ,表示当前流式数据中所有字符的数量; 表示当前流式数据中第 个字符的瞬时增量参数; 表示当前流式数据中第 个字符的瞬时增量参数; 表示当前流式数据中第个字符的压缩增量参数。
[0042] 进一步地,所述结合初始字典长度和字典增量参数对当前流式数据进行压缩存储,包括的具体方法为:
[0043] 历史流式数据更新得到当前流式数据后,将更新的字符滑入LZ77压缩算法的压缩字典中,若更新字符在当前流式数据中所述子串对应的字典增量参数不为零,则将当前流式数据的初始字典长度和更新的字符在当前流式数据中所属子串的字典增量参数的和值,记为更新的字符在当前流式数据中所属子串的压缩字典长度;
[0044] 结合压缩字典长度,并利用LZ77压缩算法对更新的字符所属子串进行压缩,获得当前流式数据的压缩数据,将所有流式数据对应当前流式数据的压缩数据打包为一个压缩包进行存储。
[0045] 本发明的技术方案的有益效果是:通过对历史流式数据的压缩分析和当前流式数据的字典增量参数计算,结合字典增量参数和初始字典长度能够动态调整压缩字典的长度,使得流式数据更新后新的数据进入压缩字典,压缩字典可以根据新的数据动态调整对应的字典长度,避免旧的字符被移出压缩字典对应的窗口,从而丢失与之前数据的匹配信息的情况,提高了对流式数据这种增量信息进行动态压缩的适应性,适应了农业流式数据动态变化的特点,保证数据的实时性,更有效地压缩农业流式大数据,减少了存储空间并提高了对农业流式大数据的压缩效率。附图说明
[0046] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0047] 图1为本发明基于流式大数据技术的分布式农业数据存储管理方法的步骤流程图

具体实施方式

[0048] 为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的基于流式大数据技术的分布式农业数据存储管理方法,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构或特点可由任何合适形式组合。
[0049] 除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
[0050] 下面结合附图具体的说明本发明所提供的基于流式大数据技术的分布式农业数据存储管理方法的具体方案。
[0051] 请参阅图1,其示出了本发明一个实施例提供的基于流式大数据技术的分布式农业数据存储管理方法的步骤流程图,该方法包括以下步骤:
[0052] 步骤S001:获取历史流式数据和当前流式数据。
[0053] 需要说明的是,本实施例的主要目的是为了对农业相关的农业流式大数据进行压缩而后进行分布式存储,所以首先需要对相关的农业流式大数据进行采集以及收集,现有技术中对于农业相关的农业流式大数据进行采集与收集的方式为通过多种类型的传感器进行对应领域的数据的采集。
[0054] 另外,本实施例所使用的流式大数据技术具体为S4(Simple Scalable Streaming System,简单可扩展流式系统)技术,所述S4技术是一个受 MapReduce启发的现有分布式流式数据处理系统,在其他实施例中可使用其他流式大数据技术,所述MapReduce的中文名称为映射‑规约编程模型。
[0055] 具体的,通过农业场景下的传感器采集对应的时序数据,将传感器采集的所有时序数据统称为流式数据。
[0056] 将更新前的流式数据记为历史流式数据,将更新后的流式数据记为当前流式数据。
[0057] 需要说明的是,由于历史流式数据是未更新的流式数据,而当前流式数据是更新后的流式数据,即历史流式数据属于当前流式数据的一部分,当前流式数据更新后所增加的数据以外的部分为历史流式数据。
[0058] 另外,由于历史流式数据和当前流式数据为流式数据在不同更新状态下的数据,因此历史流式数据和当前流式数据也可以统称为流式数据。
[0059] 需要说明的是,通过传感器获取农业的流式大数据时,通常通过温度传感器、光照传感器、湿度传感器以及二传感器分别实时获取温室大棚内的温度数据、光照强度数据、湿度数据以及二氧化碳浓度数据。
[0060] 至此,通过上述方法得到流式数据。
[0061] 步骤S002:将流式数据中连续字符形成序列记为子串,对历史流式数据进行压缩,根据子串的长度以及被压缩的次数获得当前流式数据的初始字典长度,根据当前流式数据中字符之间的距离、字符被压缩的次数、字符所属子串的长度以及子串之间的间隔获得字符的瞬时增量参数。
[0062] 需要说明的是,在通过LZ77压缩算法对农业流式数据进行压缩时,由于流式数据在时序上动态变化的,而LZ77压缩算法是基于固定长度的压缩字典进行数据压缩,因此利用LZ77压缩算法对流式数据进行压缩时,可能会存在重复数据还没有出现,压缩字典中的数据已经进行了更新的问题,无法对流式数据达到实时压缩的效果。虽然通过增加LZ77压缩算法的压缩字典的长度可以在一定程度上避免这种情况,但是盲目增大压缩字典长度会增加压缩数据时的检索负担,导致对流式数据的压缩计算成本增加,无法对农业流式大数据进行高效压缩。
[0063] 为了对于农业流式大数据进行数据压缩时有着更好的效果,本实施例通过对于农业流式大数据的数据流进行分析,获得其中不同的数据时序连续率以及时序增益进行不同数据的瞬时等待价值的获取,而后在数据流的压缩过程中,根据随着时序出现的不同的数据对应的瞬时等待价值进行LZ77压缩字典的更新代价区间的延长,获得增量压缩字典,使LZ77压缩算法在对农业流式大数据进行压缩的时候,满足低检索代价的情况下的高效压缩。
[0064] 进一步的,由于LZ77压缩算法通过压缩字典进行数据压缩前需要获取初始字典长度,而大小固定的初始字典长度不适用于随时间更新的流式数据,因此对于LZ77压缩算法的初始字典长度,由于相同传感器所采集到的农业流式大数据在长时间范围内具有明显的时序周期性,因此本实施例利用农业流式大数据在历史流式数据被压缩后的情况进行分析,获取流式数据在最后一次更新,即当前流式数据的初始字典长度。
[0065] 具体的,步骤(2.1),首先,将流式数据中任意个连续字符形成的序列记为子串;利用LZ77压缩算法对历史流式数据进行压缩,获取历史流式数据中每个子串的长度,将所有相同长度的子串被压缩的次数记为历史流式数据中对应长度下的子串的第一参数,所述长度为字符的数量。
[0066] 然后,根据历史流式数据中子串的长度以及历史流式数据的第一参数,获取当前流式数据的初始字典长度,具体计算方法为:
[0067]
[0068] 其中,表示当前流式数据的初始字典长度; 表示历史流式数据中长度为 的子串的压缩权值;表示历史流式数据中子串的最大长度;表示历史流式数据中子串的长度;表示历史流式数据中长度为 的子串的第一参数; 表示历史流式数据中所有字符的数量; 表示向上取整; 表示线性归一化函数。
[0069] 需要说明的是,本实施例通过将历史流式数据压缩后不同长度的子串所对应的长度作为当前流式数据在压缩时对应初始字典长度的权重,通过加权平均的方式,对于整体被压缩过的不同长度的子串确保可以满足大量的高频子串压缩以及一部分的低频子串压缩。
[0070] 另外,在对流式数据进行压缩的过程中,不同数据所能够产生的压缩效率不同,因此本实时例通过对压缩过程中的不同字符进行特征分析,获取字符的瞬时增量价值,以反映字符对压缩效率的影响程度。
[0071] 步骤(2.2),首先,获取历史流式数据在压缩过程中各字符所属子串的长度,将同一种字符所属的所有相同长度的子串记为所述字符的目标子串,对于历史流式数据中相邻的两个目标子串,将第一个目标子串的最后一个字符与第二个目标子串的第一个字符之间所包括的字符数量,记为目标子串的间隔长度,将任意字符的所有目标子串的间隔长度的均值记为字符所属子串的平均间隔长度参数。
[0072] 然后,获取当前流式数据中任意字符的时序连续率,具体计算方法为:
[0073]
[0074] 其中, 表示当前流式数据中字符的时序连续率;表示当前流式数据中字符所属子串的长度;表示当前流式数据中所属子串的长度为 的字符的平均间隔长度参数;表示当前流式数据中字符所属子串的最大长度; 表示线性归一化函数。
[0075] 需要说明的是,在流式数据中的字符被压缩的过程中,字符所属子串的长度是不一定相等的,并且每个相同长度的子串被压缩时的间隔长度不一定相同,而字符的压缩价值越高时,即字符所属子串被压缩后所能够提升压缩效率的程度越高时,应该是该字符每次被压缩时所属子串的长度较长,且该长度下的子串被压缩的间隔长度较小,因此本实施例通过对于农业的流式数据中字符每次被进行压缩的时候相同长度下的子串出现的平均间隔长度,与所属子串长度的比值作为子串的时序连续率,时序连续率的数值越大,说明该长度下的子串在被压缩的过程中,重复出现的次数越多,且子串较大,能够提供较大的压缩率,反之不能够提供较大的压缩率,即对应长度的子串的时序连续率的数值越大,说明在压缩过程中,字符对应子串在流式数据中出现的频率较高,对流式数据的压缩率提升的贡献越大。
[0076] 步骤(2.3),获取当前流式数据在之前所有更新次数下任意字符被压缩的次数,记为字符的压缩频次,将当前流式数据中任意两个字符之间所包括字符的数量记为所述两个字符之间的字符距离参数;获取当前流式数据中字符的时序增益参数,具体计算方法为:
[0077]
[0078] 其中, 表示当前流式数据中第 个字符的时序增益参数;表示第 个字符的压缩频次; 表示当前流式数据中第 个字符被第 次压缩时与当前流式数据中最后一个字符的字符距离参数; 表示当前流式数据中第 个字符被第 次压缩时的压缩贡献参数;表示当前流式数据中第 个字符被压缩的次数;表示自然常数; 表示第 个字符所属长度为 的子串被第 次压缩之前的压缩过程中出现的总次数;表示当前流式数据中第个字符所属子串的长度; 表示历史流式数据中所有字符的数量。
[0079] 需要说明的是,农业流式大数据中字符被压缩的频次越多,则说明字符在历史压缩过程中为已经压缩的数据提供的压缩率越大,那么该字符在一定时间内的农业流式大数据中可预见的为高频数据,所以包含该字符的子串在流式数据中重复出现的概率就较大,能够提供的压缩效率越高;其次,字符在每次被进行压缩时,其所属子串的长度无法确定,且不同长度的子串能够提供的压缩率的贡献程度也不同,所以通过字符对应的子串的压缩过程中,其在已经压缩的数据中出现的次数越多,且子串的长度越长,则说明字符不仅大量重复,并且重复时都是较长的子串,则该字符在压缩过程中对提高压缩率的贡献较大,即农业流式大数据中,该字符为核心数据,则其应该对应的增益就越大。
[0080] 另外,为了防止该字符仅是在距离当前压缩时刻较远的时刻具有高压缩率,所以本实施例引入了衰减函数 作为权值,即距离当前时候越远的字符被进行压缩时候的增益权值越小,反之距离当前时刻越近的时刻中,字符被进行压缩的时增益权值越大,则进一步的,字符对应的时序增益越大,说明在距离当前时刻较近的时刻中,字符被压缩次数较多,且压缩贡献率较大,字符对应的时序增益则越大。
[0081] 进一步的,获取当前流式数据中字符的瞬时增量参数,具体计算方法为:
[0082]
[0083] 其中, 表示当前流式数据中第 个字符的瞬时增量参数;表示自然常数; 表示当前流式数据中第个字符的时序连续率; 表示当前流式数据中第个字符的时序增益参数。
[0084] 需要说明的是,所述瞬时增量参数用于描述字符在压缩时对于提升压缩率的贡献程度;字符的瞬时增量参数越大,说明在农业流式大数据中,所述字符所在的子串在流式数据中出现的频率较高,在对其进行压缩时能够提高压缩率的贡献程度就越高,反之越低。
[0085] 至此,获得了农业的流式数据中不同字符对应的瞬时增量参数。
[0086] 步骤S003:根据历史流式数据被压缩的过程中,字符所属的相同长度的不同子串之间的间隔以及不同字符之间的瞬时增量参数差异获得字符所属子串的字典增量参数。
[0087] 需要说明的是,上述计算的是农业流式大数据中的不同的数据对应的瞬时增量价值,瞬时增量价值是表明当前农业流式大数据中的每个数据在以往的压缩过程中对于已经压缩的农业流式大数据部分的压缩贡献率的多少,以农业流式大数据中的第 个数据为例,其对应的瞬时增量价值 越高,说明该数据对应的字符串在以往的农业流式大数据部分的压缩贡献率响应的越大,所以在当算法对于还未压缩的农业流式大数据进行压缩的时候,遇见以第 个数据所组成的字符串时,压缩字典中没有检索到对应的重复字符串,那么可以通过临时增加压缩字典的增量进行字典的动态调整,以此来临时增加字典的长度,使得第个数据所在的字符串被更大的可能进行压缩。
[0088] 具体的,步骤(3.1),对历史流式数据进行压缩的过程中,将任意长度的所有子串中已经压缩的子串记为第一子串,将未压缩且即将压缩的子串记为第二子串,将每一个第一子串与第二子串的间隔长度记为第一子串的压缩间隔长度。
[0089] 步骤(3.2),获取当前流式数据中字符所属子串的字典增量参数,具体计算方法为:
[0090]
[0091] 其中 , 表示当前流式数据中第 个字符所属长度为 的子串的字典增量参数; 表示当前流式数据中第 个数据所属长度为 的第 个第一子串的压缩间隔长度;表示当前流式数据中第 个数据所属长度为 的第一子串的数量; 表示当前流式数据中第个字符的压缩增量参数; 表示当前流式数据中第 个字符的瞬时增量参数; 表示当前流式数据中第 个字符的瞬时增量参数;表示当前流式数据中所有字符的数量; 表示当前流式数据中第个字符的字典增量系数。
[0092] 需要说明的是,在对当前流式数据中字符所述子串进行压缩时,由于LZ77压缩算法的压缩字典中没有对应的子串的重复数据,所以需要对该子串的压缩字典的长度进行增量设置,本实施例通过结合当前流式数据中已经压缩过的相同长度的子串之间的间隔长度,并通过不同字符的瞬时增量参数,获取当前流式数据进行压缩时各子串对应压缩字典的字典增量参数,瞬时增量参数越大,则压缩字典的长度被增大调节的程度就越大,反之越小。所述字典增量系数是用来对于瞬时增量参数较小的字符所在的子串进行排除,使低瞬时增量参数的字符不用于压缩字典长度的调节,避免压缩过程中的计算量增大。
[0093] 至此,通过上述方法得到当前流式数据中字符所属子串的字典增量参数。
[0094] 步骤S004:结合初始字典长度和字典增量参数对当前流式数据进行压缩存储。
[0095] 具体的,首先,利用LZ77压缩算法对历史流式数据进行压缩。
[0096] 然后,历史流式数据更新得到当前流式数据后,将更新的字符滑入压缩字典中,若更新字符在当前流式数据中所述子串对应的字典增量参数不为零,则获取所述更新的字符在当前流式数据中所属子串的压缩字典长度,具体计算方法为:
[0097]
[0098] 其中, 表示更新的字符在当前流式数据中所属子串的压缩字典长度;表示当前流式数据的初始字典长度; 表示更新的字符在当前流式数据中所属子串的字典增量参数。
[0099] 最后,结合压缩字典长度,并利用LZ77压缩算法对更新的字符所属子串进行压缩,获得当前流式数据的压缩数据,将所有流式数据对应当前流式数据的压缩数据打包为一个压缩包进行存储。
[0100] 需要说明的是,本实施例中在对压缩包进行分布式存储管理时,可采用Hadoop HDFS(Hadoop Distributed File System)进行存储管理,Hadoop HDFS是一种分布式文件系统,用于处理大规模数据集,在其他实施例中进行分布式存储管理时可选用其他分布式文件系统。
[0101] 至此,本实施例完成。
[0102] 需要说明的是,LZ77(Lempel‑Ziv 77)压缩算法的中文名称为莱皮尔‑齐夫77压缩算法,由于LZ77压缩算法为现有的压缩算法,因此本实施例不进行赘述;另外,LZ77压缩算法的压缩字典通常使用滑动窗口来实现,所述滑动窗口是一种数据结构,对应一个缓冲区,可以在其中存储一段指定长度的文本或二进制数据,在LZ77压缩算法中,滑动窗口用来存储之前已经读取的数据,以便于当前的数据可以与之前的数据进行匹配。
[0103] 需要说明的是,本实施例中所用的 模型仅用于表示负相关关系和约束模型输出的结果处于 区间内,具体实施时,可替换成具有同样目的的其他模型,本实施例只是以 模型为例进行叙述,不对其做具体限定,其中 是指该模型的输入。
[0104] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
QQ群二维码
意见反馈