《《列存储概述》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《列存储概述》PPT课件.ppt(14页珍藏版)》请在三一办公上搜索。
1、列式存储简介,列存储技术的背景,列存储和行存储的比较选择,列存储原理,列存储存在的问题,80年代初期兴起的科学与统计分析数据库,针对的是数据量很大,元组包含的字段多,但是查询处理只涉及少数字段的应用,没有必要一次取出一整行的数据。但是在那个年代事务型应用(即操作型处理)的需求远高于分析型应用的需求,使得行存储数据库系统长期控制着数据库市场。90年代初提出并兴起的三项决策支持新技术,即数据众库(DW)、联机分析处理(OLAP)和数据挖掘(DM)使列存储技术引起人们的关注。这三项技术的结合创立了决策支持研究的新方向,也使信息系统的研究从以操作密集型的OLTP为中心转变为以OLAP和数据挖掘等数据密
2、集型应用为中心。在数据密集型应用中,主要的工作是进行复杂的查询,这类查询通常只用到表中少数几个列,但是涉及的数据量非常大。列存储对这种查询的性能具有显著的优势。,1、列存储的背景,主流的数据库管理系统如Oracle、DB2、SQLServer、Sybase都提供了对数据仓库的支持,这些系统最初都是基于行存储设计的。数据库按行存储它们管理的数据,在查询处理过程中,每次读入内存的是若干完整的行数据。这种方式适合于写优先的联机事务处理,因为事务处理通常对整行数据进行读写操作。对大数据集的分析查询,通常只用到一个逻辑表的少数几个列,如果按行的方式存储数据,查询处理时会读取整行数据,随之带来大量无关数据
3、,浪费I/O带宽,I/O效率低,进而影响了查询处理速度。在列存储系统中,用户观点的逻辑表的数据按列的方式进行存储,每一列的数据连续存储在磁盘上。对按列存储的数据进行查询处理时,只读取与査询相关的列数据,可以避免对无关列数据的读取。,2、列存储原理,列存储是关系数据的另一种物理存储方式,不同于行存储,其基本原则是将逻辑表进行垂直划分,然后逐列存储数据,使得查询处理时能只读取与查询相关的列,避免读取无关列,提高数据I/O效率,从而提高查询处理的速度。数据库以行、列的二维表的形式存储数据,以一维字符串方式在存储器(硬盘)上存储,例如以下的一个表:,这个简单的表包括员工代码(EmpId),姓名字段(L
4、astname and Firstname)及工资(Salary).这个表存储在电脑的内存(RAM)和存储器(硬盘)中。虽然内存和硬盘在机制上不同,但是操作系统是以同样的方式存储的。数据库必须把这个二维表存储在一系列一维的“字节”中,由操作系统写到内存或硬盘中。行式数据库把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推。,列式数据库把一列中的数据值串在一起存储起来,然后再存储下一列的数据,以此类推。写入时,一行记录被拆分为多列,每一列数据追加到对应列的末尾处。,现在考虑这样一个例子,假设在一张客户信息表中我们要得到所有生日在七月份的客户的名字和电子邮件地址。在一个典型的OLT
5、P数据库引擎中,查询优化器将根据返回行的百分比(比如在本例中,假设各月的生日都基本平均,则返回行数的百分比为1/12)来决定是否值得在该列上使用索引。因此,典型的数据库引擎对该查询可能会做全表的扫描。为了对扫描的成本做一估算,我们假设每个客户的行记录为3200个字节,共有1000万个条记录。因此,表扫描必须从硬盘中读取320亿个字节的数据。列存储方式可以只读取查询所需的列。在本例中,有三个相关的列:客户全名、电子邮件地址和出生日期。假设全名为25个字节,电子邮件地址为25个字节,出生日期为4个字节(日期以二进制做内部编码)。那么只需要读取5.4亿个字节的数据大约减少了59倍!,此外,传统的数据
6、库引擎不能以一种通用的方式进行数据压缩,主要是由于存在以下三个问题:1.按行存储的数据存储方式不利于压缩。这是因为数据(大多为二进制数据)在以这种方式存储时重复并不多。我们发现,按行存储的数据,最多能有5-10%的压缩比例。2.对于许多的2K 和4K 的二进制数据的页来说,为压缩和解压缩而增加的开销太大。3.在OLTP 环境中,大量读取和更新混杂在一起。每一次更新要进行压缩操作,而读取只需解压缩操作,大多数的数据压缩算法在压缩时比解压缩时慢4 倍。这一开销将明显降低OLTP数据库引擎的事务处理效率而使得数据压缩的代价昂贵到几乎不能忍受。,在数据仓库应用中,数据压缩可以用小得多的代价换取更大好处
7、。其中包括减少对于存储量的要求;增大数据吞吐量,这相当于减少查询响应时间。由于列式存储数据按列存储,相邻的字段值具有相同的数据类型,其二进制值的范围通常也要小得多,所以压缩更容易,压缩比更高。如Sybase公司的列式数据库产品Sybase IQ 对列存储的数据通常能得到大于50%的压缩。更大的压缩比例使得列式数据库在获得优良的查询性能的同时,减少了对存储空间的需求。,3、列存储面临的问题,由于每个属性存储为独立的数据列,查询中所涉及到的多个属性列之间要进行较多的连接操作,当选择操作的选择率较低时,大量中间结果的属性列之间的连接操作极大地影响了系统的性能。在同一个企业应用中面向 OLTP 和 O
8、LAP 应用同时部署行存储和列存储两种数据库系统无疑增大了部署和维护开销,对于绝大部分企业都是无法承受的。.,4、列存储 or 行存储,因为硬盘寻址时间相较于计算机上其他部件的运行速度来说不是一般的慢,所以常用相同工作负载下的硬盘访问性能来较行数据库和列数据库。通常,顺序读取数据要比随机访问更快而且,硬盘寻址时间的提升比起CPU速度的进步要慢得多。在使用硬盘作为存储媒介的系统上这种情况很可能还会持续一段时间。下面简单罗列了一些选择行数据库还是列数据库的权衡依据。当然,如果能够把数据全放在内存中,那么使用内存数据库性能会更好。不能笼统地说列存储优于行存储,只是两者适用的场合不同而已。,1、在只需
9、要根据某几列来聚合数据的时候按列的数据组织方式更有 效。因为这样只需要读取一部分数据,要比读取全部数据更快.2、当只需要修改某一列值的时候按列的数据组织方式更有效。因为 可以直接找到某列数据并修改,而与行中的其他列无关。3、当需要某行的多列数据的时候按行的数据组织方式更有效。当行 中数据不是太多的情况下一次硬盘寻址就可以获得该行的所有数据。4、在新增行数据的时候,如果各列都有值,那么按行的数据组织方式 会更有效,因为只需要一次硬盘寻址就可以写入整行的全部数据.在实际应用中,面向行的数据存储架构更适用于OLTP-频繁交互事务的场景。面向列的数据存储架构更适用于OLAP-(如数据仓库)这样在海量数据(可能达到TB规模)中进行有限复杂查询的场景。,列存储与行存储的选择,采用列式存储的数据库代表包括:Sybase IQ,ParAccel,Vertica和HBase。其中Sybase IQ是Sybase公司推出的特别为数据仓库设计的关系型数据库。IQ通过列存储、革命性的位图索引方法以及智能的动态访问技术实现了快速的查询响应速度,比传统的数据库查询速度提高若干倍。,Thanks!,