TiDB存储引擎的初步认识

文章目录

  • TiDB简介
  • 分布式系统
  • CAP 理论
    • 一致性
    • 可用性
    • 分区容错性
  • 应用场景
  • 关系型模型
  • 事务
  • ACID 特性
    • 原子性
    • 一致性
    • 隔离性
    • 持久性
  • 与传统非分布式数据库架构对比
  • TiDB 分布式数据库整体架构

TiDB简介

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和MySQL 生态等重要特性。目标是为用户提供一站式 OLTP(Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

分布式系统

分布式系统是一种其组件位于不同的联网计算机上的系统,然后通过互相传递消息来进行通讯和协调,为了达到共同的目标,这些组件会相互作用;换句话说,分布式系统把需要进行大量计算的工程数据分割成若干个小块,由多台计算机分别进行计算和存储,然后将结果统一合并到数据结论的科学;本质上就是进行数据存储与计算的分治;

CAP 理论

一致性

指所有的节点在同一时间的数据一致性;
all nodes see the same data at the same time;

可用性

服务在正常响应时间内的可用;
reads and writes always succeed;

分区容错性

分布式系统在遇到某节点或网络分区故障的时候仍然能够对外提供满足一致性或可用性的服务;

应用场景

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

TiDB 采用多副本 + Multi-Raft 协议的方式将数据调度到不同的机房、机架、机器,当部分机器出现故障时系统可自动进行切换,确保系统的 RTO <= 30s 及 RPO = 0。

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

iDB 采用计算、存储分离的架构,可对计算、存储分别进行扩容和缩容,计算最大支持 512 节点,每个节点最大支持1000 并发,集群容量最大支持 PB 级别。

  • Real-time HTAP 场景

TiDB 在 4.0 版本中引入列存储引擎 TiFlash 结合行存储引擎TiKV 构建真正的 HTAP 数据库,在增加少量存储成本的情况下,可以在同一个系统中做联机交易处理、实时数据分析,极大地节省企业的成本。

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

业务通过 ETL 工具或者 TiDB 的同步工具将数据同步到
TiDB,在 TiDB 中可通过 SQL 直接生成报表。(ETL 是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据)

关系型模型

在传统的在线交易场景里,关系型模型仍然是标准;关系型数据库的关键在于一定要具备事务;

事务

事务的本质是:并发控制的单元,是用户定义的一个操作序
列;这些操作要么都做,要么都不做,是一个不可分割的工作单位;为了保证系统始终处于一个完整且正确的状态;

ACID 特性

原子性

事务包含的全部操作时一个不可分割的整体;要么全部执行,要么全部不执行;

一致性

事务的前后,所有的数据都保持一个一致的状态;不能违反数据的一致性检测;

隔离性

各个并发事务之间互相影响的程度;主要规定多个并发事务访问同一个数据资源,各个并发事务对该数据资源访问的行为;不同的隔离性是应对不同的现象(脏读、可重读、幻读等);

持久性

事务一旦完成要将数据所做的变更记录下来;包括数据存储和多副本的网络备份;

与传统非分布式数据库架构对比

  • 两者都支持 ACID、事务强一致性;
  • 分布式架构,组件解耦,拥有良好的扩展性,支持弹性的扩缩容;
  • 默认支持高可用,在少数副本失效的情况下,数据库能够自动进行故障转移,对业务透明;
  • 采用水平扩展,在大数据量、高吞吐的业务场景中具有先天优势;
  • 强项不在于轻量的简单 SQL 的响应速度,而在于大量高并发SQL 的吞吐;

TiDB 分布式数据库整体架构

  • 由多模块组成,各模块互相通信,组成完整的 TiDB 系统;
  • 前端 stateless、后端 stateful (Raft);
  • 兼容 MySQL;
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217929.shtml

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

相关文章

静态路由原理与配置

文章目录 静态路由原理与配置一、路由器的工作原理1、路由概述2、路由器的工作原理 二、路由表的形成1、路由表2、路由表的形成 三、静态路由和默认路由1、静态路由的缺点2、默认路由&#xff08;是特殊的静态路由&#xff09;3、查看路由表 四、路由器转发数据包的封装过程五、…

Django模型

一、model 文件中的类的建立&#xff1a; 对应的是数据库中的每个表&#xff0c;类中有什么字段&#xff0c;表就会对应的生成某个字段&#xff0c;主键id字段会自己生成&#xff1b; 数据库中的文件获取&#xff1a;只能通过模型类.objects来获取&#xff0c;不能通过模型类…

TikTok与虚拟现实的完美交融:全新娱乐时代的开启

TikTok&#xff0c;这个风靡全球的短视频平台&#xff0c;与虚拟现实&#xff08;VR&#xff09;技术的深度结合&#xff0c;为用户呈现了一场全新的娱乐盛宴。虚拟现实技术为TikTok带来了更丰富、更沉浸的用户体验&#xff0c;标志着全新娱乐时代的开启。本文将深入探讨TikTok…

数据结构与算法-动态规划-买卖股票的最佳时机

买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交…

C# WPF上位机开发(内嵌虚拟机的软件开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 学习过halcon的同学都知道&#xff0c;它不仅有很多的图像算子可以使用&#xff0c;而且调试很方便。每一步骤的调试结果&#xff0c;都可以看到对…

C语言内存池的使用场景和代码示例

当然可以。在C语言中&#xff0c;内存池是一种用于管理内存分配的技术。使用内存池可以避免频繁地申请和释放内存&#xff0c;从而提高内存的使用效率&#xff0c;并减少内存碎片。内存池的使用场景主要包括需要频繁分配和释放相同大小的内存块的情况。下面是一个简单的C语言代…

什么是云际计算?SD-WAN在云际计算中的作用是什么?

在当今数字化时代&#xff0c;云计算已经成为企业处理数据和应用程序的主要方式。然而&#xff0c;随着物联网设备数量的增加和对实时性要求的提高&#xff0c;传统的集中式云计算模型面临一些挑战。为了解决这些问题&#xff0c;云际计算&#xff08;Edge Computing&#xff0…

TDengine Kafka Connector将 Kafka 中指定 topic 的数据(批量或实时)同步到 TDengine

教程放在这里&#xff1a;TDengine Java Connector&#xff0c;官方文档已经写的很清晰了&#xff0c;不再赘述。 这里记录一下踩坑&#xff1a; 1.报错 java.lang.UnsatisfiedLinkError: no taos in java.library.pathat java.lang.ClassLoader.loadLibrary(ClassLoader.j…

亚马逊、速卖通、虾皮等平台有哪些测评补单方案,哪个比较好用

随着全球电子商务的迅速发展&#xff0c;跨境电商环境的潜力和机遇日益显现。跨境卖家们可以更便捷地将产品销售到全球市场&#xff0c;但同时也面临着更激烈的竞争、更严格的规定和更高的运营成本等挑战。在这个环境中&#xff0c;如何抓住机遇并克服挑战&#xff0c;成为了所…

Harmony OS基本介绍

作为华为最新的操作系统&#xff0c;Harmony OS在全球范围内引起了广泛的关注和探讨。它是一款开放、协同、可定制的智能终端操作系统&#xff0c;可以在不同的设备上实现无缝的互联互通。在本篇文章中&#xff0c;我们将对Harmony OS的使用做一个总结&#xff0c;分别从以下几…

数据库系统相关概念

数据&#xff1a;描述事务的符号记录。 数据库(DB)&#xff1a;按一定的数据模型组织&#xff0c;描述和存储在计算机内的&#xff0c;有组织的&#xff0c;可共享的数据集合。 数据库管理系统(DBMS)&#xff1a;位于用户和操作系统之间的一层数据管理软件。主要功能包括&#…

基于Qt的蓝牙Bluetooth在ubuntu实现模拟

​# 前言 Qt 官方提供了蓝牙的相关类和 API 函数,也提供了相关的例程给我们参考。笔者根据 Qt官方的例程编写出适合我们 Ubuntu 和 gec6818开发板的例程。注意 Windows 上不能使用 Qt 的蓝牙例程,因为底层需要有 BlueZ协议栈,而 Windows 没有。Windows 可能需要去移植。笔者…

Java 值传递、引用传递

开始之前&#xff0c;我们先来搞懂下面这两个概念&#xff1a; 形参&实参值传递&引用传递 方法的定义可能会用到 参数&#xff08;有参的方法&#xff09;&#xff0c;参数在程序语言中分为&#xff1a; 实参&#xff08;实际参数&#xff0c;Arguments&#xff09;…

js中常用的字符串操作!!!

1.字符串的长度 // 字符串常用的操作 let str1 "qwasaertrayuasdf"; let str2 "asdfzcxfv"; // 1.字符串的长度 console.log(str1.length);2. charAt() : 返回指定索引位置的字符 // 字符串常用的操作 let str1 "qwasaertrayuasdf"; let str2…

jemeter,断言:响应断言、Json断言

一、响应断言 接口A请求正常返回值如下&#xff1a; {"status": 10013, "message": "user sign timeout"} 在该接口下创建【响应断言】元件&#xff0c;配置如下&#xff1a; 若断言成功&#xff0c;则查看结果树的接口显示绿色&#xff0c;若…

python自动化测试实战 —— 自动化测试框架的实例

软件测试专栏 感兴趣可看&#xff1a;软件测试专栏 自动化测试学习部分源码 python自动化测试相关知识&#xff1a; 【如何学习Python自动化测试】—— 自动化测试环境搭建 【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更…

python+pytest接口自动化(10)-session会话保持

在接口测试的过程中&#xff0c;经常会遇到有些接口需要在登录的状态下才能请求&#xff0c;否则会提示请登录&#xff0c;那么怎样解决呢&#xff1f; 上一篇文章我们介绍了Cookie绕过登录&#xff0c;其实这就是保持登录状态的方法之一。 另外一种方式则是通过session进行会…

【python】魔术方法大全——基础篇

什么是魔术方法 所谓魔法方法&#xff0c;它的官方的名字实际上叫special method&#xff0c;是Python的一种高级语法&#xff0c;允许你在类中自定义函数&#xff0c;并绑定到类的特殊方法中。比如在类A中自定义__str__()函数&#xff0c;则在调用str(A())时&#xff0c;会自动…

MySQL笔记-第12章_MySQL数据类型精讲

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第12章_MySQL数据类型精讲1. MySQL中的数据类型2. 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL 2.3 适用场景2.4…

RabbitMQ Streams 详解

RabbitMQ Streams是一种持久复制数据结构&#xff0c;可以完成与队列相同的任务&#xff1a;它们缓冲来自生产者的消息&#xff0c;这些消息由消费者读取。然而&#xff0c;流与队列的区别在于两个重要方面&#xff1a;消息的存储和消费方式。 Streams为仅追加的消息日志建模&a…