欢迎来到彩壳资讯
彩壳资讯
当前位置:彩壳资讯 > 生活

什么是TiDB

日期:2023-10-04 21:50

  TiDB是一种新型分布式数据库,结合了传统关系数据库和NoSQL数据库的特点。设计上还追求无限水平扩展、强一致性和高可用性,支持分布式事务处理。

  TiDB是一种新型分布式数据库,结合了传统关系数据库和NoSQL数据库的特点。

  

  TiDB是基于Google的Google Spanner/F1论文设计的开源分布式数据库,Spanner/F1是Google开发的可扩展、多版本、全球分布、同步复制的数据库。

  TiDB是第一个在全球范围内分发数据并支持外部一致分布式事务的系统。因此TiDB在设计时也追求无限水平扩展,具有强一致性和高可用性,支持分布式事务的处理。

  同时,TiDE旨在为在线事务处理(OnlineTransactionalProcessing,OLTP)和在线分析处理(OnlineAnalyticalProcessing,OLAP)场景提供一站式解决方案,支持MySQL数据库数据轻松迁移到TiDB。 MySQL集群包括数据库、表也可以通过工具实时迁移。

  TiDB具有无限水平扩展和高可用性的特点。只需添加新节点即可扩展计算和存储能力,轻松应对高并发、海量数据应用场景。

  TiDB 整体架构参考了 Google Spanner/F1 的设计,也分为 TiDB 和 TiKV 上下两层。

  TiDB对应的是Google F1,它是一个无状态的SQL层,负责与客户端交互。它向客户端体现了MySQL网络协议,客户端需要通过本地负载均衡器将SQL请求转发给客户端。 TiDB 在本地或最近的数据中心提供服务器。

  TiDB 服务器负责解析用户的 SQL 语句,生成分布式查询计划,并将其翻译为底层的 Key-Value 操作并发送给 TiKV。 TiKV 是数据实际存储的地方,对应 Google Spanner,它是一个分布式键值数据库,支持弹性水平扩展、自动容灾和故障转移、ACID 跨行事务。

  此外,TiDB架构使用PD集群来管理整个分布式数据库。 PD 服务器以 Region 为单位在 TiKV 节点之间进行调度,并将部分数据迁移到新添加的节点上,完成集群调度和负载均衡。

  TiDB Server完成与客户端的交互,兼容大部分MySQL语法,属于SQL层。

  在集群中,多个客户端首先通过负载均衡组件将SQL请求传输到不同的TiDB Server。 TiDB Server负责解析SQL请求并获取请求内容;然后进行合法性验证和类型推导;然后进行查询优化,包括逻辑优化和物理优化。优化完成后,执行器搭建;最后从 TiKV 中取出数据进行计算,并将最终结果反馈给客户端。

  TiDB Server 是无状态的,每个 TiDB Server 都是平等的。它本身不存储数据,只负责计算,可以无限制地水平扩展。

  当集群中单个TiDB Server实例出现故障时,您可以重启该实例或部署新实例,以提高集群的可用性。

  TiKV Server 主要负责数据存储。它是一个提供交​​易的分布式键值(Key-Value)存储引擎。它存储键值对(Key-Valuepairs),并根据Key的二进制顺序进行操作。顺序存储。

  TiKV Server 将整个 Key-Value 空间划分为很多段,每个段是一系列连续的 Key,这个段称为 Region。

  TiKV Server 以 Region 作为存储数据的基本单位,每个 Region 负责存储一定大小的数据。每个 TiKV Server 负责多个 Region,并使用 Raft 协议对每个 Region 进行备份,可用于维护数据一致性和数据容灾,并通过 PD Server 进行负载均衡调度。

  PD Server是TiDB的全球中央控制节点。它部署在集群中,负责整个集群的调度,如数据迁移、负载均衡等。它还负责生成全局 ID 和全局时间戳。 TSO生成等

  PD 还保存了整个集群 TiKV 的元信息,即某个 key 存储在哪个 TiKV 节点上,并负责为 TiDB Server 提供路由功能。

关灯