列式数据库压缩方法探讨.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
列式数据库压缩方法探讨

——压缩算法探讨 简介 背景 优势 现状 数据压缩简介 列数据库压缩算法 列存储数据库是相对于传统的以记录或数据行(Record,Row)为单位进行数据处理的数据库(例如SQL Server)来说的,它以数据表中的列(Column)为单位对数据进行存储和查询等处理。 传统的关系型数据库,即数据按记录存储, 每一条记录的所有属性都存储在一起, 如果要查询一条记录的一个属性值, 需要先读取整条记录的数据。而列数据库是按数据库记录的列来组织和存储数据的, 数据库中每个表由一组据库记录的列来组织和存储数据的, 数据库中每个表由一组页链的集合组成,每条页链对应表中的一个存储列, 而该页链中每一页存储的是该列的一个或多个值。 现今的关系数据库系统大多衍生于70年代的SystemR项目原型和Ingres项目原型,但是随着应用和硬件技术的发展,DBMS的需求不仅仅满足于SystemR和higres设计面向OLTP数据处理的初衷,而更多的是地球科学、医学等数据仓库以及决策支持系统等的OLAP的数据处理需求,而在这些应用中,大多数信息都是散乱的、稀疏的,并且需要对数据进行大量的查询处理,以便对其进行数据有效的分析处理;同时由于硬件技术的发展,传统的高性能硬件逐渐大众化,使得数据仓库等应用得更加普遍。因此为了满足该类应用场景的需求,数据库系统发展的方向由满足OLTP数据处理的需求转向满足OLAP数据处理的需求,OLAP是对列进行操作的,于是便衍生出面向分析处理(OLAP)的列存储数据库系统。 能够迅速的执行复杂查询 压缩技术为数据仓库、商务智能应用中巨大的数据量节约存储成本 节省大量I/O带宽 比较著名的列数据库系统有开源项目C-Store,是由麻省理工、耶鲁大学、布朗大学等合作研发的,并于2005年发布第一版本,2006年升级为第二版本。在C-Store的研究基础上,又衍生出来商业化的Vertica以及内存数据库系统MonetDB。 Google的BigTable也是一种面向列存储的数据库系统,该系统是Google内部开发用来处理大数据量的系统,Googfe的很多项目包括网索引、 GoogleEarth和谷歌财务都是建立在该系统基础上的。 SQL SERVER2011 也支持列存储索引 FACEBOOK的数据仓库RCFile:一个结合了行存储和列存储的数据管理系统 定义:在不丢失信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率的一种技术方法。 流行算法: 随着数据库的规模越来越大,如何在数据库中使用数据压缩是很多研究者关注的热点。然而,传统的行存储数据库由于存储的数据的差异性较大,对其采用压缩也往往每次查询时不得不进行解压。不过压缩后数据量小的优点在某种程度上还是胜过解压的额外开销的。列存储的概念提出以后,由于列存储的特点,它非常适合轻量级压缩,从而可以不解压而直接访问压缩态的数据。 公司组织 数据仓库大小(TB) 原始数据大小(TB) 数据行数 数据库 操作系统 数据库厂商 存储厂商 YAHOO 100.386 17.014 3853 ORACLE UNIX ORALCE EMC NielsenMedia Research 17.685 17.969 5024 SYSBASE IQ UNIX SYSBASE EMC 在 SIGMOD06 会议上, Daniel J. Abadi通过在开源的列数据库 C-Store 上进行实验比较和理论分析指出, 主要的压缩方法有以下三类: 游程编码算法( Run-length Encoding ) 词典编码算法( Dictionary Encoding) 位向量算法( Bit-Vector Encoding) 。 游程编码算法是比较适合列数据库的压缩算法之一,即用一个三元组记录数据值、 数据出现的起始位置和持续长度( 即行程) ,以代替具有相同值的若干连续原始数据,使三元组的存储长度少于原始数据的长度。 三元组描述为( X, Y, Z) 其中X:数据的值, Y: 起始位置, Z:长度。 词典编码就是生成一个 原始值替代值 的对照词典。为了起到压缩的作用, 替代值的长度小于原始值的长度。存储的时候,只存储替代值而不是原始值, 从而压缩了存储空间。 字典表 Q1 00 Q2 01 订单类型 Q1 Q1 Q1 Q1 Q1 Q2 Q2 订单类型 00 00 00 00 00 01 01 位向量编码是为每一个不同的取值生成一个位向量, 根据位向量( 串)中不同的位置取值 0 或 1来对应并确定不同的原始值。 订单类型 Q1 Q1 Q1 Q1 Q1 Q2 Q2 Q1位向量 Q2位向量 1 0 1 0 1 0 1 0 1 0 0 1 0 1 L

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档