面对海量数据和高并发场景,传统单机数据库正在面临前所未有的挑战,而TiDB作为一款开源的分布式关系型数据库,正在以其独特的架构设计解决这些难题。
一、什么是TiDB?
TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 的融合型分布式数据库产品。
它具备水平扩容或者缩容、金融级高可用、实时HTAP、云原生的分布式数据库、兼容MySQL协议和MySQL生态等重要特性。
TiDB采用与Google Spanner相似的架构,但更加偏重于强一致性和高可用性。其核心特性包括支持SQL、支持在线弹性扩展、支持分布式事务、提供一致性读写。
二、TiDB的核心特性
1. 一键水平扩缩容
得益于TiDB存储计算分离的架构设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用运维人员透明。
通过简单地增加新节点即可实现TiDB的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。
2. 金融级高可用
数据采用多副本存储,数据副本通过Multi-Raft协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。
TiDB使用多副本进行数据存储,并依赖Raft多数派选举算法确保数据100%强一致性和高可用,副本故障时自动切换,无需人工介入。
3. 实时HTAP
TiDB提供行存储引擎TiKV、列存储引擎TiFlash两款存储引擎,TiFlash通过Multi-Raft Learner协议实时从TiKV复制数据,确保行存储引擎TiKV和列存储引擎TiFlash之间的数据强一致。
这使得TiDB同时支持在线事务处理和在线分析处理,满足业务对实时数据处理的需求。
4. 高度兼容MySQL
TiDB的通讯协议与MySQL高度兼容,你可以轻松地像使用单机数据库一样,用TiDB替换MySQL来支持你的业务,而几乎无需修改代码。
MySQL的客户端管理工具及社区所有的周边工具都可直接接入,极大降低学习和使用成本。
三、TiDB的适用场景
- 金融行业场景:金融行业对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高。TiDB采用多副本+Multi-Raft协议的方式将数据调度到不同的机房、机架、机器。
- 海量数据及高并发的OLTP场景:数据爆炸性的增长对数据库的容量提出了更高要求。TiDB采用计算、存储分离的架构,可对计算、存储分别进行扩缩容,计算最大支持512节点,每个节点最大支持1000并发,集群容量最大支持PB级别。
- 实时HTAP场景:TiDB在4.0版本中引入列存储引擎TiFlash,结合行存储引擎TiKV构建真正的HTAP数据库,在增加少量存储成本的情况下,可以在同一个系统中做联机交易处理、实时数据分析。
- 数据汇聚、二次加工处理的场景:与Hadoop相比,TiDB要简单得多,业务通过ETL工具或者TiDB的同步工具将数据同步到TiDB,在TiDB中可通过SQL直接生成报表。
四、快速上手TiDB
环境准备与安装
TiDB可以使用TiUP工具快速安装,这是官方推荐的安装方式。
首先下载并安装TiUP:
bash
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
安装完成后,声明全局环境变量:
bash
source ${your_shell_profile}
启动集群
使用以下命令快速启动一个测试集群:
bash
tiup playground
这个命令会运行最新版本的TiDB集群,默认包含TiDB、TiKV、PD和TiFlash实例各1个。
如果需要指定版本和组件数量,可以使用:
bash
tiup playground v7.5.0 --db 2 --pd 3 --kv 3
连接TiDB
启动成功后,你可以使用MySQL客户端连接TiDB:
bash
mysql --comments --host 127.0.0.1 --port 4000 -u root
基本操作
连接成功后,可以执行SQL语句创建数据库和表:
sql
CREATE DATABASE IF NOT EXISTS test_db;
USE test_db;
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(255));
INSERT INTO users (id, name) VALUES (1, 'Alice'), (2, 'Bob');
SELECT * FROM users WHERE id = 1;
TiDB兼容大部分MySQL语法,所以你可以使用标准的SQL语句进行数据操作。
五、TiDB与传统MySQL的对比
与传统的单机MySQL相比,TiDB具有明显优势:
- 扩展性:TiDB采用分布式架构,可以方便自由地增加节点来扩展存算能力,而MySQL则需要通过定向策略如中间件路由或读写分离等方式来增加节点以提升性能。
- 写入性能:在数据量达到千万级以上时,TiDB的写入性能优于MySQL,因为MySQL在大容量下无法均匀分布到其他服务器,导致B+树高度过高进而影响写入性能。
- 复杂SQL处理能力:TiDB在复杂SQL处理方面显著优于MySQL,大部分过滤计算可以下推到TiKV充分利用分布式能力。
六、总结
TiDB作为国产分布式数据库的代表,凭借其水平扩展、强一致性、高可用性和MySQL兼容性等重要特性,已经成为解决海量数据和高并发场景下数据库问题的优秀解决方案。
无论是金融、电商还是物联网行业,只要面临数据量巨大、并发高的挑战,TiDB都值得考虑。
通过本文的介绍,相信你已经对TiDB有了基本的了解,现在就可以按照快速上手指南,亲身体验这款强大的分布式数据库了。