TiDB从0到1学习笔记(精华篇)

历时四个月,恭喜赵老师的《TiDB从0到1》 系列文章顺利完结,小编再次梳理一遍文稿,并附注解分享给大家。
整体架构
从 TiDB 1.0 到 8.0,TiDB 的体系结构一直在不断演进。接下来让我们一起看看整体架构的变化。
TiDB v1
TiDB v1,主核心框架已定,TiDB 由 TiDB Server, TiKV, PD Server 构成。

更多参考:星辰考古:TiDB v1.0 再回首
TiDB v2
TiDB v2,整体架构升级,引入 TiSpark,解决用户复杂的 OLAP 需求。

更多参考:星辰考古:TiDB v2.x 回忆杀
TiDB v3
TiDB v3,整体架构“焕新”,初见 TiFlash。

更多参考:星辰考古:TiDB v3.x 忆水木
TiDB v4
TiDB v4,TiFlash 重要程度提升,下图为 TiDB HTAP 形态架构。

TiCDC 从 v4.0.6 起成为正式功能,可用于生产环境。

图为 TiCDC 架构图

图为 TiCDC 集群及节点内部组件的设计图
更多参考:星辰考古:TiDB v4.0 进化前夜
TiDB v6
从 TiDB 6.0.0 开始,版本的生命维护周期重大调整,TiDB 提供两个版本系列:
-
长期支持版本(LTS)约每六个月发布一次。 -
开发里程碑版本(DMR)约每两个月发布一次。
在 TiDB v6.1.0 LTS 的文档中,TiDB 整体架构图更新,去 TiSpark,正式迎来 TiFlash。

目前,TiDB 已来到 v8 版本,整体架构趋于稳定,与 v6 相同。
VLDB 论文
在之前的文章中提及:
PingCAP 团队的论文《TiDB: A Raft-based HTAP Database》入选 VLDB 2020 ,成为业界第一篇 Real-time HTAP 分布式数据库工业实现的论文。
PingCAP 的目标是构建一个单一、实时事实来源的数据库,以便应用程序和其上的业务能够适应不确定性。在构建 TiDB 的过程中,其受益于 Raft 和 Spanner 等数据库和分布式系统研究。提出将 TiDB 作为混合事务和分析处理 (HTAP) 数据库,这是一种适用于 OLTP 和 OLAP 应用程序的“一刀切”解决方案。并将该方案以论文的形式回馈给学术界。
在今年刚闭幕的 VLDB 2024 会议中,TiDB 携两篇论文、一个 Demo Paper 亮相。
论文下载地址:https://asktug.com/t/topic/1031551
VLDB 是数据库领域的顶级国际会议,旨在为数据管理、可扩展数据科学、数据库研究者、供应商、从业者、应用开发者和用户提供交流平台。 2024 年的 VLDB 会议涵盖了数据管理、数据库架构、图形数据管理、数据隐私与安全、数据挖掘、机器学习、人工智能和数据库系统研究等领域的问题——这些都是 21 世纪新兴应用的基本技术基石。
TiKV & RocksDB
RocksDB 是由 Facebook 基于 LevelDB 开发的一款提供键值存储与读写功能的 LSM-tree 架构引擎。用户写入的键值对会先写入磁盘上的 WAL (Write Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类存储引擎更高的写吞吐。
RocksDB 作为 TiKV 的核心存储引擎,用于存储 Raft 日志以及用户数据。每个 TiKV 实例中有两个 RocksDB 实例,一个用于存储 Raft 日志(通常被称为 raftdb),另一个用于存储用户数据以及 MVCC 信息(通常被称为 kvdb)。

得益于 RocksDB 优秀的产品和活跃的社区,TiKV 的产品力也在不断增强,同时 PingCAP 也在积极回馈 RocksDB 社区,下图为 RocksDB 贡献榜单,PingCAP 贡献的 PR 数排位第三。

TiUP
TiUP 当前版本为 1.16.0
。
关于 TiUP 的内容,之前介绍过,具体参阅:
-
TiUP v1.16 发版,支持 PD 微服务 -
TiDB 7.x 源码编译之 TiUP 篇 -
TiUP:TiDBAer 必备利器
这里补充几点。
从 TiDB v8.0.0 开始:
-
TiProxy 成为正式功能,并集成到 TiUP 组件中。 -
由 TiUP 默认部署的 Prometheus 版本升级到 2.49.1 -
由 TiUP 默认部署的 Grafana 版本升级到 7.5.17
关于 TiProxy 的内容,可参阅:
-
社区声音:恭喜 TiProxy 组件 GA! -
TiDB 7.x 源码编译之 TiProxy 篇
集群配置
TiDB 集群中包含若干组件,每个组件都有各自配置项,不论是日常调优还是版本升级,都需要确认配置项的变化。
在 TiDB 社区中,有两个实用工具,推荐给大家。
-
tidb_config_diff: https://tidb.net/blog/2ad42384 -
TiDBA: https://tidb.net/blog/299f0bdc
感谢提供工具的大佬们。
感谢
值此教师节之际,特此感谢 PingCAP Education 的老师们,是 PE 带我们了解 TiDB、熟悉 TiDB、玩转 TiDB。
一并感谢 TiDB 社区,让 TiDBer 可以在云上、线下有一个良好的沟通交流平台。
相信 TiDB 社区可以变成、保持“别人家的”理想开源社区,互助、有爱、有追求。
感谢 @赵老师 分享的系列好文。
//赵师的工作日
感谢 @表妹和她的TiDBer们
//表妹和她的TiDBer们
🌻 往期精彩 ▼
-
TiDB排行再升5位;盘点平凯数据库的发明专利(2024上半年公布) -
国产基础软件“出海”标杆炼成记 -
敢于公布BUG的国产数据库才是好数据库 -
PingCAP 再度入选“中国独角兽企业”,数据库领域的先锋力量 -
星辰资讯:TiDB v8.1.0 发版!稳! -
快讯!TiDB v8 发版!超硬核 v8 引擎! -
TiDB v7.5.3 发版,听说升级后又可以躺平两年 -
TiDB v7.5.0 LTS 升级必读 | 新特性补充说明 -
使用 HyBench 测试 TiDB
-- / END / --
本文由 mdnice 多平台发布
相关文章:

TiDB从0到1学习笔记(精华篇)
历时四个月,恭喜赵老师的《TiDB从0到1》 系列文章顺利完结,小编再次梳理一遍文稿,并附注解分享给大家。 整体架构 从 TiDB 1.0 到 8.0,TiDB 的体系结构一直在不断演进。接下来让我们一起看看整体架构的变化。 TiDB v1 TiDB v1&…...

NLP-新词挖掘
一、背景 网络领域的新词发现(挖掘)是一个非常重要的nlp课题。在处理文本对象时,非常关键的问题在于“切词”这个环节,几乎所有的后续结果都依赖第一步的切词。因此切词的准确性在很大程度上影响着后续的处理,切词结果…...

电脑录屏不求人,9月必备免费录屏软件推荐!苹果电脑可用!
在当今这个信息爆炸的时代,电脑录屏软件已经成为了我们日常工作和生活中不可或缺的工具。无论是制作教学视频、录制在线课程、游戏直播,还是创建产品演示,一个好的录屏软件都能帮助我们更高效地完成任务。市场上的录屏软件琳琅满目࿰…...

SpringMVC基于注解使用:国际化
01-国际化介绍 首先在bootstrap下载个页面 下载后把登录页面的代码粘上去 然后再登录页面代码上有些超链接需要再spring-mvc.xml里面配置下,登录页面才能正常显示 配置静态资源 国际化-根据浏览器语言国际化 现在是中文的情况,要改为英文 1.配置下属…...

工地安全帽检测系统源码分享
工地安全帽检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…...

如何为 DigitalOcean 静态路由操作员设置故障转移
静态路由操作器的主要目的是提供更大的灵活性,并在 Kubernetes 环境中控制网络流量。它使你能够根据应用程序的需求自定义路由配置,从而优化网络性能。该操作器作为 DaemonSet 部署,因此将在你的 DigitalOcean Managed Kubernetes 集群的每个…...
Ansible简单部署与使用
目录 环境安装Ansibleapt installmarkupsafe error 配置Ansible创建个人目录ansible.cfghosts 测试Ansibleping批量执行自定义命令 环境 Ubuntu 20.04 安装Ansible apt install sudo apt install ansiblemarkupsafe error 安装成功后,尝试运行ansibleÿ…...

Harmony Next charles 抓包指南
1.选择安装移动证书 代理信息如下 2.设置手机代理 手机与电脑连接同一网络,然后配置步骤 1 的代理 路径:设置-wlan-选择当前网络编辑-代理-保存 注意:手机配置代理后,目前会默认断开连接,需要手动再连接下 wifi 3.鸿…...

【HarmonyOS】Beta最新对外版本IDE下载和环境配置
【HarmonyOS】Beta最新对外版本IDE下载和环境配置 前言 目前华为HarmonyOS的系统版本已经从Develop Beta升级为Beta预览版,全面开放。再也不需要白名单限制,才能下载使用最新的IDE和预览最新的开放文档了。 IDE下载和安装 Beta IDE下载地址 1.根据你…...

2024年9月第2周AI资讯
阅读时间:3-4min 更新时间:2024.9.9-2024.9.13 目录 Groq推出多模态大模型LLaVA v1.5 7B AI通过重读问题可以变得更聪明 美国Weave公司发布Isaac多功能个人机器人 特斯拉机器人出租车将实现无线充电 Adobe视频编辑新时代 无人驾驶汽车超越人类 AI…...
【软件使用-MEGA】构建进化树报错
*_summary.txt报错: MEGA-CC 10.2.6 Molecular Evolutionary Genetics Analysis Build#: 10210527-x86_640% Reading distance matrix MEGA-CC has logged the following error:When 2024年09月13日 下午 01时32分49秒 下午Data …...
面试常见八股
JAVA篇 基础 1、自动拆箱和装箱 装箱:装箱是将值类型(如int、double、struct等)转换为object类型或任何接口类型的过程。由于object是所有类型的基类(在.NET中),并且接口是引用类型,因此装箱…...
第十八章 番外 余弦相似度
余弦相似度(Cosine Similarity)是一种衡量两个非零向量之间角度的度量方式,用于评估它们之间的相似性。它的值范围从 -1 到 1,其中 1 表示完全相同的方向(即向量完全相同),0 表示正交࿰…...
HPA和helm
HPA pod的数量进行扩缩容 针对控制器创建的pod deployment: replica: 静态:edit yaml:apply -f HPA:基于cpu的利用率来实现pod数量的自动伸缩。 Horizontal pod autoscaling yaml文件————主流——————…...
基于人工智能的智能语音助手
语音助手的自然语言处理模块是语音助手系统的关键组成部分。通过这个模块,系统能够识别用户的意图并做出相应的回应。我们可以使用NLP技术来解析文本输入,并将其转换为系统可以理解的命令或指令。在本项目中,我们将结合语音识别、自然语言处理…...

java实际开发——数据库存储金额时用什么数据类型?(MySQL、PostgreSQL)
目录 java开发时金额用的数据类型——BigDecimal MySQL存储金额数据时用的数据类型是——decimal PostgreSQL存储金额数据时用的数据类型是——decimal 或 money java开发时金额用的数据类型——BigDecimal https://blog.csdn.net/Jilit_jilit/article/details/142180903?…...

Java 设计模式-状态模式
目录 一. 概述 二. 主要角色 三. 代码示例 四. 优缺点 优点: 缺点: 五. 常见应用场景 一. 概述 状态模式是一种行为设计模式,它允许一个对象在其内部状态改变时改变它的行为。对象看起来好像修改了它的类。状态模式把所有的与一个特定…...

2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘
1.编写一个图像二维卷积程序。它应该能够处理任何灰度输入图像,并使用以下内核进行操作: %matplotlib inline import numpy as np import matplotlib.pyplot as plt from scipy import linalg import random as rm import math import cv2# import and …...
动态IP池的IP都是纯净IP吗?
在当今互联网时代,动态IP池作为一种网络资源管理策略,被广泛应用于数据抓取、市场调研、广告验证等多种场景中。动态IP池能够提供大量可轮换的IP地址,以帮助用户避免因频繁访问同一网站而被封禁IP的情况。然而,一个关键的问题是&a…...

【MySQL】查询表中重复数据、模糊查询列信息、快速copy表数据(1)
一、SQL查询重复的数据: 1、SQL格式: Select * From 数据表 Where 重复记录字段 in ( select 重复记录字段 From 数据表 Group By 重复记录字段 Having Count(重复记录字段)>1) 2、举例: 在这个patient_member_info表中,我们…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...