NEWSQL
- SQL:强事务保证和关系模型。
- NoSQL:数据的高可用和可扩展性。
- NewSQL:都支持。
TIDB特性
- 支持云原生的分布式数据库。
- 支持分布式事务的问题,满足ACID。
- ACID是关系型数据库的特性。A(atomicity):原子性;C(consistency):一致性;I(isolation):隔离性;D(durability):持久性;
- 支持mysql协议。
- 支持MVCC 隔离级别。
- 支持OLTP和OLAP场景
- OLTP(Online Transaction Processing)是指在线事务处理,数据库适用的OLTP场景指的是要求高并发、低延迟、数据一致性高的线上交易场景。
- OLAP(Online Analytical Processing)是指在线分析处理,数据库适用的OLAP场景指的是面向决策支持和数据分析的场景,需要具备高性能的查询、处理大数据量、复杂的数据分析和管理、支持数据库的多维度、数据透视表、在线分析和数据挖掘等特性,以满足企业在决策制定上的数据支持需求。
- 支持高可用。基于Raft的多数派选举协议。
- Raft协议中有leader选举机制。
TIDB架构
- 将mysql中的内存数据处理部分和硬盘数据存储部分做了进一步的拆分。
- 内存数据处理部分就是TiDB,是一个无状态服务,负责解析sql语句并完成解析返回数据。
- TiKV是TiDB的数据储存部分,是KV格式存储数据,支持TiDB和TiSpark完成数据请求。
- 基础组件是Reigon,上层是RaftGroup,这个类似kafka的分片副本和分片之间的关系。
- 基于Raft协议,实现高可用。
- PD是服务管理中心,负责元数据服务和服务治理。
- 这里的服务治理对象是TiKV,负责高可用部分。也就是数据查询和数据安全(冗余、调度)。
- 同时自身也支持Raft协议,满足高可用。
- TiSpark是支持Spark的无状态服务解析器。
- TiFlash,基于列示存储,有利于数据分析,不利于变更。
TIDB分布式事务
- 基于二阶段提交。
- 各节点都和协调者交互,完成申请、预提交、提交和回滚等操作。
- 还有协调者身份,协调者由指挥变更为发布事务ID,具体是否提交由各个节点自己交互处理。
Raft协议
- Raft将系统中的各个节点划分为三种角色:Leader、Follower和Candidate。Leader负责接收客户端请求,并将状态变更广播给其他节点;Follower和Candidate则负责接收Leader的命令,并将其状态同步到本地。
- Raft协议的关键机制是选举。如果Leader节点宕机了,那么剩余的节点将从候选人中选出一个新的Leader。在选举过程中,每个候选人都会向其他节点发送选举请求,并且在接收到多数节点的投票后才能成为Leader。这种机制可以保证一旦Leader节点发生宕机,系统的其他节点可以迅速选出新的Leader,并确保对状态机的请求处理不会受到影响。