【数据存储】TIDB和MySQL的区别

news2024/11/16 2:44:29

1.TIDB和MySQL对比

对比内容MySQLTiDB
架构设计一个传统的单机数据库系统,采用主从复制和分区表等方式来实现水平扩展一个分布式的 NewSQL 数据库,采用分布式存储和分布式事务等技术,支持水平扩展和高可用性
事务支持 InnoDB 存储引擎来支持事务处理,支持 ACID 特性支持 ACID 特性,并在分布式环境下提供了分布式事务的支持
水平扩展水平扩展能力较弱,通常通过主从复制和分区表等方式进行扩展通过简单地增加节点来实现水平扩展,支持自动数据分片和负载均衡,适合大规模数据存储和处理
一致性一致性依赖于配置和复制机制,可能存在数据同步延迟或数据不一致的情况基于 Raft 算法实现了多副本之间的强一致性,确保数据的一致性和可靠性
SQL兼容性关系型数据库的代表,支持标准的 SQL 语法兼容 MySQL 协议和 SQL 语法,使得迁移和使用更加方便
自动化运维TiDB Ansible 工具和 TiDB Lightning 等工具,支持快速部署、备份恢复和在线迁移等功能,简化了运维管理借助第三方工具或脚本来实现自动化运维
存储引擎支持多种数据存储引擎,如InnoDB、MyISAM等使用TiKV作为默认的数据存储引擎,TiKV是一种基于RocksDB的分布式键值存储引擎

小结:TiDB 是一种分布式的 NewSQL 数据库,具有水平扩展、高可用性和分布式事务支持等特点,适合处理大规模数据和高并发的场景。而 MySQL 则是一种传统的关系型数据库系统,适用于中小型应用和对事务一致性要求不是特别高的场景。选择使用哪种数据库取决于具体的业务需求和技术架构

2.什么是TiKV

TiKV 是一个分布式事务型的键值数据库,提供了满足 ACID 约束的分布式事务接口,并且通过 Raft 协议 保证了多副本数据一致性以及高可用。TiKV 作为 TiDB 的存储层,为用户写入 TiDB 的数据提供了持久化以及读写服务,同时还存储了 TiDB 的统计信息数据。

2.1 TiKV整体架构

与传统的整节点备份方式不同,TiKV 参考 Spanner 设计了 multi-raft-group 的副本机制。将数据按照 key 的范围划分成大致相等的切片(下文统称为 Region),每一个切片会有多个副本(通常是 3 个),其中一个副本是 Leader,提供读写服务。TiKV 通过 PD 对这些 Region 以及副本进行调度,以保证数据和读写负载都均匀地分散在各个 TiKV 上,这样的设计保证了整个集群资源的充分利用并且可以随着机器数量的增加水平扩展。

2.2 Region 与 RocksDB

虽然 TiKV 将数据按照范围切割成了多个 Region,但是同一个节点的所有 Region 数据仍然是不加区分地存储于同一个 RocksDB 实例上,而用于 Raft 协议复制所需要的日志则存储于另一个 RocksDB 实例。这样设计的原因是因为随机 I/O 的性能远低于顺序 I/O,所以 TiKV 使用同一个 RocksDB 实例来存储这些数据,以便不同 Region 的写入可以合并在一次 I/O 中。

2.3Region 与 Raft 协议

Region 与副本之间通过 Raft 协议来维持数据一致性,任何写请求都只能在 Leader 上写入,并且需要写入多数副本后(默认配置为 3 副本,即所有请求必须至少写入两个副本成功)才会返回客户端写入成功。

当某个 Region 的大小超过一定限制(默认是 144MB)后,TiKV 会将它分裂为两个或者更多个 Region,以保证各个 Region 的大小是大致接近的,这样更有利于 PD 进行调度决策。同样,当某个 Region 因为大量的删除请求导致 Region 的大小变得更小时,TiKV 会将比较小的两个相邻 Region 合并为一个。

当 PD 需要把某个 Region 的一个副本从一个 TiKV 节点调度到另一个上面时,PD 会先为这个 Raft Group 在目标节点上增加一个 Learner 副本(虽然会复制 Leader 的数据,但是不会计入写请求的多数副本中)。当这个 Learner 副本的进度大致追上 Leader 副本时,Leader 会将它变更为 Follower,之后再移除操作节点的 Follower 副本,这样就完成了 Region 副本的一次调度。

Leader 副本的调度原理也类似,不过需要在目标节点的 Learner 副本变为 Follower 副本后,再执行一次 Leader Transfer,让该 Follower 主动发起一次选举成为新 Leader,之后新 Leader 负责删除旧 Leader 这个副本。

2.4 分布式事务

TiKV 支持分布式事务,用户(或者 TiDB)可以一次性写入多个 key-value 而不必关心这些 key-value 是否处于同一个数据切片 (Region) 上,TiKV 通过两阶段提交保证了这些读写请求的 ACID 约束,详见 TiDB 乐观事务模型。

2.5 计算加速

TiKV 通过协处理器 (Coprocessor) 可以为 TiDB 分担一部分计算:TiDB 会将可以由存储层分担的计算下推。能否下推取决于 TiKV 是否可以支持相关下推。计算单元仍然是以 Region 为单位,即 TiKV 的一个 Coprocessor 计算请求中不会计算超过一个 Region 的数据。

参考:TiKV 简介 | PingCAP 归档文档站

3.什么是RocksDB

RocksDB是一个高性能、可扩展、嵌入式、持久化、可靠、易用和可定制的键值存储库。它采用LSM树数据结构,支持高吞吐量的写入和快速的范围查询,可被嵌入到应用程序中,实现持久化存储,支持水平扩展,可以在多台服务器上部署,实现集群化存储,具有高度的可靠性和稳定性,易于使用并可以根据需求进行定制和优化。它广泛应用于互联网公司和数据密集型应用中。RocksDB使用了许多技术来实现其高性能和可靠性。

3.1 RocksDB主要的技术点

3.1.2 LSM树 

 LSM树(Log-Structured Merge Tree)是一种基于日志结构的数据结构,能够高效地存储和更新键值数据。它将数据分为多个层,每一层都是一个有序的键值存储文件,其中较旧的数据位于较低的层,较新的数据位于较高的层。当数据被写入时,它首先被写入到一个内存中的结构,称为内存表(MemTable),然后在后台异步地将内存表与磁盘上的某个层合并,最终生成新的文件。这种设计使得RocksDB能够高效地处理大量写入操作,并支持快速的范围查询。

3.1.2 压缩

RocksDB使用了多种压缩算法来压缩数据文件,减小了磁盘空间的占用,提高了存储效率。压缩算法包括LZ4、Snappy、Zlib等。

3.1.3 并发控制

RocksDB使用多种技术来实现并发控制,以支持高并发读写操作。例如,它使用锁、读写锁、CAS等机制来保证多线程并发的正确性和一致性。

3.1.4 内存管理

RocksDB使用了多种技术来管理内存,以保证高效的内存使用和低延迟的响应。例如,它使用了对象池、内存池等技术来减少内存分配和释放的开销,使用了缓存技术来缓存热点数据,使用了内存映射技术来快速加载数据文件等。

3.1.5 日志系统

RocksDB使用了可插拔的日志系统,可以将日志输出到不同的目标,例如文件、控制台、网络等,以支持不同的日志需求。

3.1.6 文件格式

RocksDB使用了一种自定义的文件格式,可以高效地存储键值数据,并支持快速的数据访问和查询。这种格式将数据划分为多个块,每个块包含多个键值对,每个块都有一个索引来支持快速的查找和范围查询。

参考:深入RocksDB原理 - 知乎

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

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

相关文章

开发者的瑞士军刀:DevToys

DevToys: 一站式开发者工具箱,打造高效创意编程体验,让代码生活更加得心应手!—— 精选真开源,释放新价值。 概览 不知道大家是否在windows系统中使用过PowerToys?这是微软研发的一项免费实用的系统工具套…

Selenium 自动化 —— 定位页面元素

更多内容请关注我的 Selenium 自动化 专栏: 入门和 Hello World 实例使用WebDriverManager自动下载驱动Selenium IDE录制、回放、导出Java源码浏览器窗口操作切换浏览器窗口 使用 Selenium 做自动化,我们不仅仅是打开一个网页,这只是万里长…

高防服务器、高防IP、高防CDN的工作原理是什么

高防IP高防CDN我们先科普一下是什么是高防。“高防”,顾名思义,就犹如网络上加了类似像盾牌一样很高的防御,主要是指IDC领域的IDC机房或者线路有防御DDOS能力。 高防服务器主要是比普通服务器多了防御服务,一般都是在机房出口架设…

Oracle 控制文件详解

1、控制文件存储的数据信息 1)数据库名称和数据库唯一标识符(DBID) 2)创建数据库的时间戳 3)有关数据文件、联机重做日志文件、归档重做日志文件的信息 4)表空间信息 5)检查点信息 6)日志序列号…

SAP BTP云上一个JVM与DB Connection纠缠的案例

前言 最近在CF (Cloud Foundry) 云平台上遇到一个比较经典的案例。因为牵扯到JVM (app进程)与数据库连接两大块,稍有不慎,很容易引起不快。 在云环境下,有时候相互扯皮的事蛮多。如果是DB的问题,就会找DB…

Reactor设计模式和Reactor模型

Reactor设计模式 翻译过来就是反应堆,所以Reactor设计模式本质是基于事件驱动。 角色 Handle(事件)EventHandler(事件处理器)ConcreteEventHandler(具体事件处理器)Synchronous Event Demult…

RK3568平台 iperf3测试网络性能

一.iperf3简介 iperf是一款开源的网络性能测试工具,主要用于测量TCP和UDP带宽性能。它可以在不同的操作系统上运行,包括Windows、Linux、macOS等。iperf具有简单易用、功能强大、高度可配置等特点,广泛应用于网络性能测试、网络故障诊断和网…

线性代数 - 应该学啥 以及哪些可以交给计算机

AI很热,所以小伙伴们不免要温故知新旧时噩梦 - 线代。 (十几年前,还有一个逼着大家梦回课堂的风口,图形学。) 这个真的不是什么美好的回忆,且不说老师的口音,也不说教材的云山雾绕,单…

重构销售话术和知识库,容联云找到了大模型的“钉子”

科技云报道原创。 从ChatGPT诞生起,大模型在营销、客服等场景的落地就被予以众望。然而在经历了一年多的“百模大战”洗礼之后,人们发现无论是算力成本还是内容生成的安全合规问题,都让大模型很难直接应用于机器与人对话的实际业务中。 这其…

高效物联网连接技术创新:ECWAN边缘协同自组网的未来——基于ChirpLAN窄带扩频技术的无线混合组网

物联网是指将各种物理设备通过互联网进行连接和通信的技术。它是一个庞大的网络,由传感器、设备、网络和云服务组成,旨在实现对物体的远程监测、控制和数据采集。 基于ChirpLAN窄带扩频技术的无线混合组网协议ChirpLAN,ChirpLAN是基于其自有的…

基于51单片机的客车汽车安全气囊控制器Proteus仿真

地址:https://pan.baidu.com/s/10enj1EYm_0Z8f_19Sz_eCQ 提取码:1234 仿真图: 芯片/模块的特点: AT89C52简介: AT89C52是一款经典的8位单片机,是意法半导体(STMicroelectronics)公…

git笔记之撤销、回退、reset方面的笔记

git笔记之撤销、回退、reset方面的笔记 code review! 文章目录 git笔记之撤销、回退、reset方面的笔记1.git 已经commit了,还没push,如何撤销到初始状态git reset --soft HEAD~1git reset HEAD~1(等同于 git reset --mixed HEAD~1&#xff0…

腾讯云优惠券获取方式(腾讯云优惠券领取入口)

随着云计算的普及,越来越多的企业和个人开始选择云服务。腾讯云作为国内领先的云服务提供商,不仅提供了稳定可靠的云服务,还经常推出各种优惠活动,其中就包括腾讯云优惠券。本文将详细介绍腾讯云优惠券的获取方式及领取入口&#…

STL----vector的模拟实现

1. vector的介绍与使用 1.1 vector的介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可…

西安石油大学数学建模校赛培训(2)matlab的使用

1.1.MATLAB是什么? MATLAB是MathWorks公司推出的一套高性能数值分析计算软件,其名字来源于"Matrix Laboratory"(矩阵实验室)的缩写。它将矩阵运算、数值分析、图形处理、编程技术等功能集成在一起,为科学计…

Linux内核err.h文件分析

在阅读和编写内核相关的代码时,经常会看到IS_ERR、ERR_PTR等函数。这些函数在内核头文件的err.h中。以我服务器的代码为例,内核版本为5.15。 这个文件的代码如下: /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_ERR_H #define _L…

【漏洞复现】商混ERP系统 DictionaryEdit.aspx接口处存在SQL注入漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

SpringBoot学习之ElasticSearch下载安装和启动(Windows版)(三十)

本文先写windows下的下载安装和启动,后续有时间再补充其他环境下(Mac、Linux、Docker)的,这里我们后续对ElasticSearch简称为ES,读者习惯这一称呼就好。 一,ES下载 可以百度【ElasticSearch官网】或者直接点击这里的ES官网下载地址:​​​​​ Download Elasticsearch…

Python制作数据可视化大屏

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

平台介绍-搭建赛事运营平台(2)

平台建设的首期就有两个品牌入驻,品牌J和品牌K,第三个品牌正在协商中。 作为一个统一的共享平台,首先要解决的是品牌直接的隔离。 方案一:同服务程序、同库,同表。表中通过字段区分品牌 这是最传统的解决方案。初期开发…