(一)TiDB简介

article/2025/9/21 3:17:04

TiDB是PingCAP公司自主设计、研发的开放源分布式关系型数据库(NewSQL),是一个款同时支持在线事务处理与在线分析处理(Hybird Transactional and Analytical Processing,HTAP)的融合型分布式数据库产品。
目标是为用户提供一站式OLTP(Online Transactional Processing)、OLAP(Online Analytical Processing)、HTAP解决方案。
TiDB适合高可用、强一致要求较高、数据规模较大等各类应用场景。

五大核心特性

  • 一键水平扩容或者缩容
    TiDB 存储计算采用分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容。

  • 金融级别高可用
    数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。

  • 实时HTAP
    提供行存储引擎 TiKV、列存储引擎 TiFlash 两款存储引擎,TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。

  • 云原生的分布式数据库
    专为云而设计的分布式数据库,通过 TiDB Operator 可在公有云、私有云、混合云中实现部署工具化、自动化。

  • 兼容MySQL5.7协议和MySQL生态
    兼容 MySQL 5.7 协议、MySQL 常用的功能、MySQL 生态,应用无需或者修改少量代码即可从 MySQL 迁移到 TiDB。提供丰富的数据迁移工具帮助应用便捷完成数据迁移。

    四大核心应用场景

  • 对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高的金融行业属性的场景

  • 对存储容量、可扩展性、并发要求较高的海量数据及高并发的OLTP场景

  • Real-time HTAP场景
    TiDB 在 4.0 版本中引入列存储引擎 TiFlash 结合行存储引擎 TiKV 构建真正的 HTAP 数据库,在增加少量存储成本的情况下,可以同一个系统中做联机交易处理、实时数据分析

  • 数据汇聚、二次加工处理的场景

TiDB框架
在这里插入图片描述

  • TiDB Server
    SQL层,对外暴露MySQL协议的连接endpoint,负责接受客户端的连接,执行SQL解析和优化,最终生成分布式执行计划TiDB层本身是无状态的,可以启动多个TiDB实例,通过负载均衡组件(如LVS、HAProxy或F5)对外提供统一的接入地址。TIDB Server本身不存储数据,只是解析SQL,将实际的数据读取请求转发给底层的存储节点TiKV(或TiFlash)。
  • PD(Placement Driver)Server
    TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。PD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点,可以说是整个集群的“大脑”。此外,PD 本身也是由至少 3 个节点构成,拥有高可用的能力。建议部署奇数个 PD 节点。
  • 存储节点
    TiKV Servier:负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 的 API 在 KV 键值对层面提供对分布式事务的原生支持,默认提供了 SI (Snapshot Isolation) 的隔离级别,这也是 TiDB 在 SQL 层面支持分布式事务的核心。TiDB 的 SQL 层做完 SQL 解析后,会将 SQL 的执行计划转换为对 TiKV API 的实际调用。所以,数据都存储在 TiKV 中。另外,TiKV 中的数据都会自动维护多副本(默认为三副本),天然支持高可用和自动故障转移。
    TiFlash:TiFlash 是一类特殊的存储节点。和普通 TiKV 节点不一样的是,在 TiFlash 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速

参考文献:
TiDB 简介
TiDB 数据库的存储
TiDB 数据库的计算
TiDB 数据库的调度


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

相关文章

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…

攻防世界_Crypto_Decrypt-the-Message

攻防世界刷题记录Crypto篇 文章目录 攻防世界刷题记录Crypto篇前言一、原题内容二、解题步骤1.了解poem code加密原理2.借助Python解密脚本解密 三、自己的一点解题方法和疑惑 前言 这应该是我在攻防世界网站遇到的第一道三分题&#xff0c;可以看到原题是出自2014年的一个比赛…

Encrypt/Decrypt Strings(加密/解密字符串)

2019独角兽企业重金招聘Python工程师标准>>> /*** Usage:* <pre>* String crypto SimpleCrypto.encrypt(masterpassword, cleartext)* ...* String cleartext SimpleCrypto.decrypt(masterpassword, crypto)* </pre>* author ferenc.hechler*/ public…

SECCON-CTF-2014-Decrypt-It-easy

题目 给了三个文件ecrypt1.bin,readme.txt,rnd 其中readme.txt: $ ./rnd crypt1.png ecrypt1.bin Solve 看到前面有一个$,猜测可能和linux系统有关&#xff0c;这一条信息有点像使用./目录下的rnd对crypt1.png进行某种操作&#xff0c;输出为ecrypt1.bin. file一下 file /…

JAVA使用mysql加密解密函数(AES_ENCRYPT/AES_DECRYPT)

前言 最近大学做JavaWeb课设时发现&#xff0c;很多同学的有关于账号密码都是明文储存在mysql数据库中&#xff0c;其实这样做在实际应用中是非常不安全的&#xff0c;其实mysql最近本身就提供了非常好的两个函数来供我们去加密解密我们要存入的数据&#xff0c;下面我们就来介…

Encrypt 和 Decrypt 加密--解密

[例句]In order to encrypt and decrypt, you need an encryption algorithm and a key. 为了进行加密和解密&#xff0c;您需要加密算法和密钥。 数据加密 数据加密利用密码技术对信息进行加密&#xff0c;实现信息的隐蔽&#xff0c;从而起到保护信息安全的作用。它通过加密…