一分钟搞懂列式与行式数据库

企业动态
本文对行式数据库与列式数据库进行比较,并且讲解如何根据业务场景需要选择对应的数据库系统。

[[186768]]

定义

列式存储(Column-based)是相对于传统关系型数据库的行式存储(Row-based)来说的。简单来说两者的区别就是如何组织表。

将表放入存储系统中有两种方法,而我们绝大部分是采用行存储的。行存储法是将各行放入连续的物理位置,这很像传统的记录和文件系统。列存储法是将数据按照列存储到数据库中,与行存储类似,下图是两种存储方法的图形化解释。

两种存储方法的图形化解释

应用行式存储的数据库系统称为行式数据库,同理应用列式存储的数据库系统称为列式数据库。随着列式数据库的发展,传统的行式数据库加入了列式存储的支持,形成具有两种存储方式的数据库系统。

传统的关系型数据库,如Oracle、DB2、MySQL、SQL SERVER等采用行式存储法,当然传统的关系型数据库也在不断发展中。随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持:传统的以行形式保存的数据满足OLTP应用;列形式保存的数据满足以查询为主的OLAP应用。

新兴的Hbase、HP Vertica、EMC Greenplum等分布式数据库采用列式存储,当然这些数据库也有对行式存储的支持比如HP Vertica。

随着传统关系型数据库与新兴的分布式数据库不断的发展,列式存储与行式存储会不断融合,数据库系统会呈现双模式数据存放方式,这也是商业竞争的需要。

区别

列式与行式数据库的区别

为啥列存储可以大幅降低系统的I/O呢?

列式存储的主要优点之一就是可以大幅降低系统的I/O,尤其是在海量数据查询时,I/O向来是系统的主要瓶颈之一。通过下面这张图,相信大家能够彻底明白这一点。

列式存储的主要优点之一就是可以大幅降低系统的I/O

应用场景

在比较了行式数据库与列式数据库之后,我们更关心的是如何根据业务场景需要选择对应的数据库系统。

行式更适合OLTP,比如传统的基于增删改查操作的应用。列式更适合OLAP,非常适合于在数据仓库领域发挥作用,比如数据分析、海量存储和商业智能;涉及不经常更新的数据。

由于设计上的不同,列式数据库在并行查询处理和压缩上更有优势。而且数据是以列为单元存储,完全不用考虑数据建模或者说建模更简单了。要查询计算哪些列上的数据,直接读取列就行。

***我们需要务实的指出,没有***的数据库,列式数据库也并非***,只不过给DBA提供了更多的选择,DBA需根据自己的应用场景自行选择。

【本文为51CTO专栏作者“朱国立”的原创稿件,转载请通过作者微信公众号“开发者圆桌”获取联系和授权】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2017-03-30 19:28:26

HBase分布式数据

2016-12-21 15:08:14

数据库垂直拆分

2016-12-16 11:05:00

分布式互斥线程

2017-02-21 13:00:27

LoadAverage负载Load

2018-07-31 16:10:51

Redo Undo数据库数据

2018-12-12 22:51:24

Java包装语言

2020-07-09 07:37:06

数据库Redis工具

2020-07-17 07:44:25

云计算边缘计算IT

2016-09-12 17:28:45

云存储应用软件存储设备

2018-06-28 14:00:01

分布式集群架构

2018-06-26 05:23:19

线程安全函数代码

2017-07-06 08:12:02

索引查询SQL

2022-07-18 06:16:07

单点登录系统

2020-05-21 19:46:19

区块链数字货币比特币

2017-12-26 16:24:36

接口代码数据

2018-03-27 09:28:33

缓存策略系统

2015-11-12 10:32:40

GitHub控制系统分布式

2021-08-06 08:50:45

加密货币比特币区块链

2011-02-21 17:48:35

vsFTPd

2018-07-31 15:05:51

Java公平锁线程
点赞
收藏

51CTO技术栈公众号