石头:2229 - 371 x
要不是Raichand*和Rinkle王妃Aggarwal 塔帕尔大学计算机科学与工程学系帕蒂亚拉 |
通讯作者:要不是Raichand,电子邮件:(电子邮件保护),(电子邮件保护) |
相关文章Pubmed,谷歌学者 |
访问更多的相关文章全球研究计算机科学杂志》上
面向列的数据存储所有单个列的值被存储为一行第二列中的所有值紧随其后。这种方式有助于数据压缩存储记录自相似类型的值相同的列,可能重复。本文调查了各种数据压缩技术在面向列的数据库中。数据压缩有效地用于节省存储空间和网络带宽。它提高了查询执行的性能。专门的算法基于的类型列中存储的数据导致巨大的提高压缩比。上级比率导致更有效地利用带宽。
关键字 |
压缩,面向列的数据库、减压、NoSQL, HBase |
介绍 |
数据存储的数据量不断增加,由于增加了网络和业务需求所需的资源,从而增加成本的空间和网络利用率。类型的存储tb的数据,尤其是人类可读的文本,它有利于压缩获得显著节省所需原始数据存储。压缩技术并没有在传统的关系数据库系统中使用。时间和空间之间的交换为关系数据库压缩是不多的。而将数据存储在列介绍大量的可能性从压缩算法更好的性能。面向列的数据库保存数据分组在列。后来列值存储在磁盘上连续与row-oriented连续方法的数据库存储整个行[1]。 |
HBase是一个最著名的NoSQL面向列的数据存储。在本文中,我们介绍了压缩技术在面向列的数据库系统。在下一节中,我们简要布局相关工作。在第三节,我们识别各种数据压缩技术适合面向列的数据存储。第四部分简要指出压缩方案,可以使用HBase。我们提供我们的结论在第五节。 |
相关工作 |
研究数据库压缩大约已有近一个世纪虽然压缩技术直到1990年才被频繁使用的[2]。只有今天,这些被投入使用在重要的信息系统。可能因为之前的大部分是集中在减少存储数据的大小,但在90年的研究人员开始专注于压缩影响数据库性能(10、11、13、12)。 |
一些研究人员已经研究压缩数据库系统及其性能的影响[13]14日,15日。这些研究工作发现,压缩并减少I / O成本,但如果压缩/解压较为重要的成本节省成本,那么它就降低了数据库的整体性能。这平衡变得更加有利于压缩提高CPU速度[20]。许多研究人员讨论文本压缩方案,诸如哈夫曼编码基于字母的频率。字符串匹配方案被最近的研究在研究压缩(16、17、18、19)。 |
随着这些传统技术,面向列的数据库也最好大幅压缩,压缩数据从超过一行一次从而使许多伟大的可行的压缩算法。例如,对于压缩在面向列的数据库排序数据,行程长度编码(RLE),在重复相同的元素表示为(价值、扫描宽度)对,是一个令人愉快的技术[2]。我们可以看到通常面向更高的压缩比列的数据存储,因为连续的值相同的列的相似类型和可能重复,而相邻的属性在一个元组不[21]。CPU的开销的遍历页面列值(尤其是当所有列值是相同的大小)往往是更少。面向列的数据库可以存储不同的列在不同的排序顺序[22],进一步提高压缩的可能性。面向列的压缩技术也提高CPU性能通过允许直接在压缩数据的操作。尤其如此等压缩方案运行长度编码指的是多个相同的值的条目在一个记录[2]。 |
压缩方案面向列的数据库 |
简明地介绍了各种压缩方案面向列的数据库。对于每个方案,我们首先提出一个简短的描述中使用的传统版本的计划之前行面向数据库与面向列的数据库系统,后来在[4]。 |
字典编码 |
今天的数据库系统也许词典编码方案最主要类型的压缩方案。这些计划用较小的代码替换频繁模式。column-optimized变体字典编码的新实现。行导向的混合属性数据存储基本上是不能从多个元组在一个条目从而使词典编码方案不要功能完全,因为他们只能从一个元组属性值映射到字典条目。 |
1)字典编码算法:字典编码算法[4]计算的比特数,X,需要编码的一个属性列(可计算的数量直接从独特属性的值)。然后计算有多少个X-bit编码值可以在1、2、3或4字节。例如,[4]如果属性有32个值,它可以编码在5位,所以1这些值可以在1个字节,3在2字节,3个字节,4或6 4个字节。假设3-value / 2字节选项被选中。在这种情况下,创建一个映射之间所有可能的3位值和原始值。例如,如果该值1是由5位编码:00000;价值25由5位编码:00001,价值31 00010 5位编码;字典会有条目(读条目从右到左) |
X000000000100010 31 25 - > 1 |
X显示一个未使用的浪费为。解码算法对于这个例子然后简单:读2字节和查找条目字典拿回3的值。面向列的数据库非常I / O效率成为CPU限制查询的列在应用甚至少量的压缩[6]。所以I / O储蓄通过不浪费额外的空间不重要。因此,值得byte-aligning字典条目甚至获得适度的CPU资源方面的节省[2]。 |
2)Cache-Conscious优化[4][5]:决定是否值应该挤进1、2、3或4字节决定要求字典适合L2缓存。在上面的例子中,我们每个条目适合2字节和字典条目的数量是323 = 32768。因此字典的大小是393216字节,不到一半的L2缓存机(1 mb)。注意,对当前架构缓存大小,1或2字节将使用专门的选项。 |
运行长度编码 |
运行长度编码(RLE)是一个简单的和流行的数据压缩算法。行程长度编码压缩[2]基于替代的想法相同的长序列列一个紧凑的单数表示。因此,它非常适合列排序或有一定规模的相同的值。这些替换为三元组:运行(价值,起始位置,运行长度),每个元素的三重固定数量的比特。row-oriented系统,RLE只是用于大型有很多空格或重复字符的字符串属性。但在面向列的RLE可以更大大使用系统属性是连续存储和运行相同的价值是很常见的(主要是少列中不同值)。 |
零抑制 |
Null压缩方案有很多变种,但基本逻辑是取代连续0或空白的数据被删除,取而代之的是有多少,他们的描述存在[2]。自然,这种技术工作的大数据集上0或空格出现频繁。可变字段大小的编码的字节数需要每个字段存储在字段前缀。这让我们排除标题null需要垫一个固定大小的数据。例如,[2]的整数类型,而不是使用完整的4个字节来存储整数,我们编码的字节数的需要使用两个比特(1、2、3、4字节),把这两位整数的前缀。 |
Lempel-Ziv编码 |
Lempel-Ziv压缩算法是在1977 - 78年。Lempel-Ziv[7,8]无损压缩是应用最广泛的技术文件压缩。UNIX命令gzip仅基于该算法。Lempel-Ziv替换变量大小的模式与固定长度编码与哈夫曼编码产生可变大小的代码。提前在Lempel-Ziv编码知识模式频率不是一个需求一样它构建模式表动态编码数据。主要的思想是分析不同长度的序列输入重叠块和构建字典块看到迄今为止。后来出现的这些块替换为一个指针指向一个早些时候发生相同的块。 |
混合柱状压缩 |
一般来说,数据库表的行存储在块。通常情况下,一行是完全包含在一个块,行存储的列相邻[9]。但是太大行不能适应一块所以导致生成的行下一个块称为行chaining-but没有变化的组织下彼此列存储。这种压缩机制取代连续值与一个小得多的象征,从而减少长度的行。大量的压缩可以通过重复的值替换为一个小得多的象征。在混合柱状压缩,我们得到一个列向量为每个列,列向量压缩列向量,并存储在数据块。这组数据块压缩单元。块的压缩单元包含一组行所有的列,如图1所示。 |
HBASE压缩方案 |
HBase是Hadoop数据库。它是一个分布式、可伸缩大数据存储。我们可以使用HBase随机、实时大数据的读/写访问。BigTable的开源跟进,HBase使用BigTable的数据模型非常相似。HBase的数据行是一个可排序的行键和一个变量的列数,这是进一步分为集称为列家庭。每个数据单元在HBase可以包含多个版本的相同的数据索引的时间戳。图2 (a)代表一个HBase表作为分类地图与关系数据库的数据通常表示为表形式。表中的数据单元可以被视为一个键值对,关键是结合关键行,列和时间戳;和值是一个粗略的图2 (b)的字节数组。 |
HBase最重要的功能之一是使用数据压缩。这很重要,因为[1]: |
1。压缩减少了从HDFS写入/读取的字节数。 |
2。节省了磁盘使用情况。 |
3所示。提高的效率从远程服务器获取数据时网络带宽。 |
HBase附带支持大量的压缩算法,可以在列族级启用。 |
1)可编解码器:HBase支持GZip和LZO,时髦的编解码器。在前进之前这些编解码器的细节让看到压缩算法比较谷歌于2005年出版 |
从表1我们可以看到,一些算法有更好的压缩比其他人更快在编码和解码[1]中快得多。 |
时髦:上口,谷歌在BSD许可下发布的,我们访问Bigtable所使用的相同的压缩(活泼的)。它的行为完全提供高速度和合理的压缩。代码是用c++写的。 |
LZO: Lempel-Ziv-Oberhumer (LZO)是无损数据压缩算法。专注于减压速度,写在ANSI c HBase不装货LZO因为许可证问题:HBase使用Apache许可,而LZO使用不兼容的GNU通用公共许可证(GPL)。通过添加LZO压缩支持,HBase StoreFiles (Hfiles)使用LZO压缩块写。HBase使用本机LZO库执行压缩,而本地库加载HBase通过hadoop-lzo Java库,我们建立了[1]。 |
GZIP: GZIP压缩算法压缩比时髦或LZO,但是比较慢。它有一个额外的节省存储空间。 |
结论 |
在本文中,我们列出了一些相当简单的数据压缩技术实现数据库的性能改进。这些技术不仅减少空间需求在磁盘和I / O性能测量记录每时间永久和临时数据,他们也减少内存的需求,从而减少缓冲区的数目错误导致I / O。面向列的很适合压缩计划压缩值超过一次一行。压缩还计划提高CPU性能通过允许数据库运营商经营直接在压缩数据。各种压缩编解码器可以使用HBase,包括LZO、时髦和GZIP。在HBase压缩编解码器工作最好可以决定多少数据就足以实现一个高效的压缩比。HFiles可以压缩和存储在HDFS。这有助于通过保存在磁盘I / O,而是为压缩和解压缩支付更高的CPU利用率而写作/阅读数据。LZO而上口有较好的压缩比和编码/解码速度。 |
引用 |
|