CN1928850B - 基于数据字典的数据压缩方法、装置 - Google Patents

基于数据字典的数据压缩方法、装置 Download PDF

Info

Publication number
CN1928850B
CN1928850B CN2006101096276A CN200610109627A CN1928850B CN 1928850 B CN1928850 B CN 1928850B CN 2006101096276 A CN2006101096276 A CN 2006101096276A CN 200610109627 A CN200610109627 A CN 200610109627A CN 1928850 B CN1928850 B CN 1928850B
Authority
CN
China
Prior art keywords
character string
data
character
longest
compressed
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.)
Expired - Fee Related
Application number
CN2006101096276A
Other languages
English (en)
Other versions
CN1928850A (zh
Inventor
白杰
李薇
鲁征宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiang Zhiyuan
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN2006101096276A priority Critical patent/CN1928850B/zh
Publication of CN1928850A publication Critical patent/CN1928850A/zh
Application granted granted Critical
Publication of CN1928850B publication Critical patent/CN1928850B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于数据字典的数据压缩方法,包括:预置数据字典数据库;将待压缩数据字符串当前位置起的连续的预定个数的字符构成的字符串,用所述数据字典数据库中相应记录的引用标签替换输出或者直接输出;在待压缩数据字符串处理完毕时,将输出的引用标签和字符串组装成压缩数据。本发明能够实现对待压缩字符串的动态压缩,并能够进一步改善数据动态压缩效果的方案。本发明还公开了一种基于数据字典的数据压缩装置。

Description

基于数据字典的数据压缩方法、装置
技术领域
本发明涉及一种数据压缩方法、装置。
背景技术
在数据的传输过成中通常需要对待传输的数据进行压缩,以减少实际传输的数据量,减少网络传输资源的占用以及减少传输失败的机会,提高数据传输的效率。例如,TCP/IP协议对于每一个已经建立的传输进程中的数据包的生命周期有严格的限制,也就是当传输的进程建立之后,按照TCP/IP协议的基本原理,发送端在发送一个数据包之后必须在规定的时间内收到从接收端返回的接收成功信息才会发送第二个数据包,否则认为上一个包发送失败,重新发送第一个包;从接收方来看,超过一定的时间没有收到发送方的数据包会认为连接超时,自动断开连接。因此,所以数据的压缩必须满足在规定的时间内将发送端的数据包处理完成,转发给接收端,并向数据发送端反馈正确的信息,这样才能实现即压缩了数据,又保证了数据传输进程的连接。
在对数据的压缩过程中,通常需要使用数据字典帮助完成数据的压缩。所述数据字典中存储有数据压缩使用的具有高重复概率的字符串及其代码,这些字符串及其代码构成了数据压缩的样本数据,一般,只有一定的重复数据量样本数据才能达到良好的压缩比,数据的压缩率就会越高,因此,快速获得一个内容较多且其中的样本数据重复概率较大的数据字典成为一个数据传输系统的重要组成部分。
传统的以所述数据字典为基础实现的数据压缩,需要获得被压缩的全部数据后才能容易地从中查找于所述数据字典中匹配的最长字符串,从而进行数据的静态压缩。所述基于数据字典的数据压缩方法通常的步骤是:1)使用数据缓冲区暂存需要压缩的字符;2)按照某种规则对缓冲区中的数据进行分割,3)用分割出的数据段与数据字典中的样本字符串进行匹配,如果匹配成功则用所述数据字典中的该样本字符串的引用标签代替所述数据段完成数据的输出,从而实现数据的压缩。该方法的特点是,需要至少一个数据缓冲区暂存待压缩的全部数据,然后在缓冲区中的数据中查找可以和所述数据字典中样本数据相同的字符串。由于需要预先获得尽可能多的待编码数据后才能启动字符串的查找操作,必然导致压缩完成时间的延迟,难以满足实时数据的传输要求,而且这种方法需要开辟相对较大的内存空间作为数据缓冲区,也过多地占用了系统资源。
发明内容
本发明要解决的技术问题在于,提供一种压缩效率较高,压缩延时较低的数据压缩方法和数据压缩装置。
本发明实施例提供的基于数据字典的数据压缩方法,包括:
A、预置数据字典数据库; 
B、从待压缩数据字符串的当前位置起连续扫描预定个数的字符,将扫描得到的预定个数的字符累加生成最长字符串;
C、判断在所述数据字典数据库中是否找到所述最长字符串,如果找到,记录该字符串在所述数据字典数据库的引用标签,并将扫描指针向后移动大于或等于最长字符串的长度,转步骤D继续,否则,判断所述最长字符串是否满足处理条件,如果不满足,形成新的最长字符串,并将所述扫描指针向后移动一个字符,否则,记录当前位置指针的字符,并使所述当前位置指针向后移动至少一个字符,并使扫描指针指向当前位置指针指向的字符;
D、判断所述待压缩数据字符串是否扫描完毕,如果没有扫描完毕,复位所述最长字符串,回到步骤B继续;
E、在待压缩数据字符串处理完毕时,将输出的引用标签和字符串组装成压缩数据。
如果没有在数据字典数据库中找到最长字符串,判断所述最长字符串的长度值是否等于或超过设定的第一阈值,如果等于或超过,将所述最长字符串存储入所述数据字典数据库,否则,继续操作。
所述方法还包括:
如果所述待压缩数据字符串扫描完毕,将所述数据字典数据库中所有记录的匹配次数计数值复位。
如果在所述数据字典中找到所述最长字符串,将与所述最长字符串内容相同记录的匹配次数计数值加1。
如果所述待压缩数据字符串扫描完毕,判断所述数据字典数据库的记录个数是否超过设定的阈值,如果超过,删除所述匹配次数计数值小于第二阈值的记录。
本发明实施例提供的另一种基于数据字典的数据压缩方法,包括:
A、预置数据字典数据库;
B、用待压缩数据字符串的第一个字符预置最长字符串变量,并使所述当前位置指针和扫描指针指向待压缩数据字符串的第二个字符;
C、从待压缩数据字符串的当前位置起连续扫描预定个数的字符,将扫描得到的预定个数的字符累加生成最长字符串;
D、判断在所述数据字典数据库中是否找到所述最长字符串,如果找到,记录该字符串在所述数据字典数据库的引用标签,并将扫描指针向后移动大于或等于最长字符串的长度,转步骤E继续,否则,判断所述最长字符串是否满足处理条件,如果不满足,形成新的最长字符串,并将所述扫描指针向后移动一个字符,否则,记录当前位置指针的字符,并使所述当前位置指针向后移动至少一个字符,并使扫描指针指向当前位置指针指向的字符;
E、判断所述待压缩数据字符串是否扫描完毕,如果没有扫描完毕,复位所述最长字符串,回到步骤C继续;
F、在待压缩数据字符串处理完毕时,将输出的引用标签和字符串组装成压缩数据。
本发明还提供了一种基于数据字典的数据压缩装置。
与现有技术相比,本发明通过预置数据字典数据库的形式,将待压缩数据字符串当前位置起的连续的预定个数的字符构成的字符串,用所述数据字典数据库中相应记录的引用标签替换输出或者直接输出,这样,随着待压缩字符串中的字符不断流入所述数据缓冲区,从字符串开始形成的扫描能够保证及时将流入数据缓冲区的一串字符用引用标签替换后或者直接输出,能够保证数据的输入引导压缩的实现,即对待压缩字符串(数据)的动态压缩。
更进一步,本发明提供的动态压缩方案能够对所述数据字典数据库的内容进行优化,因此能够进一步改善数据动态压缩的效果。
附图说明
图1是本发明所述数据压缩方法的第一个实施例流程图;
图2描述了图1所示实施例在动态压缩过程中的指针变化示例图;
图3是本发明所述数据压缩方法的第二个实施例流程图;
图4是本发明所述数据压缩装置的一个实施例框图;
图5是图4所述实施例的字符串压缩单元实施例框图。
具体实施方式
本发明实现的一个关键的环节,就是首先选择经常使用的某一领域和行业的样本数据,例如,通过网络传输概率较高的文本数据,经由压缩字典训练软件训练出压缩用的数据字典,并将其存储到方便使用的数据库中。在待压缩的字符串(通常为经过处理的无含义数据流)不断流入数据缓冲区使,利用所述数据字典数据库对数据缓冲区内的字符进行压缩,从而保证了系统的实时性。
下面结合附图对本发明进行进一步的说明。
图1是本发明所述数据压缩方法的第一个实施例流程图。图1所示的实施例涉及一个数据字典数据库,其中存储有已经设置完毕的样本字符串,所述数据字典数据库的结构通常包括下述字段:样本字符串字段,用于存储高重复概率字符串;散列值字段,用于帮助检索或查询所述高重复概率字符串;计数器字段,用于记录相应记录的高重复概率字符串被充公匹配的次数;引用标签字段,用于在数据压缩时代替所述高重复概率字符串。此外,本实施例还涉及一个数据缓冲区,用于串行接收待压缩的字符串,以便随着字符串的输入,不断扫描输入的字符串,实现对不断输入的字符串进行动态压缩。
按照图1的指示,首先在步骤11预置数据字典数据库,使该数据库存储有足够的高重复概率的样本字符串,从而实现对待压缩字符串的压缩。此外,还要预置一个字符串变量――最长字符串length,用于累积扫描到的最长的字符串,以便在数据字典数据库中完成匹配样本字符串的操作。步骤11预置数据字典数据库的详细细节可以参考本申请人同日申请的另外一篇名称为“数据字典的生成方法、装置和数据字典的优化方法”的文件。
在步骤12,从待压缩数据字符串的当前位置起连续扫描预定个数的字符,用预定个数的字符生成在所述数据字典中可能出现的最长字符串。本例中所述预定个数为1。由于待压缩数据字符串串行流入所述数据缓冲区,因此所述扫描字符实际上是连续读取流入到所述数据缓冲区中的字符,每次扫描1个字符,即以1个字符作为生成可能在所述数据字典中出现的最长字符串的单位,将所述扫描得到的一个字符累加到最长字符串变量中,例如,如果本次扫描的字符为“a”,length的内容为“”(空),则将所述扫描得到的一个字符“a”累加到最长字符串变量length中后,length的内容为“a”;而如果length的内容为“afds”,则将所述扫描得到的一个字符“a”累加到最长字符串变量length中后,length的内容为“afdsa”。
每次扫描一个字符后,都要在步骤12生成新的在所述数据字典数据库中可能出现的最长字符串length。而length中的字符串是否最长的能够进行压缩的字符串,所述能够压缩即能够用引用标签替换,要看length中的字符串是否能够与所述数据字典数据库中的某个记录的样本字符串相等或匹配,因此在步骤13,判断在所述数据字典数据库中是否找到所述最长字符串length,所述判断实际上是一个字符串的查找或匹配操作,该操作需要通过计算所述最长字符串length的散列值,通过所述散列值的查找实现对所述样本字符串的查找。如果经过所述步骤13在所述数据字典数据库中找到所述最长字符串length中的内容,说明已经扫描得到的字符串,即length中的字符串可以被所述数据字典数据库中的引用标签替换,实现对length中内容的压缩。此时,通过步骤14,在另一个数据库或表中按照顺序记录或输出该字符串在所述数据字典数据库中的引用标签(也可以记录序号,只是在最后组成压缩数据时,再将所述序号还原为引用标签),接着在步骤15将所述当前位置指针的值,和扫描指针的值向后移动等于最长字符串length中的长度,该长度值即是length中的字符个数,这样就可以从继续输入的字符流中查找下一个最长字符串length的内容,即可能被压缩的新的字符串。本例中,步骤15实际涉及两个指针的操作,表面上,一个指针是动态的,即扫描指针,一个指针是静态的,指向被扫描字符串首的当前位置指针,但是由于字符是串行流入所述数据缓冲区的,因此该两个指针实际上相对与动态字符流的输入,所述数据缓冲区中的字符数在变化,因此这两个指针的物理指向也在动态变化。
如果经过所述步骤13在所述数据字典数据库中没有找到所述最长字符串length中的内容,说明已经扫描得到的字符串,即length中的字符串不能被所述数据字典数据库中的引用标签替换,此时应该决定是继续扫描还是判断已经扫描的字符串不可能被一个引用标签替换,从而开始进行新起点待压缩字符串的扫描。因此,在步骤16判断所述最长字符串length的内容(即字符串的长度)是否超过预定的长度,例如已经超过所述数据字典数据库中最长的样本字符串的长度,如果超过(有时也视“相等”满足条件),说明已经没有可能在所述数据字典数据库中找到相匹配的样本字符串,以及可以替换的引用标签,因此在步骤18输出当前位置的字符,即当前位置指针指向的字符,在另一个数据库或表中按照顺序记录或输出该字符,准备将该字符作为不可压缩的普通字符,然后在步骤19将所述当前位置指针后移1个字符的位置,同时将扫描指针设置与所述当前位置指针指向相同的位置或单元,开始进行下一轮的字符串扫描。如果在步骤16判断所述最长字符串length的内容没有超过预定的长度,说明可能还没有达到能够被引用标签替换的样本字符串的长度,应当继续扫描及累积最长字符串length的内容,因此在步骤17,将新扫描的字符或字符组累加到当前最长字符串length中,形成新的最长字符串length,然后将所述扫描指针后移1个字符的位置,继续下一步的字符串扫描。(步骤17中,当前位置指针指向不变。且所述扫描指针只能后移1个字符的位置)
图2(1)示出了在数据动态压缩过程中的一个瞬间的指针状态,当前位置指针指向字符A,扫描指针指向字符w,出现这个状态说明从当前位置指针指向的字符A,扫描到字符w,最长字符串length中累积的字符串为“A d s q”,如果此时在步骤13,判断在所述数据字典中已经找到所述最长字符串length的内容“A d s q”,则在步骤14,用所述数据字典数据库中相应记录(样本字符串为“A d s q”的记录)的引用标签替换“A d s q ”存入另外的数据库,然后在步骤15将当前位置指针指向字符w,扫描指针也指向字符w,继续扫描后续不断输入的字符串。参考图2(2)。(此时可以将当前位置指针和扫描指针继续后移,例如指向字符“r”,能够提高扫描速度,或者避免数据缓冲区溢出,但此时付出的代价是损失了一些在所述数据字典数据库中匹配到最长字符串length的可能性。)
如果在图2(1)状态经步骤13,判断在所述数据字典中没有找到所述最长字符串length的内容“A d s q ”,则在步骤16判断所述最长字符串length的内容(即字符串的长度)是否超过预定的长度,如果最长字符串length的长度没有超过指定的长度,然后在步骤17将新扫描的字符w累加到当前最长字符串length中,形成新的最长字符串length,此时为“A d s q w”,然后使当前位置指针指向字符A不动,使扫描指针指向字符e,继续扫描后续的字符串。参考图2(3)。
如果在图2(1)状态经步骤13,判断在所述数据字典中没有找到所述最长字符串length的内容“A d s q ”,则在步骤16判断所述最长字符串length的内容(即字符串的长度)是否超过预定的长度,如果最长字符串length的长度超过指定的长度,然后在步骤18将当前位置指针指向字符A输出到另外数据库中,准备形成压缩字符串,然后使当前位置指针和扫描指针均指向字符d,开始进行新起点的下一轮的字符串扫描。参考图2(4)。
图2说明了先扫描一个字符,后生成最长字符串length的情况,扫描一个字符后即生成最长字符串length的情况与此类似,区别仅在于增加一个初始化步骤,即用待压缩数据字符串的第一个字符预置最长字符串变量,并使所述当前位置指针和扫描指针指向待压缩数据字符串的第二个字符,这样就会在扫描一个字符后即生成最长字符串length。
下面继续图1所示实施例的说明。在当前位置指针和/或扫描指针移动后,可能待压缩的字符串已经扫描完毕,尤其在步骤17的指针移动后,累积在最长字符串length中的字符可能为提高压缩速度全部作为原始字符输出,因此要在步骤20判断待压缩的字符串是否扫描完毕,如果没有扫描完毕,复位所述最长字符串,回到步骤12继续。这里所说的复位有三种情况,第一种是经过步骤15的情况,此情况下的所述复位是将最长字符串length预置为最近扫描得到的字符,例如图2(1)中的“w”,或者置空。第二种是经过步骤17的情况,此种情况下的所述复位是将最近扫描得到的字符,例如w,累加到最长字符串length中。第三种是经过步骤19的情况,此种情况下的所述复位是将最长字符串length预置为空。
如果在步骤20判断待压缩的字符串已经扫描完毕,将记录或存储在另外数据库中的所述引用标签和原始字符组成压缩后的数据串,该数据串可以进行传输或进行后续的处理。
在本发明的其它以图1所示实施例为基础的实施例中,为了提高待压缩字符串的扫描速度,即提高待压缩字符串的动态压缩速度,从所述数据缓冲区的第一个接收输入字符的单元起,连续扫描多个字符,即以多个字符为一组作为生成可能在所述数据字典中出现的最长字符串的单位。这里所述扫描字符的数量选择,可以参考所述数据缓冲区的字符流入速度,一般应当保证扫描处理字符的速度略大于所述数据缓冲区的字符流入速度,以避免所述数据缓冲区流入字符的溢出。
同理,如果经过所述步骤13在所述数据字典数据库中找到所述最长字符串length中的内容,在步骤15将所述当前位置的值向后移动大于最长字符串length中的长度,该长度值即是length中的字符个数,这样就可以从继续输入的字符流中查找下一个最长字符串length的内容。
另外,在步骤16的判断条件还可以有多种,例如,判断所述最长字符串length的生存时间是否超时,如果超时,也可以启动新起点的最长字符串length的累积。
图3是本发明所述数据压缩方法的第二个实施例流程图。该实施例与图1所示实施例的区别在于在步骤16和步骤18之间增加了一个步骤24。该步骤是对压缩进程进行改进的一个步骤,如果经步骤13在数据字典数据库中没有找到最长字符串length,并且在步骤16判断所述最长字符串的长度值等于或超过设定的第一阈值,在步骤24将所述最长字符串length存储入所述数据字典数据库。当然,在步骤24还要同时生成散列值字段、计数器字段、引用标签字段的值。
图3所述的实施例可以优化所述数据库,但其功能并不完整,在本发明的另外的实施例中,以图3所示实施例为基础,在步骤20和步骤23之间还包括一个步骤,用于将所述数据字典数据库中所有记录的匹配次数计数值复位,以利于在每次对待压缩字符串进行压缩时,辅助优化所述数据字典数据库。因此,在该实施例中,在经过步骤13,在所述数据字典数据库中没有找到所述最长字符串length中的内容后的分支,即步骤14、15这个分支,还包括一个步骤(例如设置在步骤14、15之间),将与所述最长字符串内容相同记录的匹配次数计数值加1,从而实现样本字符串重复概率的统计。
继续的优化在本发明的其它实施例中有描述,增加了一个补充上述实施例不足的步骤,该步骤判断所述数据字典数据库的记录个数是否超过设定的阈值,如果超过,删除所述成功次数计数值小于第二阈值的记录。所述第二阈值可以根据统计经验设置。
图4是本发明所述数据压缩装置的实施例框图。图4所示装置包括用于存储待压缩的字符串的数据缓冲区41,用于存储样本字符串的数据字典数据库42,用于暂存中间压缩数据的压缩数据库43,还包括字符串压缩单元44和压缩数据生成单元45;
所述字符串压缩单元44、用于将数据缓冲区41中的待压缩数据字符串当前位置起的连续的预定个数的字符构成的字符串,用所述数据字典数据库42中相应记录的引用标签替换输出或者直接输出到压缩数据库43;
所述压缩数据生成单元45,用于在待压缩数据字符串处理完毕时,将所述压缩数据库43中的引用标签和字符串组装成压缩数据。
所述字符串压缩单元44进一步包括:
扫描子单元51,从数据缓冲区41中的待压缩数据字符串的当前位置起连续扫描预定个数的字符,用预定个数的字符生成最长字符串;
第一判断子单元52,判断在所述数据字典数据库42中是否找到所述最长字符串,如果找到,记录该字符串在所述数据字典数据库42中的引用标签,并将数据缓冲区的扫描指针向后移动大于或等于最长字符串的长度;
第二判断子单元53,用于判断所述最长字符串是否满足处理条件,如果不满足,形成新的最长字符串,并将所述扫描指针向后移动一个字符,否则,记录当前位置指针的字符,并使所述当前位置指针向后移动至少一个字符,并使扫描指针指向当前位置指针指向的字符;
第三判断子单元54,用于判断所述待压缩数据字符串是否扫描完毕,如果没有扫描完毕,复位所述最长字符串。
图4所示的实施例涉及的数据字典数据库42,其中存储有已经设置完毕的样本字符串,所述数据字典数据库的结构通常包括下述字段:样本字符串字段,用于存储高重复概率字符串;散列值字段,用于帮助检索或查询所述高重复概率字符串;计数器字段,用于记录相应记录的高重复概率字符串被充公匹配的次数;引用标签字段,用于在数据压缩时代替所述高重复概率字符串。预置数据字典数据库的详细细节可以参考本申请人同日申请的另外一篇名称为“数据字典的生成方法、装置和数据字典的优化方法”的文件。本实施例涉及的数据缓冲区41,用于串行接收待压缩的字符串,以便随着字符串的输入,不断扫描输入的字符串,实现对不断输入的字符串进行动态压缩。当然,预先将待压缩字符串(数据)的一部分输入数据缓冲区41更是实际中常用的缓冲区使用方式,而且能够提高对字符串的压缩速度。
图4中,字符串压缩单元44的扫描子单元51还要预置一个字符串变量――最长字符串length,用于累积扫描到的最长的字符串,以便在数据字典数据库42中完成匹配样本字符串的操作。
扫描子单元51从数据缓冲区41待压缩数据字符串的当前位置起连续扫描预定个数的字符(或者随着待压缩字符的流入数据缓冲区就从当前位置指针指向的字符起连续扫描预定个数的字符),用预定个数的字符生成在所述数据字典数据库42中可能出现的最长字符串。本例中所述预定个数为1。由于待压缩数据字符串串行流入所述数据缓冲区41,因此所述扫描字符实际上是连续读取流入到所述数据缓冲区41中的字符,每次扫描1个字符,即以1个字符作为生成可能在所述数据字典数据库42中出现的最长字符串的单位,将所述扫描得到的一个字符累加到最长字符串变量length中,例如,如果本次扫描的字符为“a”,length的内容为“”(空),则将所述扫描得到的一个字符“a”累加到最长字符串变量length中后,length的内容为“a”;而如果length的内容为“afds”,则将所述扫描得到的一个字符“a”累加到最长字符串变量length中后,length的内容为“afdsa”。
每次扫描一个字符后,都要生成新的在所述数据字典数据库42中可能出现的最长字符串length。而length中的字符串是否为最长的能够进行压缩的字符串,所述能够压缩即能够用引用标签替换,要看length中的字符串是否能够与所述数据字典数据库42中的某个记录的样本字符串相等或匹配,因此扫描子单元51在生成新的最长字符串length后,要通知第一判断子单元52,判断在所述数据字典数据库42中是否找到所述最长字符串length,所述判断实际上是一个字符串的查找或匹配操作,该操作例如需要通过计算所述最长字符串length的散列值,通过所述散列值的查找实现对所述样本字符串的查找。如果经过在所述数据字典数据库42中找到所述最长字符串length中的内容,说明已经扫描得到的字符串,即length中的字符串可以被所述数据字典数据库42中的引用标签替换,实现对length中内容的压缩。此时,在另一个数据库,即压缩数据库43中按照顺序记录或输出该字符串在所述数据字典数据库42中的引用标签(也可以记录序号,只是在最后组成压缩数据时,再将所述序号还原为引用标签),接着通知所述扫描子单元51将所述当前位置指针的值,和扫描指针的值向后移动等于最长字符串length中的长度,该长度值即是length中的字符个数,这样就可以从继续输入的字符流中查找下一个最长字符串length的内容,即可能被压缩的新的字符串。本例中,指针的移动实际涉及两个指针的操作,表面上,一个指针是动态的,即扫描指针,一个指针是静态的,指向被扫描字符串首的当前位置指针,但是由于字符是串行流入所述数据缓冲区的,因此该两个指针实际上相对与动态字符流的输入,所述数据缓冲区中的字符数在变化,因此这两个指针的物理指向也在动态变化。
如果经过第一判断子单元52在所述数据字典数据库42中没有找到所述最长字符串length中的内容,说明已经扫描得到的字符串,即length中的字符串不能被所述数据字典数据库42中的引用标签替换,此时应该决定是继续扫描还是判断已经扫描的字符串不可能被一个引用标签替换,从而开始进行新起点待压缩字符串的扫描。因此,由第二判断子单元53判断所述最长字符串length的内容(即字符串的长度)是否超过预定的长度,例如已经超过所述数据字典数据库42中最长的样本字符串的长度,如果超过(有时也视“相等”满足条件),说明已经没有可能在所述数据字典数据库42中找到相匹配的样本字符串,以及可以替换的引用标签,因此输出当前位置的字符,即当前位置指针指向的字符,在另一个数据库,即压缩数据库43中按照顺序记录或输出该字符,准备将该字符作为不可压缩的普通字符,然后通知所述扫描子单元51,将所述当前位置指针后移1个字符的位置,同时将扫描指针设置与所述当前位置指针指向相同的位置或单元,开始进行下一轮的字符串扫描。如果第三判断子单元54判断所述最长字符串length的内容没有超过预定的长度,说明可能还没有达到能够被引用标签替换的样本字符串的长度,应当继续扫描及累积最长字符串length的内容,因此通知所述扫描子单元51,将新扫描的字符或字符组累加到当前最长字符串length中,形成新的最长字符串length,然后将所述扫描指针后移1个字符的位置,继续下一步的字符串扫描。
在当前位置指针和/或扫描指针移动后,可能待压缩的字符串已经扫描完毕,尤其是累积在最长字符串length中的字符可能为提高压缩速度全部作为原始字符输出,因此要在压缩数据生成单元45的一个判断子单元(图中未绘出)判断待压缩的字符串是否扫描完毕,如果没有扫描完毕,复位所述最长字符串,通知所述扫描子单元51继续扫描。这里所说的复位有三种情况,第一种复位是将最长字符串length预置为最近扫描得到的字符,或者置空。第二种复位是将最近扫描得到的字符累加到最长字符串length中。第三种是将最长字符串length预置为空。
如果压缩数据生成单元45的那个判断子单元判断待压缩的字符串已经扫描完毕,则由压缩数据生成单元45另外的子单元的将记录或存储在压缩数据库43中的所述引用标签和原始字符组成压缩后的数据串,该数据串可以进行传输或进行后续的处理。
鉴于图4、5所述实施例的实现细节在本发明的方法部分的实施例中有详细的说明,在此不再赘述。
采用上述方法或装置的实施例,例如,经过所述压缩数据生成单元45将所述压缩数据库43中的引用标签和字符串组装成压缩数据如下表1所示。
表1:
标签1 标签2 标签3 原始数据 。。。。。。 标签n
表中的数据包含了引用标签和原始的数据(字符),这样数据在传输以前还需要进一步的处理,增加一个数据头或头文件,以便于数据接收端对对压缩数据的识别和还原。例如:
在原始数据压缩过程中就要形成一个头文件,用于标识压缩数据的性质,例如是标签还是原始数据的标志,这样,在动态压缩之后也同样形成一个头文件,例如,如果压缩数据是标签,就用八位二进制的最高位置“1”标识,如果压缩数据是原始字符就用八位二进制的最高位置“0”标识。所以在头文件中就会有一段数据是专门标识压缩文件中数据的组成。
例如:如果在压缩之后的数据为表1所示的标签字符串,则在头文件的标识数据位上就会这样如表2所示:
表2:
1 标签1数据长度 1 标签2数据长度 1 标签3数据长度 0 原始数据长度 。。。。。。 1 标签n数据长度
这里假设标签的长度最长为128位,则每一个标签的标识数据为8位,即最高位(第一位)标识性质,后7位标识长度,在原始数据段超过128位时则用下一个标识单元继续标识。

Claims (2)

1.一种基于数据字典的数据压缩方法,其特征在于包括:
A、预置数据字典数据库; 
B、从待压缩数据字符串的当前位置起连续扫描预定个数的字符,将扫描得到的预定个数的字符累加生成最长字符串;
C、判断在所述数据字典数据库中是否找到所述最长字符串,如果找到,记录该字符串在所述数据字典数据库的引用标签,并将扫描指针向后移动大于或等于最长字符串的长度,转步骤D继续,否则,判断所述最长字符串是否满足处理条件,如果不满足,形成新的最长字符串,并将所述扫描指针向后移动一个字符,否则,记录当前位置指针的字符,并使所述当前位置指针向后移动至少一个字符,并使扫描指针指向当前位置指针指向的字符;
D、判断所述待压缩数据字符串是否扫描完毕,如果没有扫描完毕,复位所述最长字符串,回到步骤B继续;
E、在待压缩数据字符串处理完毕时,将输出的引用标签和字符串组装成压缩数据。
2.如权利要求1所述的基于数据字典的数据压缩方法,其特征在于,如果没有在数据字典数据库中找到最长字符串,判断所述最长字符串的长度值是否等于或超过设定的第一阈值,如果等于或超过,将所述最长字符串存储入所述数据字典数据库,否则,继续操作。
 3. 如权利要求2所述的基于数据字典的数据压缩方法,其特征在于还包括,如果所述待压缩数据字符串扫描完毕,将所述数据字典数据库中所有记录的匹配次数计数值复位。
 4. 如权利要求3所述的基于数据字典的数据压缩方法,其特征在于,如果在所述数据字典中找到所述最长字符串,将与所述最长字符串内容相同记录的匹配次数计数值加1。
 5. 如权利要求4所述的基于数据字典的数据压缩方法,其特征在于还包括,如果所述待压缩数据字符串扫描完毕,判断所述数据字典数据库的记录个数是否超过设定的阈值,如果超过,删除所述匹配次数计数值小于第二阈值的记录。
 6. 一种基于数据字典的数据压缩方法,其特征在于包括:
A、预置数据字典数据库;
B、用待压缩数据字符串的第一个字符预置最长字符串变量,并使所述当前位置指针和扫描指针指向待压缩数据字符串的第二个字符;
C、从待压缩数据字符串的当前位置起连续扫描预定个数的字符,将扫描得到的预定个数的字符累加生成最长字符串;
D、判断在所述数据字典数据库中是否找到所述最长字符串,如果找到,记录该字符串在所述数据字典数据库的引用标签,并将扫描指针向后移动大于或等于最长字符串的长度,转步骤E继续,否则,判断所述最长字符串是否满足处理条件,如果不满足,形成新的最长字符串,并将所述扫描指针向后移动一个字符,否则,记录当前位置指针的字符,并使所述当前位置指针向后移动至少一个字符,并使扫描指针指向当前位置指针指向的字符;
E、判断所述待压缩数据字符串是否扫描完毕,如果没有扫描完毕,复位所述最长字符串,回到步骤C继续;
F、在待压缩数据字符串处理完毕时,将输出的引用标签和字符串组装成压缩数据。
 7. 一种基于数据字典的数据压缩装置,包括用于存储样本字符串的数据字典数据库、用于存储待压缩的字符串的数据缓冲区,以及用于暂存中间压缩数据的压缩数据库; 其特征在于还包括:
扫描子单元,从待压缩数据字符串的当前位置起连续扫描预定个数的字符,将扫描得到的预定个数的字符累加生成最长字符串;
第一判断子单元,判断在所述数据字典数据库中是否找到所述最长字符串,如果找到,记录该字符串在所述数据字典数据库的引用标签,并将数据缓冲区的扫描指针向后移动大于或等于最长字符串的长度,然后转第二判断子单元,如果没有找到,判断所述最长字符串是否满足处理条件,如果不满足,形成新的最长字符串,并将所述扫描指针向后移动一个字符,否则,记录当前位置指针的字符,使所述当前位置指针向后移动至少一个字符,并使扫描指针指向当前位置指针指向的字符;
第二判断子单元,用于判断所述待压缩数据字符串是否扫描完毕,如果没有扫描完毕,复位所述最长字符串,转扫描子单元; 
压缩数据生成单元,用于在待压缩数据字符串处理完毕时,将所述压缩数据库中的引用标签和字符串组装成压缩数据。
CN2006101096276A 2006-08-11 2006-08-11 基于数据字典的数据压缩方法、装置 Expired - Fee Related CN1928850B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2006101096276A CN1928850B (zh) 2006-08-11 2006-08-11 基于数据字典的数据压缩方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2006101096276A CN1928850B (zh) 2006-08-11 2006-08-11 基于数据字典的数据压缩方法、装置

Publications (2)

Publication Number Publication Date
CN1928850A CN1928850A (zh) 2007-03-14
CN1928850B true CN1928850B (zh) 2011-04-13

Family

ID=37858818

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006101096276A Expired - Fee Related CN1928850B (zh) 2006-08-11 2006-08-11 基于数据字典的数据压缩方法、装置

Country Status (1)

Country Link
CN (1) CN1928850B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104734722A (zh) * 2013-12-23 2015-06-24 深圳市国微电子有限公司 数据压缩方法及数据解压缩装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103036642B (zh) * 2011-10-09 2015-11-25 华为技术有限公司 一种数据的传输方法及发送端和接收端
US9166620B2 (en) * 2012-09-26 2015-10-20 Qualcomm Incorporated Method and apparatus for a memory based packet compression encoding
CN103198127B (zh) * 2013-04-10 2016-03-30 中国银行股份有限公司 大文件排序方法及系统
CN105630529A (zh) * 2014-11-05 2016-06-01 京微雅格(北京)科技有限公司 Fpga配置文件的加载方法和解码器
CN106815267A (zh) * 2015-12-01 2017-06-09 中兴通讯股份有限公司 数据存储方法和装置
CN105677809B (zh) * 2015-12-31 2019-06-28 广州华多网络科技有限公司 一种基于移动终端的中文词条索引压缩方法及移动终端
CN105743509B (zh) * 2016-01-26 2019-05-24 华为技术有限公司 数据压缩装置及方法
CN112148694B (zh) * 2019-06-28 2022-06-14 华为技术有限公司 一种用于电子设备的数据压缩、数据解压方法及电子设备
CN113035282A (zh) * 2021-05-27 2021-06-25 江苏数字产权交易有限公司 基于标签数据生长基因的数据序列处理方法
CN113609341A (zh) * 2021-08-19 2021-11-05 白杰 数据字典的生成方法
CN116388767B (zh) * 2023-04-11 2023-10-13 河北湛泸软件开发有限公司 用于软件开发数据的安全管理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1228887A (zh) * 1996-07-24 1999-09-15 尤尼西斯公司 与串搜索交错进行即时字典更新的数据压缩和解压缩系统
CN1736030A (zh) * 2002-10-30 2006-02-15 河床技术股份有限公司 用于存储器中数据压缩的基于内容的分段模式及包括等级分段表示的传输

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1228887A (zh) * 1996-07-24 1999-09-15 尤尼西斯公司 与串搜索交错进行即时字典更新的数据压缩和解压缩系统
CN1736030A (zh) * 2002-10-30 2006-02-15 河床技术股份有限公司 用于存储器中数据压缩的基于内容的分段模式及包括等级分段表示的传输

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104734722A (zh) * 2013-12-23 2015-06-24 深圳市国微电子有限公司 数据压缩方法及数据解压缩装置
CN104734722B (zh) * 2013-12-23 2018-05-01 深圳市国微电子有限公司 数据压缩方法及数据解压缩装置

Also Published As

Publication number Publication date
CN1928850A (zh) 2007-03-14

Similar Documents

Publication Publication Date Title
CN1928850B (zh) 基于数据字典的数据压缩方法、装置
CN1997011B (zh) 数据分割方法和数据分割装置
Bentley et al. A locally adaptive data compression scheme
AU712114B2 (en) Compression of an electronic programming guide
CN1671103B (zh) 数据压缩的方法和装置
US5973630A (en) Data compression for use with a communications channel
US5003307A (en) Data compression apparatus with shift register search means
Zhong et al. Timeliness in lossless block coding
CN101667843B (zh) 嵌入式系统的数据压缩、及解压缩方法与装置
CN100471074C (zh) 用于匹配供给Turbo编码器的数据块的方法和相应通信装置
EP1334580A1 (en) Data compression of request sequences in arq protocols
CN111917512A (zh) 一种在多跳传输系统中基于bats码的高效编码设计方法
CN101835043A (zh) 基于块编码的带宽自适应桌面共享方法
CN101557399A (zh) 一种xmpp协议传输数据压缩与解压缩方法
CN1316749C (zh) 压缩和解压缩消息的通信设备及相关的通信系统和方法
Wong et al. Error detection in arithmetic coding with artificial markers
CN1928849A (zh) 数据字典的生成方法、装置和数据字典的优化方法
CN101469989B (zh) 一种手机网络导航中导航数据的压缩方法
CN116610265A (zh) 一种商务信息咨询系统的数据存储方法
WO2001063772A1 (en) Method and apparatus for optimized lossless compression using a plurality of coders
CN115801902A (zh) 一种网络访问请求数据的压缩方法
CN101312448B (zh) 一种数据处理方法
CN101827329A (zh) 短消息处理方法及终端
Sundaresan et al. Sequential decoding for the exponential server timing channel
CN108573069B (zh) 一种加速压缩流量正则表达式匹配的Twins方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: JIANG ZHIYUAN

Free format text: FORMER OWNER: BAI JIE

Effective date: 20120731

Free format text: FORMER OWNER: LI WEI LU ZHENGYU

Effective date: 20120731

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100089 HAIDIAN, BEIJING TO: 264012 YANTAI, SHANDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20120731

Address after: 264012, No. 9, No. 6, agriculture support, Zhifu District, Yantai, Shandong

Patentee after: Jiang Zhiyuan

Address before: 100089 room 1, unit 16, building 203, Nanzhuang, Haidian District, Beijing

Co-patentee before: Li Wei

Patentee before: Bai Jie

Co-patentee before: Lu Zhengyu

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110413

Termination date: 20150811

EXPY Termination of patent right or utility model