01
你好,TiDB
近段时间TiDB的资讯不说是铺天盖地,那也快到随处可见的程度了,今天就来聊一聊目前国产数据库中较为火热的产品---TiDB。
TiDB 是一款开源分布式关系型数据库,由 PingCAP(北京平凯星辰科技发展有限公司)研发,TiDB的名字由元素周期表里的元素钛而来,因为钛金属有很强的防腐蚀性,代表数据库的稳定性。2015年获得天使轮投资成立PingCAP,1 年前也就是 2018 年 9 月,PingCAP 完成 C 轮 5000 万美元融资,公司主页为www.pingcap.com。
目前TiDB已经建立了一定的生态环境,TiDB 现已被 500 余家不同行业的领先企业应用在实际生产环境。如金融业的北京银行、平安科技、贝壳金服、华泰证券及360金融等,互联网行业的知乎、小米、小红书、今日头条等,除金融和互联网行业外还触及了游戏和大型企业,具体案例可通过 PingCAP 主页了解。
02
TiDB的定位
“TiDB 是一款定位于在线事务处理/在线分析处理(HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。”
设计目标:TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析可以通过 TiSpark 项目来完成。
设计灵感:来源于Google 发表的一系列关于新一代分布式数据库 Spanner 和 F1 的论文以及相关的学术界的进展。
上一段内容摘自 PingCAP 主页,在 PingCAP University 在线课程中,黄东旭老师在介绍中提到“希望用NoSQL分布式可扩展的能力与传统的SQL数据库结合,做一种新形态的数据库,看起来像传统的Oracle、MySQL,同时又可以像NoSQL一样支持水平扩展”,其实这句话就最准确的概括了我们要了解的TiDB。
03
TiDB的特性及优势
TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。无限水平扩展是 TiDB 的一大特点,这里所说的水平扩展包括两方面:计算能力和存储能力。TiDB所具备的特性概括如下:TiDB对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力。
04
TiDB解决的痛点
TiDB解决了众多企业面临的单点容量限制问题,它可以让用户摆脱使用分库分表和中间件的困扰,TiDB 对业务没有任何侵入性,是传统的数据库中间件、数据库分库分表等优雅的替换方案。分布式的 TiDB 可随着你的数据增长而无缝地水平扩展,只需要通过增加更多的机器来满足业务增长需要,应用层可以不用关心存储的容量和吞吐。TiDB 根据存储、网络、距离等因素,动态进行负载均衡调整,以保证更优的读写性能。
数据安全方面TiDB支持故障自恢复及异地多活,TiDB 使用多副本进行数据存储,并依赖业界最先进的 Raft 多数派选举算法确保数据 100% 强一致性和高可用。副本可跨地域部署在不同的数据中心,主副本故障时自动切换,无需人工介入,自动保障业务的连续性,实现真正意义上的异地多活。
05
TiDB适用场景
场景1 整合MySQL分片架构
TiDB可以解决MySQL跨片查询的问题,通过Syncer工具将数据从MySQL同步到TiDB中,作为MySQL的Slave存在,通过TiDB再进行复杂的跨库、跨表、跨业务的实时 SQL 查询,同时不影响现有的业务。
场景2 替换MySQL
TiDB兼容 MySQL 协议,同时具有类 NoSQL 的扩容能力,用户无需考虑存储及计算瓶颈,避免由于业务的快速增长带来的尴尬局面,新立项可考虑使用TiDB。
场景3 作为数仓使用
TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解决方案,一份存储同时处理 OLTP & OLAP,无需传统繁琐的 ETL 过程。
场景4 作为其他系统的模块
TiDB 对外提供两个 API 接口,一个是 ACID Transaction 的 API,用于支持跨行事务;另一个是 Raw API,它可以做单行的事务,换来的是整个性能的提升,但不提供跨行事务的 ACID 支持。用户可以根据自身的需求在两个 API 之间自行选择。
TiDB的出现对MySQL用户是一种福音,企业的数据达不到量级、没有形成规模没必要使用TiDB,但是当底层架构遭遇了存储或者计算瓶颈时,TiDB无疑是一个好的选择。
06
写在最后
说到这里,TiDB给我留下的印象可以用两个字来概括---规模,同时比较传统架构的数据库产品,TiDB产品定位及设计理念给人眼前一亮,这个时代是需要云和数据的支撑的,黄东旭老师还提到Cloud-native是TiDB的一个发展方向,借助 TiDB Operator,TiDB 已经可以无缝运行在公有云厂商提供的 Kubernetes 平台上了,期待TiDB有更好的表现。后续我将从技术架构出发,继续学习、分享TiDB。
参考资料
TiDB官方主页
世界级开源项目 | TiDB 如何重新定义下一代关系型数据库
WOT2018 PingCAP CTO黄东旭:TiDB数据库的四大应用场景分析