关于与 MySQL 兼容的分布式 SQL 数据库“TiDB”[OSS]

目录
这位是技术销售部的小原。
我将介绍开源(OSS)分布式 SQL 数据库“ TiDB”
TiDB 概述

■ TiDB 是一个开源的 NewSQL 数据库,支持 HTAP(混合事务和分析处理)工作负载。
■它兼容MySQL,具备水平扩展、强一致性和高可用性。它支持OLTP(在线事务处理)和OLAP(在线分析处理),并支持HTAP,适用于各种需要高可用性和强一致性以及大规模数据的用例。
■ 例如,日本公司 PayPay(一家提供二维码支付服务的公司)的基础设施中也采用了二维码技术。
◇ 引述:支付平台工程师支持交易
TiDB 功能
水平分布式横向扩展/横向缩减
TiDB 架构设计将计算与存储分离,允许计算和存储容量根据需要独立地在线扩展和缩减。
多副本和高可用性
- 将数据存储在多个副本上的副本使用 Multi-Raft 协议来检索事务日志。
由于事务只有在数据成功写入大多数副本后才会提交,因此即使少数副本发生故障,也能提供强大的一致性和可用性保证。
您可以根据不同灾难容忍级别的要求,配置区域和副本的数量。
实时HTA
TiDB提供两种存储引擎: TiKV (行式存储引擎)和TiFlash
TiFlash 使用 Multi-Raft Learner 协议实时复制来自 TiKV 的数据,并确保 TiKV 基于行的存储引擎和 TiFlash 列式存储引擎之间的数据一致性。
可以根据需要将 TiKV 和 TiFlash 部署在不同的机器上,以解决 HTAP 资源隔离问题。
云原生分布式数据库
TiDB 是一个专为云设计的分布式数据库,在云平台上提供灵活的可扩展性、可靠性和安全性,使用户能够灵活地扩展 TiDB 以满足其工作负载需求。
TiDB 至少为每个数据集准备了三个副本,可以将其调度到不同的云可用区,以应对整个数据中心的故障。
TiDB Operator可帮助您在 Kubernetes 上管理 TiDB,并自动执行与操作 TiDB 集群相关的任务,从而轻松地在提供托管 Kubernetes 的云上部署 TiDB。
TiDB Cloud 完全托管TiDB本身,只需点击几下即可在云端部署和运行TiDB集群。
*TiDB Cloud是一项托管服务(付费服务),可在AWS、Azure和GCP等云平台上使用。
兼容 MySQL 5.7 协议和 MySQL 生态系统
TiDB 与 MySQL 5.7 协议、常见的 MySQL 功能和 MySQL 生态系统兼容,因此将现有应用程序迁移到 TiDB 只需要进行少量代码更改,而不需要进行大量更改。
TiDB还提供了数据迁移工具
TiDB架构
◇ 引文: TiDB 架构
作为分布式数据库,TiDB 由多个相互通信的组件构成,形成完整的 TiDB 系统。
TiDB 服务器
TiDB 服务器是一个无状态 SQL 层,它向外部暴露 MySQL 协议的连接端点。TiDB 服务器接收 SQL 请求,执行 SQL 分析和优化,最终生成分布式执行计划。
它具有水平可扩展性,并通过 Linux 虚拟服务器 (LVS)、HAProxy 和 F5 等负载均衡组件提供与外部世界的统一接口。它不存储数据,专门用于计算和 SQL 分析,并将实际的数据读取请求发送到 TiKV 节点(或 TiFlash 节点)。
PD(放置驱动程序)服务器
PD 服务器是一个由至少三个节点组成的组件,负责管理整个集群的元数据。
它存储每个 TiKV 节点的实时数据分发元数据和整个 TiDB 集群的拓扑结构,提供 TiDB 控制面板管理界面,并为分布式事务分配事务 ID。
PD 服务器不仅存储集群元数据,还根据 TiKV 节点实时报告的数据分发状态,向特定的 TiKV 节点发送数据调度命令。
存储服务器
◇ TiKV 服务器
- TiKV 是一个分布式事务键值存储引擎,TiKV 服务器负责存储数据。
每个区域存储特定键值范围的数据,该范围是 StartKey 和 EndKey 之间的左闭右开区间,每个 TiKV 节点拥有多个区域。TiKV API 原生支持键值对级别的分布式事务,并且默认支持快照隔离级别。
TiDB 服务器处理完 SQL 语句后,会将 SQL 执行计划转换为对 TiKV API 的实际调用。数据存储在 TiKV 中,所有 TiKV 中的数据都会自动在多个副本(默认三个)之间维护,这使得 TiKV 本身就具有高可用性,并支持自动故障转移。
◇ TiFlash 服务器
TiFlash 服务器是一种特殊类型的存储服务器。与常规的 TiKV 节点不同,TiFlash 按列存储数据,主要用于加速分析处理。
概括
它是一款高可用性、开源、水平分布式且与 MySQL 兼容的服务,因此可以考虑将其作为社交游戏和电子商务网站等 Web 服务的数据库。
6
