秒懂列式数据库和行式数据库
来源:未知 时间:2022-53-29 浏览次数:280次
行式数据库(Row-Based)数据按行存储,常见的行式数据库有Mysql,DB2,Oracle,Sql-server等;列数据库(Column-Based)数据存储方式按列存储,常见的列数据库有Hbase,Hive,Clickhouse,Sybase 等。
行存储是将整行放入连续的物理位置,就像传统的记录存储或文件存储方式,列存储是按列将连续的某几列数据放入连续的物理存储单元中,两种存储方法如下图所示。
行存储的特点
-
数据是按行存储的
-
没有索引的查询会消耗大量的IO资源
-
建立索引和视图需要耗费大量的时间和系统资源
-
面对高并发的查询,数据库必须被大量膨胀才能满足性能需求
列存储特点
-
数据按列存储—每一列单独存放
-
数据即是索引,无须另建索引
-
只访问查询所涉及到的列(与行数据库不同)--节省IO开支
-
可以高效压缩
-
查询的并发处理性能高
实操看列式数据库性能优点
姓名(name) |
年龄(age) |
住址(addr) |
生日(bt) |
证件号(num) |
录入时间(intime) |
张三 |
22 |
北京海淀 |
20000101 |
xxx |
20220201 |
李四 |
21 |
北京海淀 |
20011112 |
xxx |
20220201 |
王五 |
19 |
|
20031112 |
xxx |
20220201 |
查询年满20岁人员姓名住址(表名为person)select name,addr from person where age>20
列式存储读取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多提供了一个可选方案,具体项目执行需要架构师根据项目实际情况选择最合适的方案。