简介
这里从结构上划分可以分为关系性数据库和非关系型数据
关系型:mysql,pg(postgreSql),vetica,ClickHouse
非关系型:Redis,MongoDb,Hbase
这里主要介绍关系型数据库
处理类型区分
按照处理类型区分有OLTP和OLAP两者类型
OLAP(On-Line Analytical Processing)在线分析处理,专注于分析处理,从对数据库操作来看,OLAP是对数据的查询;
OLTP(on-line transaction processing)在线事务处理,专注于事务处理,从对数据库操作来看,OLTP主要是对数据的增删改。
HTAP(Hybrid Transactional and Analytical Processing)混合处理,对于事务处理和分析处理都有很好的支持
对比图
特性 | OLTP | OLAP | HTAP |
---|---|---|---|
存储结构 | 行式存储(Row-based Storage) | 列式存储(Column-based Storage) | 结合行式和列式存储(既支持高效事务处理,也支持高效查询) |
操作类型 | 高并发读写、小事务、快速插入/更新 | 大数据查询、复杂的分析和聚合 | 既能处理高并发事务操作,也能支持大数据查询和分析 |
数据一致性 | 强ACID事务保证数据一致性 | 不强调事务一致性,多为只读数据 | 同时支持强一致性(事务处理)和最终一致性(分析处理) |
查询复杂性 | 简单的查询,通常针对单行数据 | 复杂查询、聚合和分析 | 支持复杂查询与聚合分析,但也保证事务的高效性 |
工作负载 | 高频读写事务处理 | 高频查询、低频写操作 | 高频查询和低频写操作,适合同时需要OLTP和OLAP的场景 |
典型应用 | 交易系统、订单管理、库存管理等 | 数据仓库、商业智能、数据分析 | 适用于需要同时处理实时事务和大数据分析的场景 |
例子 | MySQL、PostgreSQL、SQL Server | Vertica、ClickHouse、BigQuery、Doris | TiDB、HTAP系统(如 Azure Synapse、Google BigQuery) |
注意这里说的OLAP/OLTP指的的大致类型的划分,例如MYSQL是OLTP类型的是指更偏向于OLTP事务的处理,当然也支持OLAP这种数据分析,只不过对比于Vertica这种列式存储的OLAP类型数据处理能力较弱。
OLAP
例如我们熟悉的Mysql和postgreSql数据库 都是典型的OLAP型数据库,都是基于行式存储,典型的订单之类的管理都需要这种数据库,因为需要支持高并发的修改,保持一致性
存储方式
将单条记录(一行数据)的所有字段连续存储在磁盘上。
例如:用户表的 (id, name, age, email) 四个字段的值会被一起存储。
OLTP
例如vertica,clickHouse数据库,属于列式存储,大数据场景具有高效查询,例如查询age的范围,就不需要像行式存储一样,全表查询,而是值分析age这一列
存储方式
将同一列的所有数据连续存储在磁盘上。
例如:用户表的 age 列的所有值会被存储在一起,独立于 name 列。
HTAP
这里的HTAP指的就是混合型数据库例如TiDB,对于事务处理,查询分析处理都有优秀的处理
存储方法
两种结合,创建一个副本来存储列式表结构