TiDB-从0到1-体系结构

news2024/10/5 19:13:56

在这里插入图片描述

TiDB从0到1系列

  • TiDB-从0到1-体系结构
  • TiDB-从0到1-分布式存储
  • TiDB-从0到1-分布式事务

一、TiDB体系结构图

在这里插入图片描述
TiDB基础的体系架构中有4大组件

  • TiDB Server:用于处理客户端的请求
  • PD:体系的大脑,存储元数据信息
  • TiKV:存储数据
  • TiFlash:用于数据分析(非必要组件)

二、TiDB Server

在这里插入图片描述

  • 处理客户端的连接
  • SQL语句的解析和编译
  • 关系型数据结构与KV数据结构的转换
  • SQL语句的执行
  • DDL语句执行
  • 垃圾回收(GC清除历史版本)
基础功能模块

Protocol Layer:主要用于连接协议、身份验证等。
Parse:词法分析、语法分析
Compile:逻辑优化、物理优化
Executor:执行计划
这几部分的整体逻辑还是非常清晰的,基本和传统关系型数据库模型相同。

MVCC版本回收功能模块

GC:垃圾回收、定时清理过期数据上的锁信息和历史版本数据。
后期讲到TiDB分布式事务的时候会详细说明。

在线DDL功能模块

schema load:记录并同步各个节点的元信息
worker:负责读取队列并执行
TiDB中DDL的执行流程是:
客户端提交DDL语句->TiDB Server将DDL发送到TiKV队列中->workers模块读取队列消息并执行
这里有两个细节:

  • 1、TiDB会将DDL队列分为三种,非加索引语句、加索引语句、执行过的语句
  • 2、并不是每个TiDB Server节点都能执行DDL,只有被设置为owner的节点才行

三、TiKV

  • 实现数据持久化
  • 保证副本的强一致性和高可用性
  • MVCC多版本并发控制
  • 提供分布式事务支持
  • 实现Coprocessor(算子下推)

其实TiKV底层真正存储数据的是rocksdb。rocksdb是一款高性能的kv数据库,有完善的持久化机制。当然这里不是说TiDB Server将关系型数据转为KV型数据后就直接丢进了rocksdb,其中间过程涉及到transaction,mvcc,raft等多个逻辑结构。

四、PD

在这里插入图片描述

  • 存储整个集群TiKV的元数据
  • 分配全局ID和事务id
  • 生成全局时间戳TSO
  • 收集集群信息进行调度
  • 提供TiDB Dashboard服务

PD就相当于TiDB的大脑,可以理解为存储了整个集群的数据字典(但不是数据结构,而是数据位置),同时还负责生成全局时间戳,该时间戳也直接作用于TiDB的分布式事务。

五、TiFlash

在这里插入图片描述

  • 异步复制实现最终一致性
  • 列式存储提高分析查询效率
  • 实现业务隔离
  • 支持智能选择

TiFlash不属于TiDB最基础组件,是否需要部署TiFlash完全由业务需求决定。
个人认为TiFlash存在的意义是为了支持“TiDB是一款支持HTAP的数据库”这一概念,说白了,就目前数据库的发展阶段下,任何数据库在精准度、实时性、大数据只能满足其2,所谓的都满足大多也都是通过原生“挂件”来实现,例如Oracle、PG等亦是如此。
说回TiFlash,是TiDB原生的列式存储,其属于TiKV的副本,当有大数据统计计算类的SQL时,TiDB Server会自动判断是否去TiFlash节点进行计算。

彩蛋

在这里插入图片描述
TiDB官方简介中说到“TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 NewSQL 数据库。”,不过猜测TiDB多少也借鉴了Mongodb-sharding的模型(MongoDB于2010年8月发布了1.6版本,该版本引入了sharding特性)。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1709883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stable Diffusion 模型演进:LDM、SD 1.0, 1.5, 2.0、SDXL、SDXL-Turbo 等

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

Vue3+Ant design 实现Select下拉框一键全选/清空

最近在做后台管理系统项目的时候,产品增加了一个让人非常苦恼的需求,让在Select选择器中添加一键全选和清空的功能,刚开始听到的时候真是很懵,他又不让在外部增加按钮,其实如果说在外部增加按钮实现全选或者清空的话&a…

触摸屏是输入设备还是输出设备?

从功能上讲,触摸屏理应属于输入设备,之所以有很多用户会误会它是输出设备,是因为将其与“触摸显示屏”搞混了,以手机屏幕为例,它并不是单层屏幕,而是有多个不同功能和作用组成的集成屏,这类带有…

ubuntu-24.04系统静态Mac和IP配置

操作系统版本(桌面版):ubuntu-24.04-desktop-amd64.iso 原因说明:因网络的IP地址和Mac是预分配的,所以ubuntu系统需要修改网卡的mac地址和IP才能访问,网络查了半天资料都没成功,后再界面提示&a…

【Python】 Python中的“命名元组”:简单而强大的数据结构

基本原理 在Python中,namedtuple是tuple的一个子类,它允许我们为元组的每个位置指定一个名字。这种数据结构非常适合用于需要固定字段和值的场景,例如数据库查询的结果或配置文件中的设置。 namedtuple提供了一种方便的方式来访问元组中的元…

力扣2028. 找出缺失的观测数据

题目: 现有一份 n m 次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n m 次投掷数据的 平均值 。 给你一个长度为 m 的整数数组 rolls &a…

防止浏览器缓存了静态的配置等文件(例如外部的config.js 等文件)

防止浏览器缓存了静态的配置文件 前言1、在script引入的时候添加随机数1.1、引入js文件1.2、引入css文件2、通过html文件的<meta>设置防止缓存3、使用HTTP响应头:前言 在实际开发中浏览器的缓存问题一直是一个很让人头疼的问题,尤其是我们打包时候防止的静态配置文件c…

在 PhpStorm 中自定义代码片段

在 PhpStorm 中自定义代码片段的步骤如下: 打开 PhpStorm,进入 “File” > “Settings” > “Editor” > “Live Templates”。 在右侧面板中,点击 “” 号,选择 “Live Template”。 在弹出的窗口中: Abbreviation: 输入您想要自动补全的缩写,比如 “de”Template …

【强训笔记】day24

NO.1 思路&#xff1a;递归。 代码实现&#xff1a; class Solution { public:bool IsBalanced_Solution(TreeNode* pRoot) {return dfs(pRoot)!-1;}int dfs(TreeNode* root){if(rootnullptr) return 0;int leftdfs(root->left);if(left-1) return -1;int rightdfs(root-…

深度揭秘:蓝海创意云渲染农场的五大特色功能

在当今数字化时代&#xff0c;影视制作、效果图设计等领域对于高质量的渲染需求日益增长。在这个背景下&#xff0c;云渲染平台成为了行业中不可或缺的一部分&#xff0c;它为用户提供了高效、灵活的渲染解决方案。蓝海创意云渲染农场https://www.vsochina.com/cn/render蓝海创…

WWW24因果论文(1/8) | 利用强化学习(智能体)进行因果问答

【摘要】因果问题询问不同事件或现象之间的因果关系。它们对于各种用例都很重要&#xff0c;包括虚拟助手和搜索引擎。然而&#xff0c;许多当前的因果问答方法无法为其答案提供解释或证据。因此&#xff0c;在本文中&#xff0c;我们旨在使用因果关系图来回答因果问题&#xf…

昂科烧录器支持Infineon英飞凌的磁性位置传感器TLE4998S8D

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中Infineon英飞凌的磁性位置传感器TLE4998S8D已经被昂科的通用烧录平台AP8000所支持。 TLE4998S8D是一款磁性位置传感器&#xff0c;经过专门设计&#xff0c;满足高精度角度和位…

实施阶段(2024年5月)

【项目活动1】斐波拉契数列第n项的值&#xff1f; 数学思想&#xff1a;第一项和第二项的值都为1&#xff0c;从第三项开始值为前两项的和。 方法一&#xff1a;迭代 迭代变量&#xff1a;f1和f2 迭代表达式&#xff1a;f1,f2f2,f1f2 计数器&#xff1a;i 迭代表达式运算…

webpack打包配置项

webpack打包配置项 在config.js 中 module.exports {publicPath: process.env.NODE_ENV production ? / : /, //静态资源目录outputDir: dist, //打包名称assetsDir: static,//静态资源&#xff0c;目录devServer: {port: port,open: false,overlay: {warnings: false,erro…

解决Plugin ‘maven-clean-plugin:3.1.0‘ not found的问题

1. 问题描述 当导入别人的Maven项目时&#xff0c;可能会出现Plugin maven-clean-plugin:3.1.0 not found的错误信息。 2. 解决方案 2.1 方案一 检查自己的Maven仓库地址是否正确&#xff0c;一般引入其他人的项目时&#xff0c;Maven仓库的目录以及配置都会是别人的&#xff…

SpringBoot——基于Spring Task实现定时任务

目录 定时任务 项目总结 新建一个SpringBoot项目 pom.xml无需引入依赖 SpringTaskDemo SpringbootSpringtaskApplication启动类 定时任务 在日常的项目开发中&#xff0c;往往会涉及一些需要做到定时执行的代码&#xff0c;例如自动将超过24小时的未付款的订单改为取消状…

go语言,golang,linux,unbantu安装

查看系统是arm还是amd uname -m 命令可以显示系统的架构类型&#xff1a; uname -m输出可能是&#xff1a; x86_64&#xff1a;表示是 AMD64 架构&#xff08;即 64 位的 x86 架构&#xff09;。aarch64&#xff1a;表示是 ARM64 架构&#xff08;即 64 位的 ARM架构&#xf…

Thingsboard规则链:Message type switch节点详解

在物联网解决方案中&#xff0c;数据的高效处理与自动化决策流程是实现智能化管理的基础。Thingsboard&#xff0c;作为一个强大的开源物联网平台&#xff0c;通过其规则引擎为用户提供了一系列灵活的节点来定制复杂的业务逻辑。其中&#xff0c;Message Type Switch节点是构建…

超清高帧,成像升级 | SWIR短波红外相机500万像素992芯片

博图光电5MP短波红外相机&#xff0c;搭载了索尼IMX992 SenSWIR传感器&#xff0c;支持5.2MP分辨率&#xff0c;适合探测波长在400nm-1700nm波段的可见光和短波红外光&#xff0c;有效面积和透光率得到提升&#xff0c;内置TEC制冷片&#xff0c;实现了像素尺寸和图像均匀性方面…

微服务架构-数据共享设计模式

微服务架构-数据共享设计模式 每个微服务拥有自己的数据库&#xff0c;可以独立地进行数据库架构设计、部署和维护。这种是属于常规的方式&#xff0c;不受其他微服务的影响&#xff0c;具有高度的自治性。 然而&#xff0c;在将单体应用拆分成微服务时&#xff0c;可能会遇到…