首页> 中国专利> 基于Hbase数据库的倒排索引混合压缩及解压方法

基于Hbase数据库的倒排索引混合压缩及解压方法

摘要

本发明公开了一种基于Hbase数据库的倒排索引混合压缩方法,包括以下步骤:对Hbase数据库进行处理得到内容包括键和值的Hbase数据库倒排索引数据表;对键部分采用键既字典压缩法进行压缩;对值部分采用可变字节码压缩法进行压缩;将压缩后的内容写入文件。本发明还公开了一种采用上述压缩方法压缩后的压缩文件键部分的解压方法,对每一条压缩数据的长度进行判断,根据以下两种情况分别处理并获得解压数据:1、长度小于或等于13,2、长度大于或等于25,否则解压失败。本发明采用分类混合压缩方法及分类解压法,在尽量保证高解压率的前提下提高压缩比,实现文件读取和数据解压的统一考量,在整体上提高倒排索引的查询效率并节省存储空间。

著录项

  • 公开/公告号CN102708187A

    专利类型发明专利

  • 公开/公告日2012-10-03

    原文格式PDF

  • 申请/专利权人 成都信息工程学院;

    申请/专利号CN201210147725.4

  • 发明设计人 安俊秀;程芃森;

    申请日2012-05-14

  • 分类号G06F17/30(20060101);

  • 代理机构11282 北京中海智圣知识产权代理有限公司;

  • 代理人巢瑞钰

  • 地址 610000 四川省成都市西南航空港经济开发区学府路一段24号

  • 入库时间 2023-12-18 06:42:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-29

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20140430 终止日期:20150514 申请日:20120514

    专利权的终止

  • 2014-04-30

    授权

    授权

  • 2012-11-28

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20120514

    实质审查的生效

  • 2012-10-03

    公开

    公开

说明书

技术领域

本发明涉及一种倒排索引压缩及解压方法,尤其涉及一种基于Hbase数据 库的倒排索引混合压缩及解压方法。

背景技术

对数据压缩可以加快数据从磁盘读入到内存的速率。高效的解压算法使得 被压缩过的数据块从硬盘读取到内存后再解压所消耗的时间比相同的未压缩的 数据块从磁盘读取到内存所消耗的时间少。当数据量巨大时,这种时间的缩短 性更明显。所以,在更多的情况下,使用了压缩的倒排索引表的搜索引擎系统 比没有使用的系统运行效率要高。通常而言,压缩比越大,解压缩效率相对较 低。如果盲目追求压缩效率、解压效率和压缩比三者之一,均不能满足实际需 求。因此需要从索引查询效率最大化出发,研究三者之间的最佳平衡点。

不同于传统的行式关系性数据库,Hbase是一种稀疏的面向列的分布式数据 库。在Hbase中所有数据都必须通过关键字关联起来,因此相对于关系型数据 库或文件系统,Hbase数据库更适合于索引类数据结构的构建。

使用基于统计的压缩方法(Shannon,1948;冯桂,2011),其核心原理是 香农信息论。实际的操作过程是根据信源中出现频率大的符号用短一点的编码 表示,频率小的符号用长一点的编码表示。由于大概率符号出现次数多,小概 率符号出现次数少,经过编码后可以用尽可能少的符号无失真的表示原信源所 包含信息。但使用基于统计的压缩方法使得码树过于庞大,而本身的压缩数据 是以块为单位,因此压缩比效果不佳,并且解压过程中存在大量的位操和码树 查询操作使得解压效率一般。

使用基于整数变换的压缩方法(A,M.,2000;Williams,1999;V,A., 2005;王虎,2006),适用于一连串整数的压缩。它是通过整数的分解或者组合 变换,用适当的位数来表示一个或一组整数,较小的数用较少的位数表示,较 大的数用较多的位数来表示,通过牺牲固定位数可表示数的总的个数来换取较 少的空间。但Hbase的数据是最短的8位字节型数据,以字节为单位压缩,提 高压缩比难度大,并且不同的压缩方法由于操作粒度不同,使得解压效率也随 着粒度的变化而变化。

使用基于字典的压缩法(Ziv,1977;Storer,1992;曹登钧,2004),是将 字典索引机制引入压缩方法中。在其他系统中通常需要额外的空间存放索引, 查询时在索引中找到对应数据的位置信息,再到原文中找到需要查询的信息。 但如果在字典压缩方法中需要额外的空间存放字典信息,会降低压缩比,甚至 可能出现体积膨胀。

上述的压缩方法从不同的角度和方式提高了压缩比或者解压缩效率,但在 倒排索引压缩中存在的共同问题是:这些压缩方法或是关注于压缩比,或是关 注于解压缩效率,对更注重查询效率的倒排索引而言,文件的读取和数据的解 压是统一的过程,应该把这两个因素统一考虑,而不是单独的偏向于某一方。 本发明希望通过采用一种混合的压缩方法,针对文件中不同的逻辑部分采用不 同的压缩方法,扬长避短完成压缩模型的构建。

Hbase数据库目前仅支持Gzip压缩和Lzo压缩,Gzip压缩满足较高的压缩 比,但是解压效率低;Lzo具有很高的解压效率,但是压缩比较低。

综上,目前还没有一种基于Hbase数据库的压缩及解压方法,能够兼顾较 高解压率和较高压缩比、实现文件读取和数据解压的统一考量,在公开文献中 未见相关报道,在实际应用中更未见应用先例。

发明内容

本发明的目的就在于为了解决上述问题而提供一种基于Hbase数据库的倒 排索引混合压缩及解压方法。

为了达到上述目的,本发明采用了以下技术方案:

本发明基于Hbase数据库的倒排索引混合压缩方法包括以下步骤:(1)对 所述Hbase数据库进行倒排索引处理得到Hbase数据库倒排索引数据表,所述 Hbase数据库倒排索引数据表的内容包括键和值;(2)对所述Hbase数据库倒排 索引数据表中的键部分采用键既字典压缩法进行压缩;(3)对所述Hbase数据 库倒排索引数据表中的值部分采用可变字节码压缩法进行压缩;(4)将压缩后 的内容写入文件。

本发明的思路是把Hbase数据库进行倒排索引处理得到内容包括键和值的 Hbase数据库倒排索引数据表,尽量简化Hbase数据库的同时便于分类压缩;在 压缩过程中采用键既字典压缩法和可变字节码压缩法分别对键部分和值部分进 行压缩,这样在尽量保证较高解压率的前提下提高压缩比,实现高效压缩及解 压目的。

作为优选,所述步骤(1)中,所述Hbase数据库倒排索引数据表的逻辑视 图图表如下所示:

上表中,Row key表示行键,在倒排索引表中表示某个词,对应于词级 倒排表中的索引项T;Time stamp是由Hbase数据库在插入数据时自动生成 的唯一时间戳标识;position是列族名,此列族下有若干不定数量的列,每

一列的列名是T出现的文档的文档ID号;

所述步骤(2)包括以下步骤:

A、从所述Hbase数据库倒排索引数据表的键部分抽取一条记录;B、 比较该条记录中的行键与字典数据中的行键是否相等,如果相等,则进入 步骤C,如果不等,则以该条记录为新的字典数据,并将该条记录本身作为 压缩后的数据,然后进入步骤E;C、将该条记录与字典数据从最后一位向 前对比,当二者不一致时结束比较;D、取该条记录中第七个域开始至步骤 C的结束位置之间的数据为压缩后的数据;E、完成该条记录的压缩,然后 从所述Hbase数据库倒排索引数据表的键部分抽取下一条记录,并进入步 骤B;F、重复步骤B-E,直到完成所有记录的压缩。

对应地,本发明所述压缩方法压缩后的压缩文件键部分的解压方法,包括 以下步骤:

(1)从所述压缩文件键部分中抽取一条压缩数据;

(2)判断该条压缩数据的长度,如果长度小于或等于13,则进入步骤(3), 如果长度大于或等于25,则进入步骤(7),如果长度大于13且小于25, 则表明压缩文件已损坏,立即停止解压操作,解压失败;

(3)令字典数据的前六个域数据为u,令该条压缩数据为v,令字典数据 的最后多个数据为w,令字典数据的长度为p,令u的长度为m,令v的长 度为n,则w为字典数据最后的(p-m-n)个剩余长度的数据,以u后接v 再后接w作为解压数据;

(4)以字典数据长度作为解压数据的长度;

(5)完成该条压缩数据的解压,然后从所述压缩文件中抽取下一条压缩数 据,并进入步骤(2);

(6)重复步骤(2)-(9),直到完成所有压缩数据的解压;

(7)以该条压缩数据为新的字典数据;

(8)以该条压缩数据为解压数据,以该条压缩数据的长度为解压数据的长 度;

(9)完成该条压缩数据的解压,然后从所述压缩文件键部分中抽取下一条 压缩数据,并进入步骤(2);

(10)重复步骤(2)-(9),直到完成所有压缩数据的解压。

本发明的有益效果在于:

本发明根据Hbase的物理存储的规律性,针对数据块采用以键既字典算法 为核心的混合压缩方法,对数据中不同的逻辑部分采用不同的压缩方法,并进 行对应分类解压,在尽量保证较高解压率的前提下提高压缩比,实现文件读取 和数据解压的统一考量,在整体上提高倒排索引的查询效率并节省存储空间; 本发明还具有以下特点:(1)满足Hbase整个体系结构,支持Map/Reduce操作; (2)同时提高了空间利用率和解压效率;(3)针对键部分的键既字典压缩方法 不仅适用于倒排索引的压缩,同样适用于其它类似大表的压缩。

附图说明

图1是本发明中实施例所述的HFile文件结构图;

图2是与图1对应的HFile文件结构的中文结构图;

图3是本发明中实施例所述的数据块记录结构图;

图4是与图3对应的数据块记录结构的中文结构图;

图5是本发明所述键既字典压缩法压缩的流程图;

图6是本发明所述键既字典压缩法解压的流程图;

图7是本发明所述可变字节码压缩法压缩的流程图;

图8是本发明所述可变字节码压缩法解压的流程图;

图9是本发明实施例所述压缩文件写入的流程图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步具体描述:

首先对Hbase数据库进行说明:Hbase是架构在Hadoop上的分布式列数据 库,其文件系统沿用了Hadoop的HDFS(Hadoop File System)。Hbase的一张表 中可以有多个列族(Column Family),在物理存储上一个列族对应一个文件夹, 文件夹中可包含若干个Hfile文件。如图1和图2所示,Hfile文件是不定长文件, Data块中每一条记录保存一个键值(Key/Value)对,其余部分主要保存相应的 定位信息和索引信息。Hbase会自动对内存中的数据以行键(row key)基于字 典序的方式排序,在写文件时一次性将内存区中所有数据按块为单位写入文件, 并且在文件尾部加上数据块索引信息。在读取文件时,并非一次性读取所有数 据,而是依据索引信息读取相关数据块。

通过对源码分析,发现在Hbase内部压缩机制中,只能对数据(Data)和原 数据(Meta)块压缩,并且压缩过程发生在数据从内存写入磁盘时,压缩以一 个块为单位,即每一个块的压缩都需要重新初始化压缩算法,上一个块的压缩 并不对下一个块的压缩有影响;相应的,从磁盘中读取数据至内存中时,执行 解压操作。

如图3和图4所示,数据块中一条记录的结构,开始是两个固定长度的数 值,分别表示键(Key)的长度和值(Value)的长度。键数据开始是固定长度 的数值,表示行键长度,紧接着是行键,然后是固定长度的数值,表示列族 (Family)名的长度,然后是列族名,接着是列名(Qualifier),然后是两个固 定长度的数值,表示时间戳(Time Stamp)和键值类型(Key Type)。在数据类型 方面,除了键的长度和值的长度是整型类似外,其余部分都是字节类型。键数 据其原始类型主要是有整型和字符型,但是Hbase为了简化数据存取过程,会 自动把数据转换为字节型,因此,键在软件制造的角度看来是一个字节型数组。 相对于键,值在实际应用中取值类型更是千变万化,但是基于同样的原因,值 也被简化为一个字节数组。

Hbase数据库的倒排索引采用词级倒排表,结构如下:

<T,(doc1,pos1,pos2,...,posf1),

(doc2,pos1,pos2,...,posf2),...,

(docn,pos1,pos2,...,posfn)>

其中,T表示索引项,即某个词;doci(i=1,2,...,n)表示包含T的文档 ID号;posi(i=1,2,...,f)表示T在该文档doci(i=1,2,...,n)中出现的 位置。

现目前,HBase对多列族支持不良,效率低下,系统缺陷多,官方建议列 族最多应控制在2个或3个。由于每一个列族单独存贮在一个文件下,同一行 数据的不同列族数据存放在不同文件中,保存了大量冗余信息,类似于Row key、 时间戳这样的数据会随着列族的增多而重复保存多次,读取时I/O操作频繁效率 低下。倒排文件读取具有实时性,应该尽量减少不必要的I/O操作,并且倒排索 引的读取具有一次读取整行的特点,对一个特定的关键词,在后续的操作中需 要的是所有的信息,包括了文件ID号、位置记录序列、词频(隐藏在位置记录 中),因此不适宜多列族存储。把文件ID号做为列名,是为了充分利用Hfile的 存储格式。在数据块中,列名域是专门用来存储列名的空间,把文件ID号存储 在其中,可节省存储空间,并且也符合人的逻辑思维习惯,并且Hbase提供相 应的接口可获取对应的列名。

鉴于Hbase和Hfile的特点,本发明设计了一种混合压缩方案:包括以下步 骤:(1)对所述Hbase数据库进行倒排索引处理得到Hbase数据库倒排索引数 据表,所述Hbase数据库倒排索引数据表的内容包括键和值;(2)对所述Hbase 数据库倒排索引数据表中的键部分采用键既字典压缩法进行压缩;(3)对所述 Hbase数据库倒排索引数据表中的值部分采用可变字节码压缩法进行压缩;(4) 将压缩后的内容写入文件。

首先,把词级倒排表的结构转化为HBase数据库下的索引表,其逻辑视图 图表如下所示:

上表中,“Row key”表示行键,在倒排索引表中表示某个词,对应于词级 倒排表中的索引项T;“Time stamp”由Hbase数据库在插入数据时自动生成的 唯一时间戳标识;“position”列族名,此列族下有若干不定数量的列,每一列的 列名是T出现的文档的文档ID号,如表中的:Doci、Docj、Dock,对应的是词 级倒排表中的doci;position列族下每一列在某一特定行最多只有一个值,这个 值是T在文档doci中出现的位置组成的位置记录序列。与上表对应的中文表格 如下:

Hbase是稀疏存储数据库,值为空的部分会直接忽略,对于表中特定行最多 只有一列有效的结构,在实际存储时,存储的数目等于值不为空的数目。上述 HBase数据库下的索引表的物理视图如下表所示:

与上表对应的中文表格如下:

然后,对所述Hbase数据库倒排索引数据表中的键部分采用键既字典压缩 法进行压缩。如图5所示,键既字典压缩法的压缩过程包括以下步骤:

A、从所述Hbase数据库倒排索引数据表的键部分抽取一条记录key;B、 比较该条记录key中的行键row key与字典数据dict中的行键row key是否相等, 如果相等,则进入步骤C,如果不等,则以该条记录key为新的字典数据dict, 并将该条记录key本身作为压缩后的数据,然后进入步骤E;C、将该条记录key 与字典数据dict从最后一位向前对比,当二者不一致时结束比较;D、取该条记 录key中第七个域开始至步骤C的结束位置之间的数据为压缩后的数据;E、完 成该条记录key的压缩,然后从所述Hbase数据库倒排索引数据表的键部分抽 取下一条记录key,并进入步骤B;F、重复步骤B-E,直到完成所有记录key 的压缩。

上述压缩方法中核心方法见图5中的虚线框内所示。

如图6所示,对应地,键既字典压缩法的解压过程包括以下步骤:

(1)从所述压缩文件键部分中抽取一条压缩数据;

(2)判断该条压缩数据的长度,如果长度小于或等于13,则进入步骤(3), 如果长度大于或等于25,则进入步骤(7),如果长度大于13且小于25, 则表明压缩文件已损坏,立即停止解压操作,解压失败(说明:长度大于 13且小于25的情况一般不会出现,所以在图4中未作表示);

(3)令字典数据的前六个域数据为u,令该条压缩数据为v,令字典数据 的最后多个数据为w,令字典数据的长度为p,令u的长度为m,令v的长 度为n,则w为字典数据最后的(p-m-n)个剩余长度的数据,以u后接v 再后接w作为解压数据;

(4)以字典数据长度作为解压数据的长度;

(5)完成该条压缩数据的解压,然后从所述压缩文件中抽取下一条压缩数 据,并进入步骤(2);

(6)重复步骤(2)-(9),直到完成所有压缩数据的解压;

(7)以该条压缩数据为新的字典数据;

(8)以该条压缩数据为解压数据,以该条压缩数据的长度为解压数据的长 度;

(9)完成该条压缩数据的解压,然后从所述压缩文件键部分中抽取下一条 压缩数据,并进入步骤(2);

(10)重复步骤(2)-(9),直到完成所有压缩数据的解压。

上述解压方法中核心方法见图6中的虚线框内所示。

下面对上述压缩和解压的核心方法的理论来源作出进一步说明:

数据块中每条记录都是键在前值在后,所有键的结构是相同的。现假设 (n,key)k表示一个键的长度和键本身序列,其中k表示键在文件中的行数。序 列key=a1,a2,a3,...,an,且key由七个小的序列组成:关键字长度,rowlen=a1,a2; 关键字,row=a3,...,a3+i;列族名长度,famlen=aj;列族名,fam=aj+1,...,aj+8; 列名,col=aj+9,...,aj+12;时间戳,time=aj+13,...,aj+20;类型标记, type=aj+21,其中j=i+4,i∈[0,255]。

研究分析发现,(n,key)k具有以下三种规律:

规律1:对于和其中famlenr≡famlenk, famr≡famk

规律2:对于和如果rowr=rowk,那么 rowlenr≡rowlenk

推论1:数列长度n=j+21=i+25,所以n∈[25,280]。

令(cn,ckey)表示压缩后键数列的长度和压缩后的键数列,其中 ckey=c1,...,ccn,且ckey可分为3个数列:ccol=c1,...,cci,ctime=...,ccj, ctype=cck,其中ci∈[1,4],cj∈[0,8],ck∈[0,1]。

推论2:压缩后的数列长度cn=ci+cj+ck,所以cn∈[1,13]。

规律3:对于和如果rowr=rowk,不存在 一个(n,key)l,l∈(r,k),使得rowl≠rowk

由于存在上述的三则规律,所以Hbase记录中的键在存储结构上相同、在 内容上存在大量的冗余,极其适用于基于字典的压缩方法;而在值部分的存储 是词在某一文章中出现的位置序列,这种逻辑特性适合于基于正数变换的压缩 方法,因此本发明在Hbase环境中提出一种键既字典的混合索引压缩模型。

如图7所示,对所述Hbase数据库倒排索引数据表中的值部分采用可变字 节码压缩法进行压缩。在Key/Value对的Value部分结构简单,由若干个有序的 四字节整型数组成。压缩过程如下:

第一步:从字节数组中,提取出所有的整型数据,还原为位置序列<p1p2… pn>;

第二步:将位置序列<p1p2…pn>转换为其差值序列<p1[p2-p1]… [pn-pn-1]>;

第三步:对差值序列<p1[p2-p1]…[pn-pn-1]>中的每一个数进行VBC编码压 缩,并记录下压缩后的字节个数。

在现在的计算机系统及程序设计语言中,一个无符号整型数据通常使用32 位来表示,但是对于较小的数来说完全使用不了这么多位,如数字1,其在内存 中的二进制表示为00000000 00000000 00000000 0000001,有效的使用位只有1 位,而浪费了31位。可变字节码,以一个字节为单位表示数,即表示一个数至 少需8位,这样对于较小的数就能使用较少的位来存储。可变字节码的编码思 想是把一个字节分为两个部分:最高一位是旗帜位,若0表示这是编码的最后 一个字节;若为1,表示下一个字节也是当前编码的一部分。因此,整数x使用 可变编码需要的位数是:

这样一来,0到127的数只需要1个字节就可以表示,128到16511需要2 个字节表示,这一数据分布范围对于词在文档中的位置而言是绰绰有余的。取 原序列的差值序列就是为了尽可能的让数据分布在0到127的范围内。虽然, 可变字节码同其他基于位的整数编码相比压缩率相对较低,但是因为可变字节 码是基于字节的,所以在解压缩方面的效率是其它整数编码效率所不能达到的。

VBC编码过程:

第一步:初始化字节数组r[4]内容全为0,i为0,需编码整数为x;

第二步:x取其最低位的八个比特位组成一个字节b,判断b的最高位是否 为1,若为1,跳至第二步,否则,跳至第四步;

第三步:另r[i]的最高位为1,低七位为b的高7位,i自增1,x右移7位, 跳至第二步;

第四步:令r[i]等于b。

字节数组r中的前i个就是压缩后的结果。

如图8所示,对应地,对所述Hbase数据库倒排索引数据表中的值部分采 用可变字节码压缩法进行解压的过程如下:

第一步:初始化整型数i为0,整型数x为0;

第二步:从压缩文件中读取一个字节b;

第三步:将b的低7位比特位保存至x的低i位至低(i+6)位比特位;

第四步:i=i+7;

第五步:判断b的最高位是否为1,若成立跳至第二步;若不成立,跳至第 六步;

第六步:x为解压后的数据。

如图9所示,最后,将压缩后的内容写入文件,其方法包括以下步骤:

(1)使用程序设计语言标准函数打开文件;

(2)使用程序设计语言标准函数写入压缩后的键的长度;

(3)使用程序设计语言标准函数写入压缩后的值的长度;

(4)使用程序设计语言标准函数写入压缩后的键;

(5)使用程序设计语言标准函数写入压缩后的值;

(6)直至数据压缩完;

(7)使用程序设计语言标准函数关闭文件。

下面以具体的实验对本发明方法的先进性进行验证:

由于本文仅针对数据块部分的压缩,为了简化实验、增强实验结果的有效 性,本文所有的实验都并非在Hbase环境下进行,而是把Hbase产生的数据处 理后,作为输入数据在模拟的Hbase读写程序中执行,验证本文方案。

本文使用的实验数据来源于互联网上的2539张网页,对这些网页净化、切 词处理后,直接插入到单机环境下的Hbase数据库中,并且立即停止Hbase数 据库服务,令其把内存中的数据写入磁盘。一共生成了3个Hfile文件,其大小 分别为:14684627字节、19308570字节、57521867字节。然后对这3个文件进 行预处理,分别从中提取出所有的数据块数据,保存在三个文件A、B、C中, 文件大小分别为:14675030字节、19296005字节、57485075字节。

实验用计算机的基本信息:

系统版本号:RedHat CentOS release 5.5;

CPU型号:Intel(R)Xeon(R)CPU E53452.33GHz(2颗);

内存容量:4046280kB。

本文的压缩方法命名为mix,使用ASCI C语言编写,gcc编译器编译为静 态链接库,编译时开启O2级编译优化;对比组实验分别采用LZO-2.05库[5]和 ZLIB-1.2.5库[6],其各自的默认编译优化级别分别为O2和O3。各个对比组实 验均是一样的框架,唯一不同在于调用的压缩和解压缩库不同。在读写磁盘和 解压缩数据都是以一个数据块为单位操作。

压缩比的测试方法如下:用压缩方法分别对三个文件进行压缩,测出每个 文件的压缩比Ci(1≤i≤3),最后取三次压缩的平均值具体见下表 所示:

通过上表可发现,本文的混合压缩方法的压缩比远远优于Lzo在倒排索引 表上的压缩效果,并且已经非常接近Gzip的压缩比。由此可得出,本文所设计 的混合压缩方法,在压缩比上已经取得了良好的压缩效果。

压缩效率的测试方法如下:在集中的一段时间内,每种压缩方法对每个文 件压缩十次,每次均记录下仅压缩所耗用的时间TCi(1≤i≤10);用文件的大小 M除以十次压缩所耗用的平均时间得到每一个文件的压缩效 率最后,取三个文件压缩效率的平均值,得 到各个压缩方法的在倒排索引表上的压缩效率具体见下表所 示:

压缩时间是指单纯对文件压缩所耗用的时间,而执行时间是在压缩时间之 上还加入了数据写入磁盘的时间。压缩时间和执行时间的测试方法基本相同, 均是执行十次取平均值,压缩时间仅测量压缩部分所消耗时间执行时间测 量了压缩时间和磁盘写入时间具体见下表所示:

解压效率的测试方法同压缩效率的测试方法基本相同,不同在于点在于解 压效率中测试的是解压时间。具体见下表所示:

解压时间是指单纯对文件解压所耗用的时间,而执行时间是在解压时间之 上还加入了数据从磁盘读入内存的时间。解压时间和执行时间的测试方法基本 相同,均是执行十次取平均值,解压时间仅测量解压部分所消耗时间,执行时 间测量了解压时间和磁盘读入时间。具体见下表所示:

文件[A\B\C][M\L\G]分别是三种压缩方法:Mix、Lzo和Gzip对文件A、B、 C压缩后所得到的文件,各个文件大小如表8所示:

实验结论:

倒排索引主要运用在搜索引擎技术中,因此为了满足搜索引擎的技术特性, 更加强调对倒排索引的即时访问性,反映在本文中主要是解压执行时间需要尽可 能的短。

设源数据大小为S(单位为MB),压缩比为C,解压效率为D(单位为MB/s), 从磁盘读数据传输到内存的时间为T,整个解压过程所消耗的时间t,等于:

t=SCD+T

Hbase读取文件并非一次读取一个文件,而是以块为单位,将包含相关Row Key的数据块读入内存。Hbase的压缩同样是以块为单位,所以无论是采用何种 压缩算法,对于每一块中的数据分布是没有影响的。因此,访问Hbase中的数 据,采用何种节压缩方法的源数据大小都是相等的。

现将实验所测数据代入上式,得到3种方法的解压过程时间为:

tmix=1.23S+Tmix,

tlzo=1.39S+Tlzo,

tgzip=4.18S+Tgzip

时间T与压缩后的数据大小有关,当源数据大小相同时,时间T与压缩比 相关。在此种情况下,mix的压缩比大于lzo的压缩比,所以Tmix小于Tlzo。 因此,可得出以下结论:

tmix<tlzo

由于mix和gzip的压缩比差别微小,由此而引起的时间T的差别较由解压 率而引起的差别不明显,因此可认定:

tmix<tgzip

因此,mix比lzo和gzip更适合于倒排索引的压缩。

以上结论适用于单机环境,若在分布式环境下,还需加入网络传输的时间, 整个解压过程消耗的时间t为:

t=SCD+T+Tnet

其中Tnet为网络传输所消耗的时间。Tnet也与压缩后文件的大小相关,在 同源大小的情况下与压缩比相关。因此,网络传输时间的加入并不会对实验结 论产生影响,只会增大mix方法和lzo方法之间的差距。

综合结论:

通过实验及其实验结果分析,本文提出的针对Hbase数据库下特定的倒排 索引表的混合压缩方法具有很高的即时性,可以满足搜索引擎对于即时响应的 要求。并且,本文设计的针对key值部分的键既字典压缩法也适用于Hbase下 其他的大表设计。但是,由于Hbase数据库在源码中只给出了Lzo算法和Gzip 算法的选项,因此为了在Hbase中能够使用本方法,必须对Hbase源码修改, 同时需要给出本方法的Java调用接口。其次,在Hbase中除了可以对数据块压 缩外,还可以对元数据块进行压缩。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号