PingCAP 分布式数据库TiDB介绍

时间:2022-06-21 21:42:49

PingCAP的分布式关系型数据库 TiDB 作为 Google F1 的开源实现,目前 TiDB 的两个子项目 (TiDB + TiKV) 在 GitHub 社区上已经总共收获超过 10000 个 Stars,在分布式数据库领域也是全球*的开源项目,共有来自全球各地的 90 多位代码贡献者,是 HackerNews 头条的常客。
TiDB 为什么如此受关注?作为一款 NewSQL 分布式数据库, TiDB 既支持传统关系型数据库 RDBMS,又具备支持非结构化数据的 NoSQL 数据库的弹性扩展能力,能够满足目前大数据时代用户对数据库的各种需求。
NewSQL 分布式数据库潜力无限

关系型数据库、NoSQL 数据库和 NewSQL 分布式数据库三类产品并存市场,各有优势。但是很多用户并没有搞清这三个之间的关系。

自上世纪 70 年代诞生以来,关系型数据库不断发展,出现了诸如 Oracle、DB2、MySQL、PostgreSQL 等商业化产品,其对结构化数据的高可用性和高性能一直为人称道。但事实上在面对互联网时代数据量和并发量越来越大,以及非结构化数据的挑战,传统的单机数据库常会遇到瓶颈。

同时,很多业务比较简单的企业并用不上关系型数据库的众多特性,可能简单的 Key-Value 或者文档模型就搞定了,但是却对弹性可扩展性的要求大大提高。这就催生了 NoSQL 数据库的出现,解决了一部分场景的应用问题。

不过关系模型和 SQL 仍然是大多数场景下企业应用的最好选择。黄东旭认为,目前,对于传统关系型数据库的扩展方案基本只有业务层分库分表和中间件等过渡方案。以 Google 为代表的互联网公司近几年开始探索将关系型数据库和分布式存储技术结合,发展出一种新型的分布式关系型数据库,代表作品就是 Google F1 和 Google Spanner。

黄东旭认为,相对 NoSQL 来说,NewSQL 分布式数据库可以最大地兼容关系型数据库,比如支持 SQL、多级索引、支持强一致透明的 ACID 事务等,让应用的开发和迁移成本降到最低;相对于传统关系型数据库来说,NewSQL 的优势在于可以无缝地弹性伸缩,整个系统的可用性和性能吞吐都不是单机数据库所能比拟的。这场堪称革命的变革带来的价值无疑是巨大的,想象一下海量结构化数据的存储和查询将不再是令人头疼的问题,可以解放业务,提高生产力。

最近几年企业应用的数据量以很惊人的速度增长,越来越多的用户已经认识到以中间件为代表的传统方案的局限性,几乎各行各业都在使用数据库,所以从长远看只要数据量持续增长, 到处都会是 NewSQL 的市场机会,并且不可小觑。

什么是真正的 NewSQL 数据库

那么,目前市场都有哪些 NewSQL 分布式数据库产品?面对这个问题,黄东旭认为,有必要明确 NewSQL 的定义。一个数据库能被称之为 NewSQL,需要满足 4 点要求:

第一,无妥协地支持 SQL,支持 JOIN / GROUP BY / 子查询等复杂查询和一定的大数据分析能力。

第二,支持 ACID 事务,支持强隔离级别,至少需要能做到可重复读隔离级别。

第三,具有弹性伸缩的能力,扩容缩容对于业务层完全透明,只需要简单的增减机器。

最后,真正的高可用能力,异地多活、故障恢复的过程不需要人为的接入,系统能够自动地容灾和进行强一致的数据恢复。

目前来看,满足这四点的 NewSQ 产品就比较少了,包括Google 的 F1 和 Spanner、阿里的OceanBase 和 PingCAP 的 TiDB。

目前开源的 NewSQL 实现只有两个:美国的 CockroachDB 和中国 PingCAP 的 TiDB。CockroachDB 尚处于 Beta 版,目前还没看到商业应用的案例;TiDB 处于 RC3,但已经有十多个生产环境的使用客户。

开源和商业化并不冲突

黄东旭坚信,在基础软件领域,未来闭源软件很难取得成功,企业的 IT 软件栈正渐渐地从闭源的私有软件,转向开源解决方案。近几年来取得成功的 Docker、TensorFlow、Kubernetes、Spark 等都是很好的例证。开源给企业带来了更多的灵活性,同时避免了供应商锁定的风险。

而且,现代的开源软件和 20 年前 Linux 时代的个人英雄主义是完全不同的,成功的开源软件背后一定是有非常成熟的商业公司在支持,不再是低质量、无人维护的代名词。

黄东旭说,TiDB 走开源之路,就是想极大地降低 TiDB 用户的获取成本。大多数使用TiDB 的用户,都是带着痛点和需求,甚至有些已经先使用了 TiDB 之后才找到的我们,并且在使用 TiDB 的过程中提供了很多宝贵的意见;另外还有一部分用户非常积极地贡献代码,帮助我们把 TiDB 做得更好,这在闭源的世界里是不会发生的。

开源和商业化并不冲突,目前 TiDB 也有商业版,周边商业工具和服务是付费的。黄东旭说:“对于企业业务的核心数据库来说,更好的更专业的服务和更智能易用的工具更有价值,而且我相信一个非常朴素的商业逻辑:认真解决用户的问题和痛点,然后其他的东西会随之而来。MySQL 的扩展性问题一直是大家都会遇到的痛点,这个就是我们独特的价值。”

坚持拥抱开源的路线

TiDB 是一个技术含量很高的软件项目。首先 TiDB 是一个非常完整的数据库项目,并不是针对某些特定场景的数据库,也并不是内存数据库,而是一个通用的分布式数据库解决方案,对外接口和协议是 MySQL 兼容的。

在上层,TiDB 完整地实现了整个 SQL 解析器、分布式的基于代价的 SQL 优化器和执行器。在这部分参考了近年来学术界大量的 SQL 优化技术,另外还有动态非阻塞的 DDL 算法、MySQL 的网络协议层等。

在下层的 TiKV 存储上,TiDB 是全球仅有的两个实现动态 Multi-Raft 算法的软件项目之一,而且在此基础上实现了 External Consistency (最强隔离级别) 的 ACID 事务。

黄东旭说,更不容易的是,把上述的这些技术通过一个项目有机地融合在一起,是软件工程上的重大挑战和突破,这个技术在全球范围内都是顶尖的。

TiDB 未来会坚持拥抱开源的路线,持续完善 MySQL 兼容性,深度与 SparkSQL 无缝对接,和云整合,探索新型的硬件加速的方案等。
出处:http://www.soft6.com/index.php?m=wap&siteid=1&a=show&catid=6&id=316409