数据库列存储:设计最佳压缩算法的捷径

数据库 SQL Server 算法
本文将为大家介绍的是数据库列存储,主要优势在于对于设计压缩、解压算法能有更大的优化。希望大家能多了解这项不算新的技术。

数据库存储的方式能决定数据库运行的效率问题,51CTO数据库频道向您推荐《数据库性能优化与调试》专题。

其实列存储并不是什么新概念,早在1985年SIGMOD会议上就有文章” A decomposition storage model”对DSM(decomposition storage model)做了比较详细的介绍,而Sybase更在2004年左右就推出了列存储的Sybase IQ数据库系统(见200年VLDB文章” Sybase iq multiplex - designed for analytics”),主要用于在线分析、数据挖掘等查询密集型应用。

列存储,缩写为DSM,相对于NSM(N-ary storage model),其主要区别在于,DSM将所有记录中相同字段的数据聚合存储,而NSM将每条记录的所有字段的数据聚合存储,如下图所示:

列存储的实现

列存储有什么优点?

就我目前比较肤浅的理解,列存储的主要优点有两个:

1) 每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量,据C-Store, MonetDB的作者调查和分析,查询密集型应用的特点之一就是查询一般只关心少数几个字段,而相对应的,NSM中每次必须读取整条记录;

2) 既然是一个字段的数据聚集存储,那就更容易为这种聚集存储设计更好的压缩/解压算法。

列存储适合用在什么场合?

OLAP,数据仓库,数据挖掘等查询密集型应用。当然,列存储数据库并不是说完全不能进行更新操作,其实它们的更新操作性能并不是很差,一般也够用,但是一方面不如自己的查询性能,另外一方面也不如Oracle这种专门搞OLTP的数据库,所以一般就不提这个。

列存储不适合用在什么场合?

相对来说,不适合用在OLTP,或者更新操作,尤其是插入、删除操作频繁的场合。

为啥上世纪80年代就出现的概念现在又重新炒起来了呢?

2005年VLDB有篇文章(“One Size Fits All - An Idea Whose Time Has Come and Gone”),就是那个老牛M. Stonebraker写的,明确指出,时代变了,指望一个数据库产品就统一天下的日子已经一去不复还了。于是,这个老牛在2005年左右做了C-Store,一个列存储的数据库原型系统,在VLDB, SIGMOD等***国际会议上灌了几桶水后,拉了一伙人出去开了个公司叫Vertica,将其商业化,专注于数据仓库、在线分析等市场,最近貌似还挺红火的;顺便说一下,为了贯彻上面的思想,这个老牛在同一时期又做了H-Store,一个主内存数据库原型系统,没怎么灌水就又招呼了一帮人开了个公司叫VoltDB,将其商业化,专注于联机事务处理,但是近况貌似不怎么样,可能是跟Oracle老大大直接冲突了吧。

联想到M. Stonebraker在上世纪70年代带头开展关系数据库管理系统的实现工作,做出来了Ingres,其中灌水无数,从这个原型系统基础上产生了很多商业数据库软件,包括 Sybase、Microsoft SQL Server、NonStop SQL、Informix 等,而所谓的***进的开源数据库系统PostgreSQL也是Ingres的一个后继分支。

原文标题:说说列存储技术

链接:http://www.cnblogs.com/happyy/archive/2010/04/26/1721481.html

【编辑推荐】

  1. Oracle存储过程的编写经验总结
  2. 存储结构之Oracle逻辑存储结构
  3. 新一代数据存储架构面面观
  4. SQL Server存储过程命名标准
  5. 使用脚本加速DB2存储过程的开发
责任编辑:彭凡 来源: 博客园
相关推荐

2012-02-07 09:17:13

2010-08-18 16:53:35

连接DB2数据库

2011-03-28 09:27:52

数据库压缩日志

2011-06-03 10:50:27

Java

2011-06-20 06:22:18

ibmdwDB2

2017-06-12 18:24:25

数据库压缩技术

2021-09-09 09:28:08

面向列数据库面向行

2011-06-30 16:57:03

数据压缩

2010-08-26 09:01:27

Infobright

2010-08-26 09:13:02

Infobright

2011-08-09 14:23:05

网站设计数据库集群库表散列

2020-06-15 08:51:58

数据库存储系统

2010-09-07 16:12:36

SQL语句数据库压缩

2011-04-01 12:58:46

ASPACCESS数据库

2011-10-28 09:53:50

数据库安全数据安全

2018-12-26 15:00:56

数据库行式存储列式存储

2010-11-30 11:26:49

2010-08-26 16:16:11

Infobright

2011-03-10 11:12:59

数据库

2017-09-26 13:35:40

Mysql数据库设计树状数据
点赞
收藏

51CTO技术栈公众号