ITBear旗下自媒体矩阵:

2017 分布式数据库开门红,TiDB 燃爆海外技术圈

   时间:2017-01-18 16:59:33 来源:北京视窗编辑:星辉 发表评论无障碍通道

赶在 2016 年的尾巴上,开源分布式关系型数据库 TiDB 正式发布了 RC1 版本。此消息一经发出便在技术圈内红火了一把:TiDB 项目被国际友人顶到了 Hacker News 首页;RC1 版本的发布也获得了德国最热的 IT 社区 heise.de 的报道;不仅如此,TiDB 还在 GitHub 上被推到了 Go Trending 的头条,迎来了 2017 年的开门红。

分布式关系型数据库 TiDB 由 PingCAP 团队开发,是 Google Spanner 和 F1 的开源实现,定位在 100% OLTP 和 80% OLAP 的融合性数据库。从 2015 年 5 月写下第一行代码到现在,TiDB 已正式发布 RC1 版本,并在游戏、视频、金融、广告、媒体等行业的多家企业上线使用。在社区,秉持开源精神的 TiDB 已聚集了来自海内外的 50 余位 contributor,总计获得 7000+ Stars,是 GitHub 上的明星项目。

可以说,TiDB 的成功代表了全球数据库技术的突破性进展。在 2015 年之前,放眼全球市场,并没有一个既能水平扩展又能保证分布式事务的数据库。市场上主流的传统 SQL 数据库以及 NoSQL 数据库,在跨机房多活、故障恢复、扩容等场景都没有完美的解决方案。行业内迫切需要一款既有 SQL/NoSQL 的优点,又能避免它们的不足的新型数据库。于是,受到 Google Spanner 论文启发的 PingCAP 团队,决定从 0 开始去写一个 NewSQL 数据库。除了几纸论文,并没有一个行业样例可供参考,那就拥抱社区,与社区一起共同探索数据库尖端领域的开源实现,并将成果回馈给社区。

在仅仅一年半的时间里,TiDB 以惊人的迭代速度演进着,截至 RC1 版本阶段,产品已经在多个行业领域的生产环境中使用,获得了里程碑式的成功。从 0 到 1 的过程中,PingCAP 团队秉持了几个重要的设计思路,回首来看,这恰恰是 TiDB 能够获得高速发展的关键:

1、MySQL 语法和网络协议的兼容

MySQL 作为当前市场上的主流数据库产品,尽管在扩展性等方面不尽如人意,但依然有着绝对优势的用户群体。为了让开发者真正做到顺滑迁移,TiDB 选择了兼容 MySQL,并刻意设计得与 MySQL 一模一样,包括网络协议和语法层。为此,在前期, PingCAP 团队花了大量时间,从 TiDB 网络协议、SQL 的语法解析器、到 SQL 的优化器、执行器等从上到下写了一遍,并且从 MySQL 社区吸收了大量的测试用例,以保证高速迭代过程中的软件质量不至于失控。当然,现在看来这个决定对于用户的体验是非常好的。

2、高度模块化

这一点可能与现有的其它数据库产品非常不一样。在 PingCAP 联合创始人兼 CTO 黄东旭看来:“去中心化不一定就只有 P2P。从更宏观的抽象上来看,总是可以分层的。” P2P 模型因为有着减少部署组件的优点,受到许多开发者的青睐,但是不可忽视的是,其带来的复杂度其实非常难以控制。因此,比起后续的升级维护成本,牺牲掉的开发迭代速度来说,它的优点基本不值一提。而舍弃了 P2P 模型的 TiDB 对于组件问题也有并没有妥协,而是设计了自己的一键部署的方案。TiDB 的存储层每层接口都抽象得非常薄且清晰,不允许出现跨越层次的调用的情况。这主要就是为了控制复杂度和提高开发者的并发度。

3、编程语言的选择:Go 和 Rust

TiDB 的 SQL 层采用了 Go 语言,而 KV 层则选择了 Rust。抛弃掉所有的个人感情色彩,单纯通过数据和试验来做判断,选择了两个新兴的开发语言,这是一个大胆且艰难的决定。尤其是 KV 层的 Rust,团队内并没有人写过,只是因为其在高性能和安全性等各方面都恰好满足了要求,便做了决定。现在看来,这是对 PingCAP 团队来说最好的选择。

4、极端严格的 Code Review、自动化测试、CI 流程

相比单机数据库,分布式系统里面每一个节点都可能出现问题,每一个网络的延迟都无法预计,因此,测试变得格外困难。可以说一个分布式数据库,写出来不是最难的,把它测好才是最难的。但 PingCAP 团队却没有一个测试人员,千万级别的 Test,完全自动化去跑。并且,TiDB 的代码全部托管在 GitHub 上,每一个新的提交如果让整个项目的代码测试的覆盖率下降了,是不允许代码合并到主干分支的。类似这样近乎严苛的规则,还有很多。

PingCAP CEO 刘奇说:“在设计理念上,很庆幸我们没有走错路。”正是因为在每一个节点上坚持了清晰的设计决定, TiDB 才能以现在的形态呈现在众人面前:如今,TiDB 集群规模已突破 200T,完成了 469 个实例的测试;已有上线用户数十家,PoC 130 多家。PingCAP 团队凭借对数据库的热爱和“科技改变世界”的信念,做到了常人不敢想的事情。对于接下来的路,PingCAP 表示“最关心的还是用户的感受,我们一直在坚持做完美的东西,在未来,我们希望用户会觉得我们在变得更好。”

举报 0 收藏 0 打赏 0评论 0
 
 
更多>同类资讯
全站最新
热门内容
网站首页  |  关于我们  |  联系方式  |  版权声明  |  网站留言  |  RSS订阅  |  违规举报  |  开放转载  |  滚动资讯  |  English Version