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

这位是技术销售部的小原。

我将介绍开源(OSS)分布式 SQL 数据库“ TiDB”

TiDB 概述

TiDB开源开发者PingCAP,目前由CNCF

■ 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
加载中...
6票,平均分:1.00/16
5,101
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

小原

他的职业生涯始于电信行业,担任销售员,负责实施企业网络服务、办公设备和群件等 IT 产品。

之后,他曾在一家系统集成商旗下的数据中心公司担任物理服务器和托管服务的售前工程师,以及基于 SaaS 的 SFA/CRM 和 B2B 电子商务的客户工程师,之后加入 Beyond 公司,目前仍在 Beyond 工作。

我目前驻扎在中国(深圳),我的日常活动是看中国电视剧和比尔比尔。

资格证书:二级簿记员