TiDB数据库架构概述

article/2025/9/21 2:51:14

目录

TiDB体系架构

TiDB Server

TiKV(行存)

PD (Placement Driver)

TiFlash(列存)

例题


TiDB体系架构

TiDB Server

TiDB Server是无状态的

 无状态,指数据不在TiDB中落地,即TiDB Server不存储数据。

TiDB Server是可扩展的

根据并发需求,扩展或回收TiDB Server节点(与TiKV的水平扩容或缩容类似)

数据的KV转化

KV(Key-Value),即键值对;将关系型数据转化为KV进行持久化,也能将KV转化为关系型数据返回值客户端

将关系型数据转化为KV进行持久化为例:

TiDB Server将数据转化为键值对插入到TiKV中,TiKV使用rocksdkv将其转化为region并为其创造副本,存储至rocksdb的实例中

垃圾回收

垃圾回收操作gc,按一定时间间隔回收历史版本

注意:Online DDL不阻塞线上业务

数据表在TiDB Server中的执行过程

SQL语句在TiDB Server中的执行过程

TiKV(行存)

TiKV的水平扩容或者缩容

根据数据的储存需求,增加TiKV节点,即水平扩容;或建设TiKV节点,即水平扩容

TiKV的高可用性与强一致性

高可用性:TiKV使用Raft协议为region创造副本(默认为3副本,可以设置更多,如5副本)

强一致性:对leader的修改会被应用于其他副本,当集群的大多数副本都与被修改的leader保持一致时,才完成修改

MVCC多并发事务支持

 修改数据的同时,可读取数据(未被修改的/修改前的)

Coprocessor(算子下推)

每个TiKV节点都能承担一部分对自身数据的计算,过滤等操作

rocksdb

rocksdb,即单机存储引擎;用于保证数据的持久化,包括一下两各部分

rocksdb raft:存储指令供TiKV执行

rocksdb kv:将表数据转化为键值对存储至rocksdb实例中

region的分布式存储

PD(Placement Driver)

元数据存储

元数据用于确定region在哪几个TiKV节点或TiFlash节点(数据的分布)

收集集群信息进行调度

每隔一段时间TiKV和region向pd汇报状态信息(即心跳),pd根据状态信息进行调度;防止某个TiKV上有过多region

全局时间戳TSO

对于SQL语句:开始执行时获取TSO

对于事务:执行开始时,结束时都获取TSO

TiFlash(列存)

TiFlash是TiKV的列存版本,存储的region本质相同

OLTP与OLAP

OLTP:即在线交易/事务处理,与行存(TiKV)有关

OLAP:即在线分析处理,与列存(TiFlash)有关

HTAP同时支持OLTP和OLAP

TIDB Server通过CBO的智能选择,会帮助用户分析SQL语句属于OLTP或OLAP

例题

1.下列功能是由TiKV或TiFlash实现的为?(选2项)

A.根据集群中Region的信息,发出调度指令

B.对于OLAP和OLTP进行业务隔离

C.将关系型数据转化为KV存储进行持久化

D.将KV存储转化为关系型数据返回给客户端E.配合TiDB Server生成事务的唯一IDF.副本的高可用和一致性

答案:B,F

解析:根据region信息,进行调度(A),生成事务ID(E),均为PD实现的;将关系型数据转化为KV(C),或将KV转化为关系型数据(D),均为TiDB Server实现

2关于TiKV或TiDB Server,下列说法不正确的是?

A.数据被持久化在TiKV的 RocksDB引擎中

B.对于老版本数据的回收(GC),是由TiDB Server在TiKV上完成的

C.两阶段提交的锁信息被持久化到TiDB Server中

D.Region可以在多个TiKV节点上进行调度,但是需要PD节点点发出调度指念

答案:C

解析:根据关键字“持久化”可知应为TiKV,TIDB Server不负责数据的持久化


http://chatgpt.dhexx.cn/article/Ax6DpqDV.shtml

相关文章

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…

python模拟CryptoJS.AES.decrypt解密

python模拟CryptoJS.AES.decrypt 思路&#xff1a;准备工作:需求 思路&#xff1a; 从CryptoJS源码中抠出python模拟报错的代码 准备工作: 1.安装execjs库 pip install execjs2.安装nodejs 百度一下一大堆 3.使用npm安装crypto-js库 4.讲crypto-js库放入安装的node_modul…