文档介绍:大数据分析与列数据库
近年来随着数据量的激增,对于数据分析的需求也日益迫切,传统的RDBMS已经远远不能满足企业 对大数据分析的需求,虽然很多厂商都声称自己具有列数据库的特性,但是绝大多数都不具备处理真正大 数据的能力,在今年8月份,Go即可得到,这比普通的hashmap计数器的计算方式会快上几个数量级. Bit-Vector Encoding 一般并不要求数据本身排序,但是近来有研究表明不管是对数据表的列顺序还是列 顺序一定情况下行数据的重新排序都会使 Bit-Vector Encoding使用更少的磁盘和内存空间[6][7]. Google ,并且内存比不 排序的情况下消耗更少.
Trie Encoding
Trie数据结构一般也叫pr efix tr ees, 一般用在数据类型为st ring并且排序之后有明显倾斜的数据分布的 列,比如URL ,家庭住址,这些字段的前缀经过排序之后在局部区域往往都有很高的压缩比,在最近的 Hbase里面也使用了这种方式压缩rowKey的部分,Google PowerDrill也同时使用TrieEncoding压 缩由”字典表”和”字典表所在位置”所组成的文件格式及其对应的内存数据结构.
其他编码方式和压缩
编码和解码不同于压缩,编码和解码一般针对特殊数据和特殊的类型,一般消耗的CPU也远远小于压缩所 消耗的CPU,更多时候需要对数据重新排序才能取得更好的压缩比,这种排序既包括列的选择性高低也包 r Dr ill常使用的Run length Encoding , Bit-vector encoding ,Trie Encoding 之外,常见的编码还包括:
l针对字符或文本的”Dictionary Encoding":比如email地址,,主 要为了节省储存空间和少量内存空间,对查询处理时间有所提升.
l针对固定间隔类型数据的”Delta Encoding":比如日期,时间,时间戳和等间距长的数据类型,一般不 需要排序,针对特殊应用,比如定时输出数据的监控系统(主机负载,网络流量等),这种编码无论磁盘还 是内存的压缩率都极高,并且对应查询处理时间也有明显提升.
l有时候为了编码会将两个或多个字段进行组合,使用Trie Encoding或者”变长间隔编码”进行处理,这些 编码只在非常特殊的数据类型或者数据倾斜下使用,有时候只减少磁盘空间而对查询时间没有提升,甚至 使用不当会增加CPU解码的负担而提升效果较小.
Run length Encoding和Bit-Vector Encoding 一般对某些列压缩会减少储存3-4个数量级,对内存提 升也有2-3个数量级,Dictionary Encoding和Trie Encoding一般对磁盘空间减少大概20倍,对内存空 间大概减少5倍,根据Google PowerDrill的实验,在常见的聚合查询中这些特殊的编码方式会对查询速 度一般有2-3个数量级不等的提升.
上面描述的只是最简单的情况,实际生产环境中要比这复杂的多,run length encoding , Bit-Vecto