分布式数据库发展史
Old days (20th century)
此时的数据库是传统数据库。 传统数据库的特点:
- 通过 SQL 语言与数据库软件进行交互
- 都是单机的存储,需要用户备份数据,防止磁盘损坏
- OLTP 小事务小查询,数据量不大
产品:PostgreSQL、MySQL、SQL Server
Internet decades (2000s)
中间件
业务量数据量变大了,单机数据库扛不住了。就引入的数据库中间件。用来做分库分表。
产品:ShardingSphere、Vitess
数据仓库
也是数据量变大了,出现了大量数据存储和分析处理的数据仓库。
产品:Hadoop
数据仓库兴起时新出现的 OLAP 数据库
特点:
- 通过 SQL 语言和其交互
- 多机存储,分布式
- 按列存储
- OLAP
NoSQL
特点:
- 使用 key-value API
- 没有关系,没有模型,没有事务
- 高可用
- 扩展性
- 多机存储,分布式
产品:mongoDB,cassandra
NewSQL(2010s)
特点:
- 通过 SQL 语言和其交互
- 扩展性
- 多机存储,分布式
- 支持 ACID
产品:Cloud Spanner
HTAP(2010s)
特点:
- 支持 OLTP 请求
- 支持 OLAP 请求
TiDB
特点:
- 通过 SQL 语言和其交互
- 支持 OLTP 和 OLAP
- 多机存储,分布式
- 高可用
- 扩展性
HTAP 数据库简介
什么是 HTAP
简单来说,就是混合 OLTP 和 OLAP。
OLTP(On-Line Transaction Processing) 联机事务处理过程。
特点:
- 行储存,实时更新
- 高并发,数据一致性,每次访问只触及到小部分行
- 存储当前数据
OLAP(On-Line Analytical Processing) 联机分析处理。
特点:
- 列存储,批量更新数据
- 低并发,每次查询触及和处理大批量数据
- 历史数据
为何需要 HTAP
TP 和 AP 的界限模糊。
像 TP 的 AP:综合性查询平台,需要支持报表查询和高并发短查询。 像 AP 的 TP:对在线数据支持实时的分析;实时分析不同业务线汇聚的数据。
HTAP 架构简单,运维成本低,支持实时查询和实时分析。
技术实现上的难点
可扩展性
AP 支持容易,TP 难度大。
TP/AP 同时存储
需要支持两种存储格式 避免一中工作量增多对另一种干扰(毕竟是跑在一起用的都是同样的计算资源)
两种工作需要整合
数据实时同步 数据保存新鲜
TiDB 的 HTAP 特性
- 可扩展
- 经历过交易场景的验证
- 具备分析引擎的能力
TiDB 4.0 新增
- 实时更新列存储引擎
- 行存和列存用不同的机器,没有干扰;行存(TiKV)到列存(TiFlash)能做到一致性的复制
- 列存有向量化的引擎
- 优化器可以智能决定使用行存和列存