聊聊国产数据库TiDB相关知识,你学会了吗?

数据库 其他数据库
针对至少有千万行级别的大表,或者数据库schema的占空空间有T级别的数据量比较适合TiDB;如果数据存储规模少于500G且每秒查询量少或并发量小则建议使用mysql。

1、简介 

TiDB 是由PingCAP 公司研发设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,它结合了传统的关系型和非关系型数据库的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用等特性。

并提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案

2、TiDB的组成

TiDB主要包括三个核心组件:TiDB Server,PD Server和TiKV Server。下面简单给大家介绍一下。

图片

2.1 TiDB Server

图片

属于SQL 层,是对外暴露 MySQL 协议的连接 endpoint,主要 负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。TiDB 层本身是无状态的,可以启动多个 TiDB 实例,通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个 TiDB 实例上以达到负载均衡的效果。TiDB Server 本身并不存储数据,只负责解析SQL,将实际的数据读取请求转发给底层的存储节点 TiKV(或 TiFlash)

2.2 PD Server(PD)

图片

PD主要负责整个 TiDB 集群的元信息管理模块。

负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。

PD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点。

PD 由至少3个节点构成,拥有高可用的能力。PD 通过 Raft 协议保证数据的安全性。一般建议部署奇数个 PD 节点。

2.3 TiKV Server

图片

TiKV Server 主要负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。

存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range (从 StartKey 到EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region 。TiKV 使用 Raft协议做复制,保持数据的一致性和容灾。

3、TiDB的关键特性

3.1 高度兼容 MySQL

大部分情况下,不需要调整代码就可以轻松从MySQL迁移至TiDB数据库,分库分表后的MySQL集群也可以通过TiDB工具进行实时迁移。

3.2 水平弹性扩展

通过简单地增加新节点就可以实现TiDB的水平扩展,按业务需要扩展吞吐量或存储,轻松应对高并发、海量数据场景,按需的方式也可以节约不少的成本。

3.3 分布式事务

TiDB完全支持标准的 ACID 事务。

3.4 金融级别高可用

相比于传统主从复制方案,基于Raft的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复,不需要认为的介入处理。

3.5 一站式 HTAP 解决方案

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

3.6 云原生 SQL 数据库

TiDB是为云服务而设计的数据库,可以同 Kubernetes 容器化技术深度耦合,支持公有云、私有云和混合云。使安装部署、配置和维护变得十分简单。

4、适用场景

4.1 千万级以上数据存储

针对至少有千万行级别的大表,或者数据库schema的占空空间有T级别的数据量比较适合TiDB;如果数据存储规模少于500G且每秒查询量少或并发量小则建议使用mysql。

4.2 高并发

如果你的并发量高达十万以上,可以实用TiDB,省去了中间件和分库分表的麻烦。

4.3 运维人员不足

TiDB可以自动维护数据的强一致性和高可用,大大减少了数据库运维的工作。

责任编辑:武晓燕 来源: IT技术分享社区
相关推荐

2022-11-01 09:27:28

数据库国产运维

2023-01-29 08:08:34

并发库conc通用库

2024-08-21 08:27:30

扩展数据库服务器

2023-11-13 18:36:04

知识抽取NER

2023-07-03 07:20:50

2022-12-26 07:48:04

敏捷项目

2024-06-12 08:36:25

2024-03-05 10:09:16

restfulHTTPAPI

2023-07-10 08:36:21

工具pptword

2022-12-08 10:49:43

2022-09-26 08:49:11

Java架构CPU

2022-07-11 09:00:37

依赖配置文件Mybati

2024-08-19 10:24:14

2022-04-13 09:01:45

SASSCSS处理器

2023-03-07 07:50:15

Transactio事务代码

2024-11-08 08:56:01

2024-03-04 07:41:18

SpringAOPOOP​

2022-12-27 08:45:00

绘制菜单符号

2022-10-11 08:48:08

HTTP状态码浏览器

2023-06-05 08:36:04

SQL函数RANK()
点赞
收藏

51CTO技术栈公众号