官方文档
TIDB
HTAP
先为大家推荐一篇文章
https://cloud.tencent.com/developer/article/1856902
数据处理大致可以分成这三类:
OLTP(on-line transaction processing(联机事务处理))、
OLAP(on-line analytical processing(联机分析处理))、
HATP(hybrid transaction/analytical processing(混合事务分析处理)) (兼容二者特长)
OLTP 是传统的关系型数据库的主要应用,主要用于最基本的日常的事务处理。比如银行的一笔交易记录,就是一个典型的事务。
OLAP 是数仓系统的主要应用,支持复杂的分析操作,侧重点在于决策支持,提供直观的查询结果。
OLTP 特点一般有:数据量不大,实时性要求高,高并发且满足ACID原则。
OLAP特点一般有:数据大,实时性要求不是很高,侧重于通过数据提供决策。
Gartner 在《混合事务/分析处理促进重大商业创新》报告中定义 了 HTAP:Hybrid transaction/analytical processing,混合事务/分析处理。维基百科将 HTAP 定义为“单个数据库同时支持 OLTP 和 OLAP,进行实时智能处理的能力”。
TIDB HATP 基础概念:
1.存储引擎:行存与列存同事存在,自动同步,保持强一致性。行存为OLTP提供优化,列存为OLAP提供优化
2.HATP数据一致性。TiKV 提供了满足 ACID 约束的分布式事务接口,并通过 Raft 协议保证了多副本数据一致性以及高可用
3.HATP数据隔离性。TiKV、TiFlash等部署在不同的机器,解决了资源隔离的问题。TIDB 生而集群。
4.计算引擎:TIDB V5.0之后引入了TiFlash,TiFlash引入了分布式计算框架MPP。允许数据节点数据交换,并提供高性能高吞吐的SQL算法。
TIDB
应用场景(优势)
随着数据化时代的发展,有很多需求对大数据实时的需求越来越高,OLAP不能覆盖所有的需求,此时,TIDB就登上了舞台。与传统数据库相比,TIDB的优势有:
1.分布式架构,支持弹性扩容
2.几乎无缝兼容MySQL,兼容绝大多数MySQL语法,从传统数据库搬迁TIDB成本小
3.支持ACID事务,对于一些强一致性的需求场景友好
4.默认高可用,在少数副本失效的情况下,数据库本身能自动进行数据修复和故障转移
5.具有丰富的工具链生态,覆盖数据迁移、同步、备份多种场景
体系结构
TIDB的管理及调度-PD
PD(placement driver) Server: 整个TIDB集群的元信息管理模块。负责存储TIKV节点实时的数据分布情况和集群的整体拓扑结构,为分布式事务分配事务ID。PD可以算作整个集群的大脑。PD本身也是由至少三个节点构成,具有高可用能力。
TIDB链接层和SQL层-TIDB Server
TiDB Server: SQL 层,对外暴露MySQL协议的连接endpoint,负责接受客户端连接,负责接受客户端连接,执行SQL解析和优化,最终生成分析执行计划。
存储节点
TIKV
TIKV 负责存储数据,TIKV是一个Key-Vlaue存储引擎,存储数据的基本单位为Region,每个Region 负责存储一个Key Range,每个TIKV存储多个Region。
KV
TIkv选择key-values(键值对)的方式存储数据,并且key按照二进制的顺序有序,即提供了可靠的有序遍历方法(seek–>next)
RocksDB
RocksDB是facebook开源的一个优秀的单机key-value存储引擎.RocketsDB是一个典型的LSM类存储引擎。具体信息可以参照:RocksDB原理及应用
RocksDB典型场景:
1)需要存储用户的查阅历史记录和网站用户的应用
2)需要快速访问数据的垃圾检测应用
3)需要实时scan数据集的图搜索query
4)需要实时请求Hadoop的应用
5)支持大量写和删除操作的消息队列
可以简单的将RocksDB当作一个单机持久化key-value Map
Raft协议
Raft协议是用来保障单机崩溃的情况下数据不丢失出错。
Raft动态演示
Raft是一个一致性协议,主要负责以下几个功能:
1、主副本选举
2、成员变更(如添加副本、删除副本、转移 Leader 等操作)
3、日志复制
主副本选举
简而言之:
1.多个节点之间首选会自定义一个竞选时间
2.竞选时间率先到的会成为候选人节点,发起投票,之后成为leader节点
3.Leader节点负责与client交互,此时还会给从节点发送心跳
4.主节点挂掉,从节点一段时间没有收到心跳,将重新启动竞选
5.如果有多个节点同事成为候选人节点,将开启新一轮随机时间,重新随机候选人
日志复制
如果节点之间断开,一部分有三个节点,一部分两个节点
只有占据大多数的节点才能正常操作,没有majority的部分会放在heart后面不会返回客户端(未提交)
等到恢复之后,原本少部分的节点会回滚未提交的内容。
Region
对于一个kv系统,将数据分布到不同的机器上,一般两种方案,一种是将key哈希,根据哈希值选取节点,第二种是根据key分value,某一段连续的key将会被分配到一个存储节点上。
TIDB选择了第二种方法
即
• 以 Region 为单位,将数据分散在集群中所有的节点上,并且尽量保证每个节点上服务的 Region 数量差
不多。
• 以 Region 为单位做 Raft 的复制和成员管理
MVCC
TIKV为了实现多版本并发控制,采用了版本号的方式
版本号打的排在前面(key有序排列)
ACID事务
TIDB支持分布式事务,提供乐观事务和悲观事务两种处理方式,当前默认采用悲观事务处理。
TiFlash
如上图,TiFlash与TIKV不一样的是,TiFlash内部以列式进行存储,主要为OLAP场景准备,为数据分析场景加速。
版权归原作者 我本半山人 所有, 如有侵权,请联系我们删除。