秒懂列式数据库和行式数据库
时间:2022-03-01 15:37 作者:羲和时代 浏览次数:次
行式数据库(Row-Based)数据按行存储,常见的行式数据库有Mysql,DB2,Oracle,Sql-server等;列数据库(Column-Based)数据存储方式按列存储,常见的列数据库有Hbase,Hive,Clickhouse,Sybase 等。行存储是将整行放入连续的物理位置,就像传统的记录存储或文件存储方式,列存储是按列将连续的某几列数据放入连续的物理存储单元中,两种存储方法如下图所示。

行存储的特点
查询年满20岁人员姓名住址(表名为person)select name,addr from person where age>20
列式存储读取3列
行式存储读取所有列
应用场景
行存储数据库适用在OLTP(on-line transaction processing)场景即联机事务处理,而列数据库适合适用在大数据分析OLAP(on-line Analytical processing)联机分析处理,当然不管是列数据库还是行数据库起功能或能力都不是万能的,只是给DBA多提供了一个可选方案,具体项目执行需要架构师根据项目实际情况选择最合适的方案。
- 数据是按行存储的
- 没有索引的查询会消耗大量的IO资源
- 建立索引和视图需要耗费大量的时间和系统资源
- 面对高并发的查询,数据库必须被大量膨胀才能满足性能需求
- 数据按列存储—每一列单独存放
- 数据即是索引,无须另建索引
- 只访问查询所涉及到的列(与行数据库不同)--节省IO开支
- 可以高效压缩
- 查询的并发处理性能高
姓名(name) | 年龄(age) | 住址(addr) | 生日(bt) | 证件号(num) | 录入时间(intime) |
张三 | 22 | 北京海淀 | 20000101 | xxx | 20220201 |
李四 | 21 | 北京海淀 | 20011112 | xxx | 20220201 |
王五 | 19 | 20031112 | xxx | 20220201 |
列式存储读取3列
姓名(name) | 年龄(age) | 住址(addr) | 生日(bt) | 证件号(num) | 录入时间(intime) |
张三 | 22 | 北京海淀 | 20000101 | xxx | 20220201 |
李四 | 21 | 北京海淀 | 20011112 | xxx | 20220201 |
王五 | 19 | 北京海淀 | 20031112 | xxx | 20220201 |
姓名(name) | 年龄(age) | 住址(addr) | 生日(bt) | 证件号(num) | 录入时间(intime) | |
张三 | 22 | 北京海淀 | 20000101 | xxx | 20220201 | |
李四 | 21 | 北京海淀 | 20011112 | xxx | 20220201 | |
王五 | 19 |
|
20031112 | xxx | 20220201 |
行存储数据库适用在OLTP(on-line transaction processing)场景即联机事务处理,而列数据库适合适用在大数据分析OLAP(on-line Analytical processing)联机分析处理,当然不管是列数据库还是行数据库起功能或能力都不是万能的,只是给DBA多提供了一个可选方案,具体项目执行需要架构师根据项目实际情况选择最合适的方案。
- 上一篇:分布式海量日志存储分析解决方案
- 下一篇:没有了