TIDB数据库特性总结

article/2025/9/21 2:18:45

文章目录

  • 前言
  • 一、TIDB数据库介绍
    • 1.1数据管理技术发展阶段
    • 1.2 数据库分类
    • 1.2 如何学习TiDB
  • 二、TIDB特点和使用场景
    • 2.1.MySQL存在问题
    • 2.2.TiDB数据库特点
    • 2.3TIDB架构特性
    • 2.4 TiDB 核心特性
      • 2.4.1水平扩展性
      • 2.4.2高可用性
    • 2.5 TIDB的存储和计算能力
    • 2.6 TIDB特性总结
  • 3 TIDB部署
  • 总结


前言

项目需要使用TIDB,首先需要部署一个TIDB的集群环境,因此就打算学习一下TIDB数据库,方便以后使用。


一、TIDB数据库介绍

1.1数据管理技术发展阶段

  1. 人工管理阶段:没有磁盘等存储设备、,数据量小,由用户直接管理。
  2. 文件系统阶段:有磁盘等存储设备,将数据存放在磁盘中。
  3. 数据库系统阶段:将数据存放于数据库中,使用数据库管理工具对数据统一进行管理。

1.2 数据库分类

数据库大约是上世纪六七十年代提出来的,目的是为了提高数据管理的效率。按照发展顺序,数据库大概可以分为以下几种:

  1. 层次和网状数据管理系统:可以理解为是用指针来表示数据之间的关系。
  2. 关系型数据库(RDBMS):是最常用的数据库,可以理解为使用二维表来表示和维护数据之间的关系。促进了数据库的小型化和普及化。
  3. 新一代数据库:新一代数据库主要是为了解决关系型数据库的性能、扩展性、伸缩性等问题,有以下几种:
    ORDBMS:面向对象的数据库技术,如PostGreSQL。
    NoSQL(Not only SQL):意思是不仅仅是SQL,提倡运用非关系型的数据存储,普遍选择牺牲掉复杂的SQL支持以及ACID事务来换取弹性扩展的能力,通常不保证强一致性。非结构化数据库如(1)键值存储数据库:Redis。(2)列式存储数据库:HBase。(3)文档型数据库:MongoDB。(4)图数据库:Neo4j。
    NewSQL:这类数据库不仅具有NoSQL数据库对海量数据的存储管理能力,还保持了传统数据库的ACID和SQL等特性,例如:TiDB

由此可见TIDB属于NewSQL范畴,是最新的数据库技术。

1.2 如何学习TiDB

本次对TIDB的学习主要包括以下几个部分,排列顺序即学习路线:

  • TIDB的特点和应用场景。
  • TIDB安装部署。
  • TIDB集群化部署。
  • TIDB的SQL操作。
  • TIDB数据库迁移。

二、TIDB特点和使用场景

2.1.MySQL存在问题

当MySQL单表数据量超过5000时,性能就会急剧下降,通常使用分库分表的方式进行解决。分库分表虽然能够使MySQL性能稳定可控,将单表拆分成小表之后,能够水平扩展,部署到多台服务器上,进而提升整个集群的QPS、TPS、Latency等数据库服务指标。但是存在如果服务器宕机,有事务不一致的风险。分表之后,对SQL语句有一定限制,对业务方功能需求大打折扣。分表之后,需要维护的对象呈指数增长(MySQL实例数、需要执行的SQL变更数量 )
为避免MySQL数据库的问题,选用NewSQL,NewSQL数据库具有如下特点:

  • 无限水平扩展能力
  • 分布式强一致性,确保数据100%安全。
  • 完整的分布式事务处理能力与ACID特性。

TiDBB是NewSQL技术中心具有代表性的开源产品。

2.2.TiDB数据库特点

TIDB是开源分布式关系型数据库是一款定位于在线事务处理OLTP/在线分析处理OLAP的融合型数据库产品,实现一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时OLAP等重要特性。同时兼容MySQL协议和生态,迁移便捷,运维成本极地。
可以将TIDB看做MySQL的加强版和分布式版本
TIDB数据库具备分布式强一致性事务、在线弹性水平扩展、故障自恢复的高可用、跨数据中心等核心特性,是大数据时代理想的数据库集群和云数据库解决方案。
TIDB的设计目标是100%的OLTP场景和80%的OLAP场景,更复杂的OLAP分析可以通过TiSpark项目来完成。

  • 在线事务处理(OLTP):强调短时间内大量事务操作,强调支持短时间内大量并发的事务操作(增删改查)的能力,每个操作涉及的数据量都很小。强调的是事务的强一致性(银行转账)。例如“双十一期间,可能有几十万用户在同一秒内下订单,后台数据库要能够并发的、以近乎实时的速度处理这些订单请求”
  • 在线事务分析(OLAP):偏向于复杂的只读查询,读取海量数据进行分析计算,查询时间往往很长。例如“双十一结束,淘宝的运营人员对订单进行分析挖掘,找出市场规律”,这种分析坑你需要读取所有的历史订单进行计算,耗时数十秒甚至数十分钟。代表产品:GreenPlum、TeraData,AnalyticDB

2.3TIDB架构特性

三个核心组件:TIDB Server, PD Server, TIKV Server。另外有两个附加的组件:TiSpark,TIDB Operator。
在这里插入图片描述

  • PD Server:是整个集群的管理者,主要(1)存储元数据,(2)进行负载均衡,(3)分配全局唯一的事务ID。
  • TIDB Server:负责接收SQL请求,通过PD中存储的元数据找到数据存在哪个TiKV上,并与TiKV进行交互,将结果返回给客户端。
  • TiKV Server:负责真正存储数据的,本质上是一个KV存储引擎。
  • TiSpark:用来解决用户的复杂的OLAP查询需求的组件。
  • TiDB Operator:用来方便云上部署的组件。

在这里插入图片描述

2.4 TiDB 核心特性

  1. 高度兼容MySQL:在大多数情况下,无需修改代码就可以从MySQL轻松迁移至TIDB,分库分表之后的MySQL集群仍然可以通过TIDB工具进行实时迁移。
  2. 分布式事务支持:100%支持ACID事务。
  3. 一站式HTAP解决方案:混合的事务处理和分析处理。
  4. 云原生的SQL数据库:TIDB是为云而设计的,支持公有、私有和混合云配合TIDB Operator项目可以实现自动化运维、使部署、配置和维护变得十分简单。
  5. 水平弹性扩展:(存储能力和计算能力)通过简单的增加新节点即可实现TIDB的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。
  6. 真正的金融级的高可复用:相比于传统主从(M-S)复制方案,基于Raft的多数派选举协议可以提供金融级的100%数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动回复(anto-failover),无需人工接入。

2.4.1水平扩展性

水平扩展是TIDB的一大特点,这里说的水平扩展包括两个方面:计算能力和存储能力。
TIDB server负责处理SQL请求,随着业务的增长,可以简单的添加TIDB Server的节点提高整体的处理能力,提供更高的吞吐。
TiKV负责存储数据,随着数据量的增长,可以部署更多的TiKV server节点解决数据Scale的问题。
PD会在TiKV节点之间以Region为单位做调度,将部分数据迁移到新的节点上。
所以在业务的早期,可以只部署少量的服务实例(推荐至少部署三个TiKV,三个PD,两个TIDB),随着业务的增长,按照需求添加TiKV和TIDB实例。

2.4.2高可用性

高可用性:高可用性是TIDB的另一大特点,TIDB/TiKV/PD这三个组件都能容忍部分实例失效,不影响整个集群的可用性。
1、TIDB:TIDB是无状态的,访问第一台、第二台或者第三台都是一样的,可以多部署几个,前端通过负载均衡组件对外提供服务,单个实例失效之后,可以重启这个实例或者部署一个新的实例。
2、PD:PD是一个集群,通过Raft协议保持数据的一致性,单个实例失效时,如果这个实例不是Raft的leader,那么服务完全不受影响,如果是Raft的leader,那么会重新选取一个新的Raft leader,自动回复服务,PD在选举过程中,无法对外提供服务,这个时间大概是三秒。推荐至少部署三个PD实例,单个实例失效之后,重启这个实例或者添加新的实例。
3、TiKV:TiKV是一个集群,也是通过Raft协议保持数据的一致性(副本数量可以配置,默认是保存三份副本),通过PD做负载均衡调度,单个节点失效时,会影响这个节点上存储的所有的Region。对于Region中的Leader节点,会中断服务,等待重新选举。对于Region中的Follower节点,不会影响服务。当某个TiKV节点失效,并且在一段时间内无法回复(默认30min),PD会将其上的数据迁移到其他的TiKV节点上。

2.5 TIDB的存储和计算能力

TIDB的存储和计算分别由TiKV和TIDB Server完成。
存储能力TiKV Server通常是3+的,TIDB每份数据缺省为三副本。TiKV集群存储的数据格式是KV的,在TIDB中,并不是将数据直接存储在HDD/SSD上,而是通过RocksDB实现了TB级别的本地存储方案,着重提一点:RocksDB和HBASE一样,都是通过LSM树作为存储方案,避免了B+树叶子节点膨胀带来的大量随机读写,从而提高了整体的吞吐量。

计算能力TIDB Server本身是无状态的,意味着当计算能力成为瓶颈的时候,可以直接扩容机器,对用户是透明的。理论上TIDB Server的数量并没有上限限制。

2.6 TIDB特性总结

TIDB作为新一代的NewSQL数据库,在数据库领域已经逐步站稳脚跟,结合了Etcd/MySQL/HDFS/HBase/Spark等技术的突出特点,随着TIDB的大面积推广,会逐渐弱化OLTP/OLAP的界限,并简化目前冗余的ETL流程,引起新一轮的技术浪潮。一言蔽之,TIDB未来可期。

3 TIDB部署

TIDB生产环境对系统以及内存、CPU都有要求,如果不满足是不能安装的,因此在V4.0之前推荐使用docker compose进行部署)(如果你只是想测试TIDB,体验TIDB的特性,或者用于开发环境,你可以使用Docker Compose在本地快速部署TIDB集群,该部署方式不适用于生产环境)。不过在V4.0以及后,TIDB开发了自己的集群部署管理工具——TiUP,TiUP是当前TIDB推荐使用的集群部署管理工具,因此在V4.0之后,推荐大家使用TiUP来进行部署测试或者实际部署。
TiUP是TIDB4.0版本引入的集群运维工具,通过TiUP可以进行TIDB的日常维护工作,包括部署、启动、关闭、销毁、弹性扩缩容和升级TIDB集群,以及管理TIDB集群参数。

本人的腾讯云服务器是linux系统CPU为amd64架构,2核4g,6m带宽,但是在进行单机部署模拟生产环境集群时,会卡死,根本无法进行,因此笔者使用了虚拟机进行部署,为虚拟机开辟了大量的内存,最终在解决了一些坑之后,成功部署,下篇博客将详细讲解单机模拟部署生产环境集群,遇到的坑和解决方法。


总结

这篇博客对TIDB进行了介绍,并对数据库的发展和分类,以及当前使用广泛的MySQL数据库的瓶颈进行了阐述。TIDB是一个开源分布式关系型数据库,是NewSQL的一个代表。TIDB具有很多优秀的特性,例如:实现一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时OLAP等重要特性。一言以蔽之:TIDB未来可期,下篇博客将介绍单机模拟部署生产环境集群的方法,遇到的坑和解决方式。


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

相关文章

TIDB整体架构

TiDB 集群主要包括三个核心组件:TiDB Server,PD Server 和 TiKV Server。此外,还有用于解决用户复杂 OLAP 需求的 TiSpark 组件和简化云上部署管理的 TiDB Operator 组件。 架构图解 TiDB Server TiDB Server 负责接收 SQL 请求,处…

TIDB简单了解

官方文档 TIDB HTAPTIDB HATP 基础概念: TIDB应用场景(优势)体系结构TIDB的管理及调度-PDTIDB链接层和SQL层-TIDB Server存储节点TIKVKVRocksDBRaft协议主副本选举日志复制 RegionMVCCACID事务 TiFlash HTAP 先为大家推荐一篇文章 https://…

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…