TiDB 的应用场景是典型的 OLTP 场景,它的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,同时还提供 TiSpark 项目以完成更复杂的 OLAP 分析。
TiDB 的应用场景主要分以下几种。
传统的 MySQL 数据库在数据量急速增长后,使用分库分表的技术来对数据库进行扩展,在分布式数据库系统中也是使用分片技术,但是这些技术不管在维护成本或开发成本上都很高。
而 TiDB 提供了一个可弹性的横向扩展的分布式数据库,并且具有高可用性,它兼容 MySQL 协议和绝大多数的 MySQL 语法,在通常情况下,用户无须修改代码就可以将 MySQL 无缝迁移到 TiDB。
这种应用场景的实际案例如下。
1) 摩拜单车(Mobike)。摩拜单车从 2017 年年初就开始使用 TiDB,目前已经部署了多个集群用于不同的应用场景,如开关锁日志成功率的统计等。所有集群有近百个节点,存储数十 TB 的数据。摩拜单车将 TiDB 作为核心的数据交易和存储支撑平台,来解决海量数据的在线存储、大规模实时数据分析和处理。
2) 今日头条。TiDB 主要应用在今日头条核心 OLTP 系统一对象存储系统的部分元数据存储,支持头条图片和视频相关业务,如抖音小视频等。TiDB 支撑着今日头条 OLTP 系统里数据流量最大、每秒查询率(Query Per Second, QPS)最高的场景。此场景的集群容量 50多 TB,数据量日增 5 亿行,可见数据量增长的速度非常快。
NoSQL 数据库拥有弹性的伸缩能力,具有实时并发写入能力,但是 NoSQL 数据库不支持 SQL,也不支持事务的 ACID 特性,NoSQL 无法满足某些强一致性的场景下的需求。
TiDB 具备 SQL 所有的特性,同时满足数据的在线扩展。在线旅行网站“去哪儿”目前使用了几个 TiDB 集群来替代 MySQL 和 HBase,如机票离线集群、金融支付集群等。
集群用来存储支付信息表和订 单信息表,这些信息严格支持事务 ACID 特性,因此可以将原来存储于 MySQL 中的数据同步到 TiDB 中,然后,运营或开发人员可以在 TiDB 上进行 merge 单表查询或 OLAP 分析。
生活服务平台“饿了么”网站的在线交易平台和即时配送平台,随着用户量和订单量的快速增长,数据量也快速增长,产生了对数据存储的强烈需求。
之前这些数据存储于 MySQL、Redis、MongoDB、Cassandra 等不同系统中,数据扩容不方便,维护成本也高,因此,“饿了么”网站选择使用 TiDB 来统一存储这些数据,以满足大数据量、高性能、高可靠、高可用、易运维的要求。
目前企业大多数的数据分析场景的解决方案都是围绕着 Hadoop 生态系统展开的,包括 HDFS、Hive、Spark 等。但是单纯使用 Hadoop 已经无法满足一些实时的 OLTP 和复杂的 OLAP 需求。
随着 TiDB 的子项目 TiSpark 的发布,可以在拥有关系数据库的事务写入能力同时进行复杂的分析。
在这方面的实际案例也有很多,例如,易果集团使用 TiDB 作为新的实时系统,OLTP 的数据和实时数据可以实时写入 TiDB 中,OLAP 业务通过 TiSpark 进行分析,并且可以通过 TiSpark 将实时数据和离线数据整合起来。