论文部分内容阅读
当前,由于互联网技术的提高和网络的飞速发展,数据信息出现了快速地增长。伴随着数据量的增长,对海量数据的存储、传输以及处理都出现了更高的要求。对大量的数据如何能够在减少其空间占用的同时又能快速地对其进行检索查找,成为了一个新的可以探索并且需要解决的问题。在本文中我们提出了一种方法,这种方法采用一种新的压缩模式来对数据进行处理。与一般压缩模式的处理方法不同的是,该压缩模式在减少数据文件大小的同时,支持在压缩文件中直接进行检索查找等相关操作,从而达到了在减少数据存储空间占用的同时对数据进行快速查找检索的双重目的。本文所提出的压缩算法是采用基于压缩字典的字符串替换方法,该方法对文本的处理是在字节流上进行处理,所以其适用于一切文件类型。其处理过程的主要思想是将文本中高频出现的字节对(即连续的两个字节)与文本中低频出现的单个字节进行交换。当文中我们选中的字节对出现的频率高于文中我们选中的字节出现的频率时,对文本进行压缩,就会产生压缩效果。对于自然文本,基本都会达到压缩效果。另外,对用于进行压缩的字节对和字节,为避免压缩和解压过程出现二义性,需要对它们的选取加以限制,即所选取的任意两个字节对之间不能出现重叠。因为字节对的数量相比单个字节的数量要多很多,它出现高频的概率也比单个字节出现高频的概率低,为了保证压缩效果的最大化,根据该压缩方法的特点,不同于文中介绍的Manber压缩模式中所使用的启发式方法,本文采用了贪心方法对不重叠字节对进行选取。由于单个字节的数量最多有256个,可用字节对最多不会超过128个。这种基于压缩字典不依赖文本上下文的压缩模式保证了对压缩文件的可查找性。我们在对压缩数据进行查找时,先将待查找的数据用同样的压缩方法进行压缩,再在压缩文件中对其进行查找,对查找到的结果进行解压就得到了最终的结果。通过实验证明,该算法的压缩效果平均可达到15%。在将该算法应用在grep查找程序和ClamAV反病毒系统中,根据实验结果发现,在最好的情况下,这两种应用模式的查找速度最高可分别提高81%和15%。并且,我们将这一方法在Clam AV中进行了命令集成,方便其使用。为了能更好地提高该压缩方法在大型非英文文本中的压缩率,我们选取了在网络传输中被广泛使用的UTF-8编码格式,针对该项编码格式做了专门的算法改进。在对中小规模的中文文本压缩实验中,其平均压缩率可达到近20%。在grep查找程序中,对UTF-8格式的中文类模式查找速度最高可提升70%。对于大型且内容重复较高的文件,其会有更高的压缩率。