TIDB简介及基础架构

news/2024/5/19 12:36:44 标签: tidb, 数据库, mysql

1. 什么是TIDB

TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库

1.1 什么是NewSQL

  1. SQL,传统关系型数据库,例如 MySQL
  2. noSQL,例如 MongoDB,Redis
  3. newSQL

1.1.1 传统SQL的问题

互联网在本世纪初开始迅速发展,互联网应用的用户规模、数据量都越来越大,并且要求7X24小时在线。传统关系型数据库在这种环境下成为了瓶颈,通常有2种解决方法:

①升级服务器硬件:虽然提升了性能,但总有天花板。
②数据分片:数据涉及到跨库join、跨库事务时就很麻烦,很多人干脆自
己在业务层处理,复杂度较高。

1.1.2 NoSQL 的问题

后来 noSQL 出现了,放弃了传统SQL的强事务保证和关系模型,重点放在数据库的高可用性和可扩展性。
优点:

  • 高可用性和可扩展性,自动分区,轻松扩展
  • 不保证强一致性,性能大幅提升
  • 没有关系模型的限制,极其灵活

缺点

  • 不保证强一致性,对于普通应用没问题,但还是有不少像金融一样的企业级应用有强一致性的需求。
  • 不支持 SQL 语句,兼容性是个大问题,不同的 NoSQL 数据库都有自己的 api 操作数据,比较复杂。

1.1.3 NewSQL 特性

NewSQL 提供了与 noSQL 相同的可扩展性,而且仍基于关系模型,还保留了极其成熟的 SQL 作为查询语言,保证了ACID事务特性。
简单来讲,NewSQL 就是在传统关系型数据库上集成了 NoSQL 强大的可扩展性。

NewSQL 的主要特性

  • SQL 支持,支持复杂查询和大数据分析。
  • 支持 ACID 事务,支持隔离级别。
  • 弹性伸缩,扩容缩容对于业务层完全透明。
  • 高可用,自动容灾。

1.1.4 三种SQL的对比

在这里插入图片描述

1.2 TIDB核心特性

1.2.1 水平弹性扩展

通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。
得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用运维人员透明。

1.2.2 分布式事务支持

TiDB 100% 支持标准的 ACID 事务

1.2.3 金融级高可用

相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入

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

1.2.4 实时 HTAP

TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式HTAP 解决方案,一份存储同时处理 OLTP & OLAP 无需传统繁琐的 ETL 过程

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

1.2.5 云原生的分布式数据库

TiDB 是为云而设计的数据库,同 Kubernetes 深度耦合,支持公有云、私有云和混合云,使部署、配置和维护变得十分简单。TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的OLAP 分析可以通过 TiSpark 项目来完成。 TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库
间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力

1.4.6 高度兼容 MySQL

兼容 MySQL 5.7 协议、MySQL 常用的功能、MySQL 生态,应用无需或者修改少量代码即可从MySQL 迁移到 TiDB。

提供丰富的数据迁移工具帮助应用便捷完成数据迁移,大多数情况下,无需修改代码即可从 MySQL轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。

1.3 OLTP&OLAP

1.3.1 OLTP(联机事务处理)

OLTP(Online Transactional Processing) 即联机事务处理,OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,记录即时的增、删、改、查,比如在银行存取一笔款,就是一个事务交易

联机事务处理是事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主,评估其系统的时候,一般看其每秒执行的ransaction以及Execute SQL的数量。在这样的系统中,单个数据库每秒处理的Transaction往往超过几百个,或者是几千个,Select 语句的执行量每秒几千甚至几万个。典型的OLTP系统有电子商务系统、银行、证券等,如美国eBay的业务数据库,就是很典型的OLTP数据库

1.3.2 OLAP(联机分析处理)

OLAP(Online Analytical Processing) 即联机分析处理,是数据仓库的核心部心,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

典型的应用就是复杂的动态报表系统。在这样的系统中,语句的执行量不是考核标准,因为一条语句的执行时间可能会非常长,读取的数据也非常多。所以,在这样的系统中,考核的标准往往是磁盘子系统的吞吐量(带宽),如能达到多少MB/s的流量。

1.3.3 特性对比

OLTP和OLAP的特性对比
在这里插入图片描述

1.3.4 设计角度区别

在这里插入图片描述


http://www.niftyadmin.cn/n/2127.html

相关文章

嵌入式单片机及外设(硬件)知识基础一

零、硬件知识基础 硬件的概念硬件N要素硬件设计流程硬件的“小伙伴们” 1. 硬件的概念 官方定义 硬件(英文名Hardware)是计算机硬件的简称(中国大陆及香港用语,台湾作硬体),是指计算机系统中由电子、机械…

使用Dockerfile安装redis镜像

🌴使用Dockerfile安装redis镜像🕊️1. 安装centos7镜像和redis依赖包🍵步骤一:查找Docker Hub 上的centos镜像🍵步骤二:拉取官方的镜像,标签为7🍵步骤三:查看本地镜像列表…

图像生成1

搬来好东西啊 ~~ 模型模型来源论文ProGANhttps://sota.jiqizhixin.com/project/0190e1fa-5643-4043-8b75-9b863a6d20db 支持框架:TensorFlowProgressive Growing of GANs for Improved Quality, Stability, and VariationStyleGANhttps://sota.jiqizhixin.com/proj…

FFmpeg进阶:给视频添加文字水印

文章目录文字水印配置项文字水印关键点定义滤镜实现项目工程源码使用效果和图片水印一样,很多时候为了声明视频的原创性,我们会给视频添加文字水印进行版权保护。添加文字水印和添加图片水印的流程相似,但又略有不同,这里介绍一下…

普通用户无密码登陆(运维面试题)

在A机器建立账户x,在B机器建立账户y,实现用x账户无密码登陆y账户 (做练习都是root账号,用普通账户之间的ssh无非就是拷公钥的时候,加个账户,跟用root没什么区别) 命令行实现 比如&#xff1a…

LeetCode - 547 省份数量

题目来源 547. 省份数量 - 力扣(LeetCode) 题目描述 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是…

【C++笔试强训】第十七天

🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 💦&a…

[0CTF 2016]piapiapia

进来一个登录框,先试试sql注入,不太行 扫目录扫到www.zip,拿到源码 先看一下index.php 对username和password的长度进行判断,需要在3-16之间 再看一下class.php,在class.php看到过滤,将上面那些字符串改…