行式数据库与列式数据库

一 基本概念

在关系数据库领域,除传统的ORACLE、SQLSERVER、MYSQL等行式数据库外,目前在数据仓库领域列式数据库越来越受到关注。目前商用的列式数据库主要是Sybase IQ。

一般,行式数据库主要适合于在线交易性的OLTP应用,而列式数据库主要适合于海量静态数据的分析,一般应用于OLAP。但只是依靠OLTP还是OLAP来区分是采用行式数据库还是列式数据库,在很多时候还不是很明确,特别很多时候有些应用很难说是OLTP还是OLAP,例如对海量数据的查询。

根据笔者最近的对ORACLE和SYBASE IQ的初步研究与测试,笔者认为关键点是行式数据库适合“少数行多数列”的应用,而列式数据库适合于“少数列多数行的应用”。行的多少可理解为sql 查询语句中符合where 之后的过滤条件的行数占总行数的比例,列的多少可理解为select 之后涉及到的行数。

对于普通的 “select f1 ,f2, f3,f4 where xxxx “查询,sybase IQ的查询速度会很快,但是关键问题是如果select 的列很多,则在取数据时会非常慢,而对oracle数据库不管是取一列还是取所有列其时间开销基本不变。

二 对比

1 行式更适合OLTP, 查询一个记录的所有列。

列式更适合OLAP,非常适合于在数据仓库领域发挥作用,比如数据分析、海量存储和商业智能;涉及不经常更新的数据。由于设计上的不同,列式数据库在并行查询处理和压缩上更有优势。而且数据是以列为单元存储,完全不用考虑数据建模或者说建模更简单了。要查询计算哪些列上的数据,直接读取列就行。

2 列式在存储方面占有很大的优势,能有效提高数据压缩比,节省存储空间。

关注作者公众号,获取更多资源!
赏作者一杯咖啡~