TIDB简介及基础架构

news2024/11/24 23:06:23

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.coloradmin.cn/o/2014.html

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

相关文章

Kubernetes基础_03_ReplicaSet全解析

系列文章目录 文章目录系列文章目录前言一、创建ReplicaSet1.1 ReplicatSet的三个属性1.2 从ReplicaSet看Pod1.3 从Pod看ReplicaSet1.4 ReplicaSet属性分析ReplicasPod 选择算符Pod 模板二、使用ReplicaSet2.1 删除 ReplicaSet操作2.1.1 删除 ReplicaSet 和它的 Pod2.1.2 只删除…

随便给你一个页面 你该如何去给他布局呢 各位思考一下 ?

随便给你一个页面 你该如何去给他布局呢 各位思考一下 ? 学习知识靠的是直接主动去学 不是 被动接受我给出的答案: 化繁为简 ,化简为繁 在学习任何知识体系中都是如此 先学习这类知识的知识点 然后用一个案例或者是多个案例实操起来 在写页面时大多数人…

对话张璐:硅谷正在追逐两大赛道创新,融资降温但技术商业化更快了

LG 发自 凹非寺量子位 | 公众号 QbitAI什么是硅谷的New Sexy?张璐这次脱口而出介绍的是Mojo Vision和纳米机器人。前者随着元宇宙概念的火热越来越出圈,后者则跟随医疗AI和机器人深入而展现更大作用。Mojo Vision,AR眼镜,隐形佩戴…

[SpringBoot-vue3] 自定义图库

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

Spring框架的IOC和AOP的简单项目实现

一、Spring框架介绍 Spring框架是为了解决企业应用开发复杂性而创建的,是Java应用钟最广的框架,它的成功来源于设计思想,而不是技术本身,即IOC(inversion of control,控制反转) 和AOP&#xff…

攻防世界-adworld-reverse-game

#adworld-reverse-game 从1依次输入到8,每个数字会车,最后通关,获得flag |-----------------------▲--------||-----------------------●--------||-----------------------◆--------||-----------------------■--------||--------------------|-----------------------…

vite 静态资源打包配置,echart 主题引入,build上线问题,vue3-echart5使用

文章目录前情提要原因分析实战解析最后前情提要 在经历了vite打包实战后&#xff0c;我入手了echart实战&#xff0c;线下运行一切正常&#xff0c;但是打包上线后出现了异常 TypeError: Cannot create property series onstring <IDOCTYPE html>,挑战又来了&#xff0c…

抖音开发对接之订单取消消息

目录 前言 一、抖音开发中的订单取消消息 二、抖音运营反馈的业务需求分析 三、整体的业务开发思路 四、订单取消消息的代码开发 1.订单取消消息的使用 2.实时保存抖音平台过来的订单取消消息 3.具体的订单业务处理 总结 前言 这里主要是介绍一下抖音开放平台的这个消…

Redis数据结构之字典

目录 字典的应用场景 源码实现 hash算法的实现&#xff0c; hash冲突的解决 扩容缩容机制 哈希表的扩展与收缩条件 渐进式rehash 线程是否安全 Redis的dictht 和 Java(jdk1.8)的HashMap有什么区别 线程安全性 hash算法 解决hash冲突的方法 扩容机制 字典的应用场景…

Navicat的安装及如何将PG库内的数据导出CSV

一、Navicat的安装 1、安装 双击安装 Navicat Premium 12.0.18.0 简体中文 64位.exe 2、编辑连接&#xff0c;进行连接测试 具体配置信息可以进docker容器内查看 二、将PG库内的数据导出CSV 1、进入docker容器&#xff08;docker exec -it postgres_v3 bash&#xff09;&#…

中国开源年会报名 | StarRocks 极速湖仓分析的探索与实践

开源年度盛会 2022 第七届中国开源年会 (COSCon22) 来啦&#xff01; 本次年会将于 10 月 29-30 日由开源社举办&#xff0c;线上共设有1个主论坛和16个分论坛&#xff0c;线下分会场遍布成都、深圳、上海、北京等11个城市。StarRocks PMC 赵恒将代表社区出席大数据专场&#…

【Python】pycharm 和 vscode 编辑器设置模版

author: jwensh time: 2022.10.29 1. pycharm 模版 打开 PyCharm 设置界面&#xff0c;搜索 template&#xff0c;选择 File and Code Templates > Python Script 如下图所示&#xff0c;输入自定义模板代码 模版内容设置 #!/usr/bin/env python # -*- coding: utf-8 -*…

非遗在线商城小程序(后台PHP开发)

目 录 1绪论 1 1.1 选题及意义 1 1.2 国内外文献综述 2 1.3 研究的主要内容 3 2 系统工具 5 2.1 微信小程序 5 2.2 ThinkPHP 5 框架 7 2.3 RESTFul API 8 2.4 微信支付技术 10 2.5 MySQL数据库 12 3 系统分析 14 3.1 市场定位分析 14 3.2 可行性分析 14 3.3 需求目标 14 3.3.1 …

彻底理解Java并发:ReentrantLock锁

本篇内容包括&#xff1a;为什么使用 Lock、Lock 锁注意事项、ReentrantLock 和 synchronized 对比、ReentrantLock &#xff08;加锁、解锁、公平锁与非公平锁、ReentrantLock 如何实现可重入&#xff09;等内容。 一、Lock 锁 1、为什么使用 Lock synchronized 线程等待时间…

Filter快速入门、Filter执行流程、Filter使用细节、Listener概念、分类、ServletContextListener使用

文章目录FilterFilter快速入门Filter 执行流程Filter使用细节ListenerServletContextListener 使用Filter 概念&#xff1a;Filter表示过滤器&#xff0c;是 JavaWeb三大组件&#xff08;Servlet、Filter、Listener&#xff09;之一。过滤器可以把对资源的请求拦截下来&#x…

DASCTF X GFCTF 2022十月挑战赛web

前言 晚来的比赛web题解&#xff0c;这次buu的十月赛web部分的题目对于我来说质量还是蛮高的&#xff0c;因为这几天比较忙&#xff0c;一直没有去复现总结&#xff0c;不过该复现的还得复现&#xff0c;复现了这次比赛又能学到不少知识&#xff0c;嘿嘿嘿。 EasyPOP 考察ph…

Mega-Nerf学习笔记

Mega-NeRF:Scalable Construction of Large-Scale NeRFs for Virtual Fly-Throughs 主页&#xff1a;https://meganerf.cmusatyalab.org/ 论文&#xff1a;https://meganerf.cmusatyalab.org/resources/paper.pdf 代码&#xff1a;https://github.com/cmusatyalab/mega-nerf …

【设计模式】简单工厂模式

简单工厂模式–》工厂模式—》抽象工厂模式 文章目录简单工厂模式定义&#xff1a;各个角色1. 抽象产品类2. 具体产品类&#xff1a;3. 工厂类&#xff1a;简单工厂模式的核心。客户端设计图表未使用简单工厂模式&#xff1a;出现的问题&#xff1a;使用简单工厂模式&#xff1…

小熊派-FreeRTOS-点灯学习过程-20221029

一、前言准备 1、小熊派一个&#xff08;STM32L431RCT6&#xff09; 2、STM32CubeMX 3、keil5 4、小熊派的配套开发资料&#xff08;用于出问题的时候替换&#xff09; 二、实现过程 代码主要由STM32CubeMX生成&#xff0c;所以过程主要是配置CubeMX. 1、芯片选型 STM3…

用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)

目录 打包前置知识 一、什么是exe可执行文件&#xff1f; 二、为什么要将 Python 程序打包为 exe 可执行文件&#xff1f; 三、为什么 Python 程序不能直接运行呢&#xff1f; 四、我们用什么来打包 Python 文件呢&#xff1f; 五、打包有哪几种分类呢&#xff1f; 打包…