论文部分内容阅读
在过去的的几年里,伴随着云计算技术的蓬勃发展,基于列存储的数据库系统也逐渐兴起,许多机构正在尝试将传统的行数据库迁移到列存储数据库中去,以适应数据的海量增长。其中HBASE(Hadoop Database)列存储数据是目前业界关注度最高的开源产品之一,著名的社交网站Facebook公司把其每个月超过1350亿条信息保存在HBASE列存储数据库中。尽管现在业界对HBASE期望很高,但是它还是有一些缺点,例如:没有结合列数据按列存储的特点对数据进行高效的压缩,不支持直接操作压缩态数据等。因此,研究高效实用的压缩算法具有重要的实际意义。本文首先研究了在HBASE平台下的列存储数据库的需要用到的关键技术,然后深入的探讨HBASE平台文件的存储格式、文件的读写流程、数据的压缩方法等。在现有压缩系统的基础上针对列存储数据库按列存储、列属性值相似度高这一事实提出了在列存储数据库中引入一些轻量级的压缩算法,以列属性值为一个编码单元进行数据压缩,对某些数据不仅仅可以提高数据压缩率,还可以减少压缩解压时间。对于使用这些轻量级的压缩算法压缩的数据,本文还提出不需解压直接操作压缩态数据的方法,进一步的提高的系统的性能。同时针对不同数据适用不同压缩算法这一情况,提出了一种基于贝叶斯分类的压缩算法动态选择策略,通过贝叶斯公式计算后为不同的数据块选择不同的压缩算法,尽可能使待压缩数据达到最佳的压缩效果。实验证明,通过在HBASE系统中引入轻量级的压缩算法和加入基于贝叶斯分类的压缩算法选择策略之后,不仅系统的压缩率提高了,而且压缩解压的速度和查找数据的速度也加快了。