> 文档中心 > TIDB简单了解

TIDB简单了解

官方文档

TIDB

  • HTAP
    • TIDB HATP 基础概念:
  • TIDB
    • 应用场景(优势)
    • 体系结构
      • TIDB的管理及调度-PD
      • TIDB链接层和SQL层-TIDB Server
      • 存储节点
        • TIKV
          • KV
          • RocksDB
          • Raft协议
            • 主副本选举
            • 日志复制
          • Region
          • MVCC
          • ACID事务
        • TiFlash

HTAP

先为大家推荐一篇文章
https://cloud.tencent.com/developer/article/1856902
TIDB简单了解
数据处理大致可以分成这三类:

OLTP(on-line transaction processing(联机事务处理))、OLAP(on-line analytical processing(联机分析处理))、HATP(hybrid transaction/analytical processing(混合事务分析处理)) (兼容二者特长)

OLTP 是传统的关系型数据库的主要应用,主要用于最基本的日常的事务处理。比如银行的一笔交易记录,就是一个典型的事务。
OLAP 是数仓系统的主要应用,支持复杂的分析操作,侧重点在于决策支持,提供直观的查询结果。
TIDB简单了解
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简单了解

TIDB的管理及调度-PD

PD(placement driver) Server: 整个TIDB集群的元信息管理模块。负责存储TIKV节点实时的数据分布情况和集群的整体拓扑结构,为分布式事务分配事务ID。PD可以算作整个集群的大脑。PD本身也是由至少三个节点构成,具有高可用能力。

TIDB链接层和SQL层-TIDB Server

TiDB Server: SQL 层,对外暴露MySQL协议的连接endpoint,负责接受客户端连接,负责接受客户端连接,执行SQL解析和优化,最终生成分析执行计划。

存储节点

TIDB简单了解

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数据集的图搜索query4)需要实时请求Hadoop的应用5)支持大量写和删除操作的消息队列

可以简单的将RocksDB当作一个单机持久化key-value Map

Raft协议

Raft协议是用来保障单机崩溃的情况下数据不丢失出错。
TIDB简单了解
Raft动态演示
Raft是一个一致性协议,主要负责以下几个功能:

1、主副本选举2、成员变更(如添加副本、删除副本、转移 Leader 等操作)3、日志复制
主副本选举

TIDB简单了解
TIDB简单了解
TIDB简单了解
TIDB简单了解TIDB简单了解TIDB简单了解
TIDB简单了解TIDB简单了解
TIDB简单了解TIDB简单了解TIDB简单了解TIDB简单了解

TIDB简单了解
TIDB简单了解
简而言之:

1.多个节点之间首选会自定义一个竞选时间2.竞选时间率先到的会成为候选人节点,发起投票,之后成为leader节点3.Leader节点负责与client交互,此时还会给从节点发送心跳4.主节点挂掉,从节点一段时间没有收到心跳,将重新启动竞选5.如果有多个节点同事成为候选人节点,将开启新一轮随机时间,重新随机候选人
日志复制

TIDB简单了解TIDB简单了解TIDB简单了解

TIDB简单了解

TIDB简单了解
TIDB简单了解
TIDB简单了解

TIDB简单了解

TIDB简单了解
如果节点之间断开,一部分有三个节点,一部分两个节点
TIDB简单了解

只有占据大多数的节点才能正常操作,没有majority的部分会放在heart后面不会返回客户端(未提交)
TIDB简单了解

等到恢复之后,原本少部分的节点会回滚未提交的内容。

Region

对于一个kv系统,将数据分布到不同的机器上,一般两种方案,一种是将key哈希,根据哈希值选取节点,第二种是根据key分value,某一段连续的key将会被分配到一个存储节点上。
TIDB选择了第二种方法
TIDB简单了解

• 以 Region 为单位,将数据分散在集群中所有的节点上,并且尽量保证每个节点上服务的 Region 数量差
不多。
• 以 Region 为单位做 Raft 的复制和成员管理

MVCC

TIKV为了实现多版本并发控制,采用了版本号的方式
TIDB简单了解
版本号打的排在前面(key有序排列)

ACID事务

TIDB支持分布式事务,提供乐观事务和悲观事务两种处理方式,当前默认采用悲观事务处理。

TiFlash

TIDB简单了解

如上图,TiFlash与TIKV不一样的是,TiFlash内部以列式进行存储,主要为OLAP场景准备,为数据分析场景加速。

狗狗宠物资料大全