列式数据库

概述

   列式数据库 是以列相关 存储 架构进行数据存储的 数据库 ,主要适合与批量 数据处理 即席查询 。相对应的是行式数据库,数据以行相关的 存储 体系架构进行空间分配,主要适合与小批量的 数据处理 ,常用于联机 事务 型数据处理。

描述

   数据库 以行、列的二维表的形式存储数据,但是却以一维字符串的方式存储,例如以下的一个表:
  
EmpId Lastname Firstname Salary
1 Smith Joe 40000
2 Jones Mary 50000
3 Johnson Cathy 44000
 这个简单的表包括员工代码(EmpId), 姓名字段(Lastname and Firstname)及工资(Salary).
  这个表存储在电脑的内存(RAM)和存储(硬盘)中。虽然内存和硬盘在机制上不同,电脑的操作系统是以同样的方式存储的。 数据库 必须把这个二维表存储在一系列一维的“ 字节 ”中,由操作系统写到内存或硬盘中。
  行式 数据库 把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推。
  1,Smith,Joe,40000;2,Jones,Mary,50000;3,Johnson,Cathy,44000; 列式 数据库 把一列中的数据值串在一起存储起来,然后再存储下一列的数据,以此类推。
  1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000; 这是一个简化的说法。
  列式 数据库 的代表包括: Sybase IQ ,infobright、infiniDB、GBase 8a,ParAccel, Sand/DNA Analytics和 Vertica。

举例

  下面以GBase 8a分析型数据库为例,描述列存储对数据存储与管理的作用。
   [1]
  面对海量数据分析的 I/O 瓶颈,GBase 8a 把表数据按列的方式存储,其优势体现在以下几个方面。
   不读取无效数据 :降低 I/O 开销,同时提高每次 I/O 的效率,从而大大提高查询性能。查询语句只从磁盘上读取所需要的列,其他列的数据是不需要读取的。例如,有两张表,每张表100GB 且有100 列,大多数查询只关注几个列,采用列存储,不需要像行存数据库一样,将整行数据取出,只取出需要的列。磁盘 I/0 是行存储的 1/10或更少,查询响应时间提高 10 倍以上。
   高压缩比 :压缩比可以达到 5 ~ 20 倍以上,数据占有空间降低到传统数据库的1/10 ,节省了存储设备的开销。
  当数据库的大小与数据库服务器内存大小之比达到或超过 2:1 (典型的大型系统配置值)时,列存的 I/O 优势 就显得更加明显;
  GBase 8a 分析型数据库的独特列存储格式,对每列数据再细分为“数据包”。这样可以达到很高的可扩展性:无论一个表有多大,数据库只操作相关的数据包,性能不会随着数据量的增加而下降。通过以数据包为单位进行 I/O 操作提升数据吞吐量,从而进一步提高I/O效率。
  由于采用列存储技术,还可以实现高效的透明压缩。
  由于数据按列包存储,每个数据包内都是同构数据,内容相关性很高,这使得GBase 8a 更易于实现压缩,压缩比 通常能够达到 1:10 甚至更优。这使得能够同时在磁盘 I/O 和 Cache I/O 上都提升数据库的性能,使 GBase 8a 在某些场景下的运算性能比传统数据库快 100 倍以上。
  GBase 8a 允许用户根据需要设置配置文件,选择是否进行压缩。在启用压缩的情况下GBase 8a 根据数据的不同特性以及不同的分布状况,自动采用相应的压缩算法,如:
  行程编码(适用于大量连续重复的数据,特别是排序数据);
  基于数据的差值编码(适用于重复率低,但彼此差值较小的数据列);
  基于位置的差值编码(适用于重复率高,但分布比较随机的数据列)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值