TIDB简单了解

article/2025/9/21 2:24:47

官方文档

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
在这里插入图片描述
数据处理大致可以分成这三类:

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场景准备,为数据分析场景加速。


http://chatgpt.dhexx.cn/article/55ZyZVSe.shtml

相关文章

TiDB数据库架构概述

目录 TiDB体系架构 TiDB Server TiKV(行存) PD (Placement Driver) TiFlash(列存) 例题 TiDB体系架构 TiDB Server TiDB Server是无状态的 无状态,指数据不在TiDB中落地,即TiD…

TIDB介绍(二)

参考文章:专栏 - 国产化浪潮下TiDB解决的痛点问题 | TiDB 社区 1 前言 随着国内互联网企业的快速发展,传统的oracle数据库架构在成本和扩展性上已不能满足要求,更多的企业将目光转向了开源的MySQL数据库,由于MySQL本身是一个…

分布式数据库——TiDB的介绍和基本原理

1、TiDB 介绍 1.1 TiDB 介绍 1.1.1 TiDB 是什么? TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景(on-line trans…

15分钟了解TiDB

由于目前的项目把mysql换成了TiDb,所以特意来了解下tidb。其实也不能说换,由于tidb和mysql几乎完全兼容,所以我们的程序没有任何改动就完成了数据库从mysql到TiDb的转换,TiDB 是一个分布式 NewSQL (SQL 、 NoSQL 和 NewSQL 的优缺…

TIDB简介及基础架构

1. 什么是TIDB TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。 1.1 什么是NewSQL SQL,传统关…

(一)TiDB简介

TiDB是PingCAP公司自主设计、研发的开放源分布式关系型数据库(NewSQL),是一个款同时支持在线事务处理与在线分析处理(Hybird Transactional and Analytical Processing,HTAP)的融合型分布式数据库产品。 目标是为用户提供一站式OLTP(Online T…

TiDB原理解析

TiDB是PingCAP公司设计的开源分布式NewSQL数据库。由于它兼容MySQL协议,并支持绝大多数SQL功能(比如joins,subqueries, transaction等)。业务能够直接通过MySQL connector去使用它来替换MySQL。TiDB适合场景: 数据量大…

TiDB 简介(二)

参考:TiDB 简介_福海鑫森的博客-CSDN博客_tidb开发语言 TiDB 简介 | PingCAP Docs TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的…

TiDB入门+深入

目录 一、概述 1、从MySQL到TiDB 2、简介 1、OLTP和OLAP 3、TiDB整体架构 4、TiDB安装部署 开发及测试环境 生产环境 5、TiDB-读取历史数据 6、数据迁移-TiDB Lightning 一、概述 数据库(DataBase)是按照数据结构来组织、存储和管理数据的仓库…

TIDB简介及TIDB部署、原理和使用介绍

TiDB简介及TiDB部署、原理和使用介绍 从MySQL架构到TiDB 数据库分类 ​ 介绍TiDB数据库之前,先引入使用场景。如今的数据库种类繁多,RDBMS(关系型数据库)、NoSQL(Not Only SQL)、NewSQL,在数…

JAVA注解学习-@Documented注解

这个注解只是用来标注生成javadoc的时候是否会被记录。 用法 在自定义注解的时候可以使用Documented来进行标注,如果使用Documented标注了,在生成javadoc的时候就会把Documented注解给显示出来。 带Documented生成的javadoc 不带Documented生成的java…

DocumentFragment

文章目录 1. 描述2. 使用 1. 描述 DocumentFragments 是DOM节点。通常的用例是创建文档片段,将元素附加到文档片段,然后将文档片段附加到DOM树。在DOM树中,文档片段被其所有的子元素所代替。 因为文档片段存在于内存中,并不在DO…

java 注解示例(@Documented)

java 注解示例(Documented) 作用:生成文档信息的时候保留注解,对类作辅助说明 *************************** 示例 Documented interface B{String value() default "这是一个自定义类"; }B public class MyTest2 {publ…

document.documentElement与document.body

写前端时遇到这两种方法&#xff0c;转载待以后查看。 两种特殊的文档属性可用来访问根节点&#xff1a; document.documentElementdocument.body 第一个属性可返回存在于 XML 以及 HTML 文档中的文档根节点。 第二个属性是对 HTML 页面的特殊扩展&#xff0c;提供了对 <…

@Documented注解作用

Documented注解作用 验证步骤1. 编写 注解 类2. 执行Javadoc命令生成文档3. 查看IService类文档信息4. 取消// Documented 注解 生成文档并查看 总结 验证步骤 1. 编写 注解 类 // 第一个文件 package com.example.zhaohuiweb;import java.lang.annotation.Documented; imp…

document.documentElement 属性

document.documentElement 属性返回文档中的 html 元素。 语法格式&#xff1a; document.documentElement; 示例&#xff1a; var html document.documentElement;console.log(html); 控制台输出&#xff1a; 如果 html 元素缺失&#xff0c;则返回 null。

Usage of API documented as @since 1.9+

Usage of API documented as since 1.9 idea爆红提醒: Usage of API documented as since 1.9 提醒需要1.9版本以上的API文档才能使用 解决办法: 1.配置高版本的JDK 1.9 以上 2.配置模块的语言等级 language level 为 9 最终结果如下:

javascript document

Document 获取元素节点&#xff1a; 1. document.getElementById(id属性值) 2. document.getElementsByTagName(tag标签名); 该方式获得一个"集合列表"(数组)对象(无视对象个数), 具体对象获取方式&#xff1a; 集合[下标] 或 集合.item(下标) 3. document.getE…

@Documented 的作用

1. Documented 的含义 Document 是 java 在生成文档&#xff0c;是否显示注解的开关。 2. 加和不加有什么区别&#xff1f; 测试注解 Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented public interface RestMapping {String[] value() default {}…

@Documented注解的作用

目录 在哪里用到了Documented注解&#xff1f;那么Documented的作用是什么&#xff1f; 在哪里用到了Documented注解&#xff1f; Documented是元注解&#xff0c;可以修饰其他注解。许多注解头部都有Documented注解&#xff0c;例如jdk中自带的Deprecated注解(路径是&#xf…