CN115514375B - 一种缓存数据压缩方法 - Google Patents
一种缓存数据压缩方法 Download PDFInfo
- Publication number
- CN115514375B CN115514375B CN202211461230.9A CN202211461230A CN115514375B CN 115514375 B CN115514375 B CN 115514375B CN 202211461230 A CN202211461230 A CN 202211461230A CN 115514375 B CN115514375 B CN 115514375B
- Authority
- CN
- China
- Prior art keywords
- base
- sliding window
- sequence
- base sequence
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及数据存储技术领域,提出了一种缓存数据压缩方法,包括:获取待压缩数据,进行二进制及DNA编码转换再进行碱基分层处理;根据碱基序列的排列熵获取碱基序列中自适应滑动窗口的大小及前向缓存区的大小;将碱基序列中自适应滑动窗口字典与前向缓存区内碱基段的排列熵作为前向缓存区互补碱基段的获取必要程度,根据获取必要程度与预设阈值间比较结果得到互补碱基段替换或保持不变处理后的碱基序列;以自适应滑动窗口及前向缓存区对处理后的碱基序列进行编码压缩,在编码压缩过程中将互补碱基段的编码结果用负号标记;压缩完成的碱基序列按照压缩顺序存储到缓存区。实现了自适应滑动窗口和前向缓存区的大小来提高压缩率进行存储。
Description
技术领域
本申请涉及数据存储领域,具体涉及一种缓存数据压缩方法。
背景技术
随着互联网的发展,日常工作与生活中往往伴随着大量的缓存数据,在对缓存数据进行保存存储时,往往需要对其进行压缩处理。目前LZ77压缩算法由于其运行简单、解压速度快广受欢迎,但LZ77压缩算法在对缓存数据进行压缩时对冗余程度较高的数据有较好的处理效果,但实际生活中低冗余程度的缓存数据往往较多,LZ77压缩算法对低冗余程度的缓存数据的压缩效果往往较差。传统LZ77压缩算法中滑动窗口及前向缓存区大小固定,当数据冗余度较大时,若选择较小滑动窗口与较大前向缓存区,会导致原本较长的冗余段被分为多次存储,因此需要一种可以自适应获取滑动窗口及前向缓存区大小的方法,来提高数据压缩率。
发明内容
针对上述情况,本发明提出了一种缓存数据压缩方法,通过对低冗余程度数据进行进制转换与分层处理,使得低冗余程度数据的冗余程度大大提高,从而大大提高低冗余程度数据的压缩率,所采用的技术方案具体如下:
本发明一个实施例提供了一种缓存数据压缩方法,该方法包括以下步骤:
获取待压缩数据,并对数据进行定长二进制编码转换,对二进制编码数据进行DNA编码转换,并对DNA编码进行碱基分层处理;
将碱基序列的第一排列熵作为对应碱基序列的随机程度,并获取压缩算法中滑动窗口的第一最大值和第一最小值以及前向缓存区的第二最大值和第二最小值,根据所述随机程度、第一最大值、第一最小值以及第二最大值和第二最小值确定出碱基序列中自适应滑动窗口的大小及前向缓存区的大小;
将碱基序列中自适应滑动窗口字典与前向缓存区内碱基段的第二排列熵作为前向缓存区互补碱基段的获取必要程度,当必要程度大于第一预设阈值时获取所述碱基段的互补碱基段,将所述碱基段替换成互补碱基段,当必要程度小于等于第一预设阈值时所述碱基段保持不变,得到替换或保持不变处理后的碱基序列;
以自适应的滑动窗口及前向缓存区对处理后的碱基序列进行编码压缩,所述进行编码压缩过程中将互补碱基段的编码结果用负号标记;压缩完成的碱基序列按照压缩顺序存储到缓存区。
可选的,所述待压缩数据需保证数据为低冗余度、且差异在一定范围的整数待压缩数据。
可选的,所述对数据进行定长二进制编码转换的方法为:
对数据进行二进制编码转换得到相应的二进制编码,对序列中最长二进制编码长度为奇数的,在基准长度上加1位变为偶数长度;最长二进制编码长度为偶数的则不作改变。
可选的,所述对DNA编码进行碱基分层处理的方法为:
对获取到的定长二进制编码数据进行DNA编码转换后,将每一个数据相同位置的碱基进行提取,组合形成新的碱基序列。
可选的,所述自适应滑动窗口的大小为:
其中,表示碱基序列/>的自适应滑动窗口大小,/>表示传统LZ77压缩算法滑动窗口的最大值,/>表示传统LZ77压缩算法滑动窗口的最小值,/>表示碱基序列/>的第一排列熵,所述第一排列熵大小在/>区间范围内。
可选的,所述前向缓存区的大小为:
本发明上述技术方案至少具有如下有益效果:本发明通过进制转换获取对应数据的二进制编码,通过对二进制编码进行比特分层,使原本低冗余度的数据冗余程度增大,自适应获取LZ77压缩算法的参数,尽可能保证数据的压缩比,大大提高压缩率。同时,计算前向缓存区碱基段获取互补碱基段的必要程度,并对必要程度较大的前向缓存区碱基段进行互补碱基转换,令原本无法进行压缩的碱基段尽可能的增大与滑动窗口字典中碱基段的匹配度,使得原本无法进行压缩的数据有压缩的可能性,进一步提高数据冗余程度,提高压缩率,从而达到高效压缩的效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动力的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的一个实施例所提供的该种缓存数据压缩方法的流程示意图;
图2为LZ77编码的示意图;
图3互补碱基转换的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其示出了本发明一个实施例所提供的该种缓存数据压缩方法的流程图,该方法包括以下步骤:
步骤S001、获取待压缩的数据,对数据进行二进制转换,获取对应的二进制编码。
采集数据,例如需要被缓存的用户头像数据,每个头像数据被展平为一个整数序列;再例如数据库访问过程中需要缓存的数据库中某些数据的ID号,这些ID号也是一个整数序列。本发明以诸如此类的低冗余度、差异度在一定范围内的整数缓存数据进行压缩。
例如序列:{229,228,237,227,250,244,234,235,226,236,245,251}容易发现的,容易发现的,序列/>中每个数据均不相同,同时也不存在周期性的规律。但容易理解的,序列/>中的数据存在差异,但差异在一定范围内,数据间最小差值为1,而最大差值为25,将序列/>中的每个数据均转换为二进制,即得到序列/>:{11100101,11100100,11101101,11100011,11111010,11110100,11101010,11101011,11100010,11101100,11110101,11111011}。
二进制编码转换为公知技术,所以本实施例中不再赘述具体的对序列转换得到序列/>的过程。获取到的序列/>中,若出现二进制编码长度不一的情形,则需要进行定长编码处理,由于需要采用DNA编码的方式对数据进行处理,需使得序列基准长度为偶数。容易发现的,若序列中最长的二进制编码长度为奇数,则基准长度需要加1位变为偶数;若为偶数则不变,将所有处理后的二进制编码进行补0操作,转换得到偶数基准长度的定长编码。
时序数据的冗余程度较低,难以进行压缩存储,但若将时序数据转换为二进制序列,数据的高位往往存在较强的相似性。例如11000000的十进制数为192,10000000的十进制数为128,若想二进制编码的高位发生变换,例如从11变为10,对应十进制数的最小差异为192-128=64,此处是以八位二进制编码的高位为例,二进制编码的位数越多,高位编码的差异值越大,而时序数据往往存在一定的规律性,即局部数据存在相似性,局部数据虽然存在差异,但差异通常在一定范围内。
同时,二进制数中0与1为互补关系,因此对二进制进行分层处理,同层次的数据相似性较大,而对于低位层次的二进制数,虽然相似性较低,但由于二进制数特殊的互补关系,寻找数据的相同顿和互补段,以达到增大压缩率的目的。
对于所述的LZ77压缩算法,请参阅图2,其运行流程如下:
确定滑动窗口字典大小,将前向缓存区的数据与滑动窗口字典之间进行短语匹配,若无法找到匹配字符,将未匹配的符号编码为标记符号;若字符成功匹配,将最长的匹配编码成短语标记,其中短语包括滑动窗口字典中的偏移量、匹配中符号的个数与匹配结束后缓存区的第一个符号。
步骤S002、对二进制编码数据进行DNA编码转换,并对DNA编码进行碱基分层处理。
所述的二进制编码转换DNA编码,具体的,在二进制编码中,00与11互补且01与10互补,而在人类的DNA中,也同样包含四个碱基,其中腺嘌呤A与胸腺嘧啶T相互配对,鸟嘌呤G与胞嘧啶C相互配对,若用DNA编码代表二进制序列,则一个合理的DNA编码规则可以是A,C,G,T分别代表00、01、10、11。
分析发现,上述碱基序列冗余程度增大,但碱基序列变化程度较大。如果将每一个数据中相同位置的碱基提取出来组成新的碱基序列后,碱基序列的冗余程度会大大增加,故对序列进行碱基分层,将每一个数据的相同位置的碱基进行提取,组合形成新的碱基序列,如下所示:
上述表示将/>中各数据的第一个碱基提取出来构成的序列;上述/>表示将/>中各数据的第二个碱基提取出来构成的序列;上述/>表示将/>中各数据的第三个碱基提取出来构成的序列;上述/>表示将/>中各数据的第四个碱基提取出来构成的序列。
所述的对DNA编码序列进行碱基分层处理,获取得到上述4条单碱基序列。容易观察的,其中高位碱基序列的冗余程度很大。
步骤S003、将获取到的碱基序列第一排列熵作为碱基序列的随机程度,根据随机程度自适应调节滑动窗口及前向缓存区大小。
采用LZ77压缩算法对碱基序列进行压缩时,碱基序列的最终压缩比跟滑动窗口大小及前向缓存区有关,LZ77压缩算法在对碱基序列进行压缩时,需要花费大量的时间进行搜索匹配,寻找滑动窗口内与前向缓存区匹配的碱基段。当碱基序列的冗余程度大,相似性较高时,此时滑动窗口内与前向缓存区匹配的碱基段较长,若选择较大的滑动窗口与较大的前向缓存区,则更利于数据压缩,相反,若选择较小的滑动窗口与较大的前向缓存区时,由于碱基序列的冗余程度大,相似性较高时,滑动窗口内与前向缓存区匹配的碱基段较长,但滑动窗口与较大的前向缓存区长度较小,会导致原本较长的冗余段被分为多次存储,导致压缩比降低。因此需要一种基于碱基序列排列熵作为对应碱基序列的随机程度,进一步结合传统LZ77压缩算法中滑动窗口及前向缓存区的最大最小值,来对滑动窗口及前向缓存区大小进行自适应调节,具体过程为:
所述的根据碱基序列的第一排列熵作为碱基序列随机程度,进一步的,得到碱基序列的自适应滑动窗口大小为:
其中,表示碱基序列/>的自适应滑动窗口大小,/>表示传统LZ77压缩算法滑动窗口的最大值,/>表示传统LZ77压缩算法滑动窗口的最小值,/>表示碱基序列/>的第一排列熵,获取到的第一排列熵大小在/>区间范围内。优选的,/>根据经验值选取32K个字节;/>根据经验值选取16K个字节。
容易分析的,第一排列熵值的大小表示碱基序列的随机程度:熵值越小,说明碱基序列越简单、规整,此时窗口需要较大,以便于匹配更长的碱基段;反之,熵值越大,则时间序列越复杂、随机,此时窗口需要较小,以便于减小匹配时间,减小计算量。
进一步的,根据碱基序列随机程度得到的前向缓存区大小为:
其中,表示碱基序列/>的自适应滑动窗口大小,/>表示传统LZ77压缩算法前向缓存区的最大值,/>表示传统LZ77压缩算法前向缓存区的最小值,/>表示碱基序列的第一排列熵,获取到的第一排列熵大小在/>区间范围内。优选的,/>根据经验值选取256个字符;/>根据经验值选取1个字符。
进一步的,对不同的碱基序列根据上述计算方法,自适应获取对于LZ77滑动窗口大小与前向缓存区的大小。
步骤S004、将碱基序列中滑动窗口字典与前向缓存区内碱基段的第二排列熵作为前向缓存区互补碱基段的获取必要程度,并作相应的互补碱基段处理。
采用LZ77压缩算法对碱基序列进行压缩,容易观察的,对于碱基序列与/>,序列的冗余程度较大,此时进行压缩时,压缩比较大;但对于碱基序列/>与/>,序列的冗余程度较小,此时进行压缩时,压缩比较小。根据DNA编码的互补原则可知,碱基序列/>中,序列段/>与序列段/>呈互补序列,同理碱基序列/>中,序列段与序列段/>也呈现互补序列,若滑动窗口内的碱基段与前向缓存区中的碱基段中部分碱基段呈现互补关系,则令前向缓存区的碱基段生成互补碱基段,此时即可进行压缩。
容易发现的,前向缓存区的互补碱基序列与滑动窗口中的碱基段高度匹配,在对形如的碱基序列进行处理时,若前向缓存区的碱基序列与滑动字典窗口中的碱基段匹配效果差,则生成前向缓存区的碱基序列的互补碱基序列,将互补碱基序列与滑动字典窗口中的碱基段匹配,用负号表示互补关系,则对碱基序列/>进行压缩处理时,滑动字典窗口为8,前向缓存区为6,则最终的压缩文件为:CACTGA(1,-6),其中负号表示互补关系。
容易分析的,对于碱基序列与/>,序列的冗余程度较大,进行压缩时,压缩比较大,没有必要获取前向缓存区的互补碱基段;但对于碱基序列/>与/>,序列的冗余程度较小,进行压缩时,压缩比较小,此时有必要获取前向缓存区的互补碱基段。
进一步的,若前向缓存区互补碱基段的获取必要程度小于等于0.4,则说明对应的滑动字典窗口内和前向缓存区内的碱基段匹配效果会较好,此时不需要获取前向缓存区内的碱基段的互补碱基段,保持前向缓存区内的碱基段不变即可;若前向缓存区互补碱基段的获取必要程度/>大于0.4,则说明对应的滑动字典窗口内和前向缓存区内的碱基段匹配效果会较差,此时为了能够更好的对碱基序列进行压缩,获取互补碱基段之后,将互补碱基段作为前向缓存区内的碱基段并参与后续LZ77的压缩过程。
根据前向缓存区内碱基的互补序列获取必要程度,对前向缓存区进行互补碱基段替换或保持不变的相应处理,得到经过互补碱基段处理后的碱基序列。
步骤S005、对经过互补碱基段处理后的碱基序列,根据自适应的滑动窗口及前向缓存区对其进行LZ77压缩,压缩完成的碱基序列按照压缩顺序在缓存区中进行存储。
需要说明的是,本实施例在压缩时利用负号表示互补关系,因此在解压缩过程中可以将经过互补变换的数据给反变换回去,保证数据不失真。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内 ,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种缓存数据压缩方法,其特征在于,该方法包括以下步骤:
获取待压缩数据,并对数据进行定长二进制编码转换,对二进制编码数据进行DNA编码转换,并对DNA编码进行碱基分层处理;
将碱基序列的第一排列熵作为对应碱基序列的随机程度,并获取压缩算法中滑动窗口的第一最大值和第一最小值以及前向缓存区的第二最大值和第二最小值,根据所述随机程度、第一最大值、第一最小值以及第二最大值和第二最小值确定出碱基序列中自适应滑动窗口的大小及前向缓存区的大小;
将碱基序列中自适应滑动窗口字典与前向缓存区内碱基段的第二排列熵作为前向缓存区互补碱基段的获取必要程度,当必要程度大于第一预设阈值时获取所述碱基段的互补碱基段,将所述碱基段替换成互补碱基段,当必要程度小于等于第一预设阈值时所述碱基段保持不变,得到替换或保持不变处理后的碱基序列;
以自适应的滑动窗口及前向缓存区对处理后的碱基序列进行编码压缩,所述进行编码压缩过程中将互补碱基段的编码结果用负号标记;压缩完成的碱基序列按照压缩顺序存储到缓存区;
2.根据权利要求1所述的一种缓存数据压缩方法,其特征在于,所述对数据进行定长二进制编码转换的方法为:
对数据进行二进制编码转换得到相应的二进制编码,对序列中最长二进制编码长度为奇数的,在基准长度上加1位变为偶数长度;最长二进制编码长度为偶数的则不作改变。
3.根据权利要求1所述的一种缓存数据压缩方法,其特征在于,所述对DNA编码进行碱基分层处理的方法为:
对获取到的定长二进制编码数据进行DNA编码转换后,将每一个数据相同位置的碱基进行提取,组合形成新的碱基序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211461230.9A CN115514375B (zh) | 2022-11-18 | 2022-11-18 | 一种缓存数据压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211461230.9A CN115514375B (zh) | 2022-11-18 | 2022-11-18 | 一种缓存数据压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115514375A CN115514375A (zh) | 2022-12-23 |
CN115514375B true CN115514375B (zh) | 2023-03-24 |
Family
ID=84513870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211461230.9A Active CN115514375B (zh) | 2022-11-18 | 2022-11-18 | 一种缓存数据压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115514375B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116051156B (zh) * | 2023-04-03 | 2023-07-25 | 北京智蚁杨帆科技有限公司 | 一种基于数字孪生的新能源动态电价数据管理系统 |
CN116364195B (zh) * | 2023-05-10 | 2023-10-13 | 浙大城市学院 | 一种基于预训练模型的微生物遗传序列表型预测方法 |
CN116938256B (zh) * | 2023-09-18 | 2023-11-28 | 苏州科尔珀恩机械科技有限公司 | 基于大数据的回转炉运行参数智能管理方法 |
CN116939047B (zh) * | 2023-09-18 | 2023-11-24 | 吉林省车桥汽车零部件有限公司 | 一种用于数控机床系统的数据智能通信方法 |
CN117077181B (zh) * | 2023-10-16 | 2024-01-09 | 南通千寻信息科技有限公司 | 一种企业信息管理数据的存储方法 |
CN117273764B (zh) * | 2023-11-21 | 2024-03-08 | 威泰普科技(深圳)有限公司 | 一种电子雾化器防伪管理方法及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3893281B2 (ja) * | 2001-12-25 | 2007-03-14 | キヤノン株式会社 | 画像符号化装置、画像符号化方法、プログラム、及び記憶媒体 |
US10090857B2 (en) * | 2010-04-26 | 2018-10-02 | Samsung Electronics Co., Ltd. | Method and apparatus for compressing genetic data |
CN109300508B (zh) * | 2017-07-25 | 2020-08-11 | 南京金斯瑞生物科技有限公司 | 一种dna数据存储编码解码方法 |
US20210265016A1 (en) * | 2020-02-20 | 2021-08-26 | Illumina, Inc. | Data Compression for Artificial Intelligence-Based Base Calling |
CN113035278B (zh) * | 2021-04-08 | 2023-03-24 | 哈尔滨工业大学 | 一种基于tpbwt自索引结构滑动窗口压缩方法 |
CN113380328B (zh) * | 2021-04-23 | 2023-06-20 | 中国人民大学 | 一种基于mRNA碱基的生物亲缘识别方法和系统 |
CN113345521A (zh) * | 2021-05-31 | 2021-09-03 | 天津大学 | 一种采用大片段dna存储的编码与恢复方法 |
CN115423096A (zh) * | 2022-08-10 | 2022-12-02 | 广州大学 | 基于dna的可动态均衡系统、数据存储方法以及解码方法 |
-
2022
- 2022-11-18 CN CN202211461230.9A patent/CN115514375B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115514375A (zh) | 2022-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115514375B (zh) | 一种缓存数据压缩方法 | |
JP6616877B2 (ja) | Vlsiでの効率的なハフマン符号化を行う装置および方法 | |
JP2800880B2 (ja) | 高速復号算術符号化装置 | |
JP3935952B2 (ja) | 頻度の高いキャラクタの組み合わせ、ワード及び/又はフレーズでプレフィルした辞書を用いるLempel―Zivデータ圧縮技術 | |
EP1289153B1 (en) | Data compressing method and data decompressing method, and data compressing apparatus and data decompressing apparatus therefor | |
JP2003519945A (ja) | データの送信または記憶のための効率的で可逆的な変換 | |
CN110021369B (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
JP2009542092A (ja) | データ圧縮の方法 | |
CN117155407B (zh) | 一种智慧镜柜消毒日志数据优化存储方法 | |
CN114268323B (zh) | 支持行存的数据压缩编码方法、装置及时序数据库 | |
JPH05241777A (ja) | データ圧縮方式 | |
CN117014519B (zh) | 一种数据传输方法及医院智能传输系统 | |
CN104682966B (zh) | 列表数据的无损压缩方法 | |
CN109698703B (zh) | 基因测序数据解压方法、系统及计算机可读介质 | |
CN108259515A (zh) | 一种适用于带宽受限下传输链路的无损信源压缩方法 | |
CN115913246A (zh) | 基于自适应瞬时熵的无损数据压缩算法 | |
Pinho et al. | Finite-context models for DNA coding | |
WO2021156110A1 (en) | Improved quality value compression framework in aligned sequencing data based on novel contexts | |
CN114023392A (zh) | 一种dna存储的码字设计方法 | |
JP3241787B2 (ja) | データ圧縮方式 | |
CN109698702B (zh) | 基因测序数据压缩预处理方法、系统及计算机可读介质 | |
CN110111851A (zh) | 基因测序数据压缩方法、系统及计算机可读介质 | |
CN117155408B (zh) | 一种生产数据的高效传输方法 | |
JP2954749B2 (ja) | データ圧縮方式 | |
JPH05241775A (ja) | データ圧縮方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |