目录
一 章节目标
二 TiDB 体系结构
1 TiDB Server
2.1 TiKV
2.2 TiFlash
3 PD
参考
一 章节目标
- 理解TiDB数据库整体架构
- 了解TiDB Server TiKV tiFlash 和 PD的主要功能
二 TiDB 体系结构
了解这些体系结构是如何实现TiDB的核心功能的
1 TiDB Server
- TiDB Server 是无状态的,所以可以结合负载均衡的组件LVS。
- 数据并不是存储在TiDB Server中。
- 负责与应用交互 ,SQL语句发送到TiDB Server中,然后进行解析 编译 优化这条SQL语句,并且生成执行计划。
- TiDB Server 可以横向扩展或者缩容,通过增加个数均衡每个TiDB Server的负载。
- 垃圾回收,定期处理数据的历史版本
2.1 TiKV
分层去了解TiKV,可以类比TCP、IP的七层协议,从最简单的数据持久化(存储在一个单机的rocksdb中),然后一层一层的加协议,最终实现一个数据库的所需的完整功能。
- 数据持久化 是利用单机的KV存储引擎 rocksdb kv,rocksdb raft是存储指令的
- 高可用 raft 协议。每个region多副本 ,其中有一个leader ,其他的region跟随leader的变化。
- 支持MVCC。数据多版本。
- 支持事务
- 算子下推,主要是发挥分布式数据库的优势,每个TIKV都有CPU,可以让TIKV单独处理自己的部分,比如where age >= 10的条件,可以在每个TIKV node上单独处理完成。除了过滤,还能做投影 聚合 等方面的计算工作
2.2 TiFlash
- 一致性 ,TiFlash存储的数据和 TiKV是一样的 , 是TiKV的列存储版本
- 参与复制,数据是实时的。
- 行存适合OLTP,TiKV承载的功能;列存适合OLAP ,TiFlash承载的功能,暴力扫描 ,分析数据,生成报表
- 智能扫描/手动指定 数据有行存和列存,数据库如何选使用那个存储引擎。
因为有了TiFlash的加入 TiDB才能HATP数据库
3 PD
PD是TIDB的大脑
- 存储元数据 。数据的region与TiKV的对应关系。例如记录T表存储在哪几个TiKV node 上
- 提供授时管理 。记录时间戳 例如每个SQL开始执行时间 TSO,执行结束时间
- 收集信息进行调度。TiKV 会定时发送信息到PD,如果某个表的数据分布不均衡,例如集中分布在某个TiKV上,
参考
TiDB 整体架构 | PingCAP 文档中心
https://learn.pingcap.com/learner/course/960001