#头条创作挑战赛#
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.1TiDB Server
属于SQL 层,是对外暴露 MySQL 协议的连接 endpoint,主要 负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。TiDB 层本身是无状态的,可以启动多个 TiDB 实例,通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个 TiDB 实例上以达到负载均衡的效果。TiDB Server 本身并不存储数据,只负责解析SQL,将实际的数据读取请求转发给底层的存储节点 TiKV(或 TiFlash)
2.2PD 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可以自动维护数据的强一致性和高可用,大大减少了数据库运维的工作。