【开源访谈】刘奇:Infrastructure 领域不开源没有生存机会

王练 发布于 2016/12/25 19:17
阅读 3K+
收藏 19

从关系型数据库,到 NoSQL ,再到现在的 NewSQL ,数据库经历过多次演变。为什么要在关系型数据库应用广泛的时候创建 NewSQL?NewSQL 又将对传统数据库造成什么影响?本期【开源访谈】邀请到了 PingCAP 联合创始人兼 CEO 刘奇,聊聊他对 NewSQL 的一些看法,以及为何会选择将 NewSQL TiDB 开源,并对开发 TiDB 的 Go 语言发表了自己的看法。

【嘉宾简介】

刘奇,PingCAP 联合创始人兼 CEO,创建了 TiDB、TIKV、Codis 等知名开源项目。曾任京东、豌豆荚资深系统架构师,同时也是知名的 Go 语言和 Redis 专家。现从事开源的分布式 NewSQL 数据库 TiDB(受 Google F1 启发)的开发。擅长高并发、大规模、分布式数据库系统架构设计。

【访谈实录】

1、能简单介绍下数据库的演变历程吗?

答:最早的时候是关系型数据库。关系型数据库无论在互联网公司还是在包括银行、金融机构等的传统公司都有广泛应用。 它最大的问题是 Scale 能力不太行,同时很难特别好的支持多数据中心的一致性复制。在 Web 起来的时候,对 Scale 提出了更高的要求,传统的关系型数据库则难以满足。

这时 NoSQL 应运而生,比如 MongoDB、Cassandra、HBase 等等。NoSQL 最大的优势是有强大的 Scale 能力,但本身在设计的时候没有考虑怎么去兼容以前的 SQL ,所以只能尝试在自身上面再去发展一个 Query Language 。这个新的东西出来以后,对以前的习惯改变很大,同时又放弃掉了一些以前已有的优点,比如事务。没有事务,在很多程序就很难把它写对,对程序员的要求自然就高了,导致他们不得不引入第三方组件,像是队列、重试,再去做一个所谓的分布式事务。慢慢的,大家又开始怀念以前的东西,说为什么数据库不把这些事情都做了呢?

2010年,NewSQL 的概念被首次提出,要同时满足 Scale,又能够解决分布式事务、一致性复制这样的问题,只是当时没有哪个数据库能够真正做到。直到2012年,Google 发布 Spanner/F1 论文,Spanner 也是世界上最大规模的第一个 NewSQL 数据库。 它同时解决了上述的两个问题,同时 Scale 能力非常惊人,一个数据库就能 Scale 到40多万台机器,而且还不是极限。NewSQL 同时满足了传统关系型数据库和 NoSQL 的特点。

2、NewSQL 目前的发展现状怎样?

NewSQL 目前国际上最主流的两个数据库都是参考 Google Spanner/F1 来实现的,一个就是我们 PingCAP 做的 TiDB ,另外一个是纽约的一个团队在做的 CockroachDB 。这两个项目目前都处于早期,TiDB 进展相对更快一些,目前已经有用户在实际使用;CockroachDB 还在发布 Beta 版本,还没进入到实际用户测试场景。但是两个团队现在都有足够的投资,往前推进的进度都很快。

3、NewSQL 能否完全取代传统关系型数据库?

答:NewSQL 相对传统数据库来讲,是一个超集。前面也有说到,它具有传统关系型数据库的很多特点,又具备经过多年发展的 NoSQL 的一些特点,我觉得 NewSQL 未来肯定是会取代传统关系型数据库的,只是由于历史沉淀需要一定的时间,而这个时间可能会相对长一些。

4、为什么会选择将 TiDB 开源?

答:我觉得 Infrastructure 领域不开源是没有未来的,没有生存机会。很简单,对于很多用户来说,他不希望自己的东西被 lock in 到一个产品上面。TiDB 在这一块做的特别开放 ,甚至已经开放到其他厂商难以想象的程度。它本身是允许把整个数据库的数据导出到其他数据库的,比如导出到 MySQL,用户可以随时更换。

我觉得商业价值的定义在于持续满足用户的需求,而不是把用户绑住。能够让用户持续使用的方式,是持续输出价值,而不是拉住用户不让走,我们不想走这种模式。另外,开源还有一个好处,是能够得到全社会的资源的参与。当有公司说想用,但可能有些地方不满足他的需求,可以自己去修改,建立分支,去测试,稳定后再反馈回来。如果这个需求代表80%的公司的需求,那它就应该被重视,给社会、行业造福。这里的价值不仅是商业价值,更有社会价值。而且,实际上目前主流的在 Infrastructure 领域的做法基本都是开源。所以,开源对于传统的闭源软件打击还是很大的,开源领域在快速地占领这个市场。

5、怎么看待开源数据库未来的发展?最终会把传统的挤掉吗?

答:我觉得还会共存很长时间,但是也很难讲。历史的惯性很大,按说应该是没有这么快。但现状是它不是在慢慢发展,而是加速发展,要看它加速能加到什么程度去。爆发之后,主流的全部都是开源的也不一定。我认为主流迟早会全部会转向开源。不过目前也有一些云厂商,他们有一些自己的方案,是拿开源来修改的,但又不开源。当然,这肯定不代表主流。对用户来说,一旦 lock in,他后续涨价,或者有些新特性不提供,都是比较烦恼的事情。开源就不同,可以自己去折腾,有更多的机会。

6、从最开始做 TiDB 到现在,遇到的最大的或印象最深刻的问题是什么?

答:技术方面倒没有遇到什么难题,但最开始做的时候,遇到的最大问题是很难招人,因为大家都不相信我们做的出来。直到去年9月份,我们发布了第一个开源版本,终于开始有人相信真的是做得出来的,这时我们招人就立马变得很容易。去年9月份之前我们只有6个人,现在已经有34个人了,团队扩招速度很快。而且,知名度也越来越高,有很多的人投递简历。这也是做开源的一个好处,天然具有传播性。

7、您认为做数据库需要重点关注哪些方面的东西?

答:我觉得做这种比较新的东西,比较重要的是要关注国际上的新进展,以及关注用户的需求和痛点,并思考怎么去解决。另外,因为新型数据库和传统数据库使用方式不太一样,用户的思维可能需要一个调整的过程,这时候就需要我们去跟用户一起配合,同时写出很多的文章来去告诉用户如何才能做到最佳。

8、TiDB 是用 Go 语言写的,您本身也是知名的 Go 语言专家,您喜欢 Go 的哪些特点?

答:我最喜欢就是它可以把很多异步的逻辑用同步的方式来写。就比如说它的 Goroutine ,写起来非常方便。目前还没看到其他语言能做到相同的体验。

9、您觉得目前 Go 还存在哪些亟待解决的缺点?

答:是有一些,比如说像 Go 语言去调 C 的接口时,目前的开销还比较大。另外它的错误处理的代码写的比较啰嗦, 代码有1/3的东西写的是重复的,我个人不太喜欢,这块官方目前应该也是没有计划改进。另外就是社区呼吁比较多的泛型,我倒觉得没有到那种不能忍的程度,还能接受。

10、有人说 Go 一直处于平稳但缺少爆发的增长状态,您怎么看?它是否有机会成为主流编程语言?

答:这个观点我有不同的理解,我觉得 Go 的发展不是平稳,而是非常快,在国内非常火,甚至比国外还火。Go 语言最大的优点就是使用简单,性能也比较好,这些特点极大的吸引了很多程序员使用。虽然说性能可能没有 C 或 C++ 那么好,但差距比较小,远超脚本语言。所以对于很多程序员来说,拿 Go 语言去重写一下,性能就能得到大幅的提升,这是非常好的一件事情。

所有的语言成为主流起码需要10年时间,回顾历史也可以看到基本上都是这样发展的。等你意识到身边的人都在使用 GO 的时候,可能其实已经过了这个语言的高速发展时期。

11、最后,对于 Go 新手而言,要如何快速上手?

答:我因为先有的 C++ 基础,所以学习起来特别快,看一看就能使用,觉得很多设计和理念都是自己梦寐以求的。一接触上,就觉得这就是自己想要的东西。从其他语言转过来的,据我了解,有原本是写 Java 的,切过来也就几天时间。我没有这种从零开始的经历,所以也不知道从零开始是一种什么样的感觉。

加载中
1
黄亿华
黄亿华
第一眼还以为是红薯
0
宏哥
宏哥
用go就完了
0
吉迪恩
吉迪恩
怎么个说法
0
Li_Peng
Li_Peng
支持GO语言,虽然还不会。
返回顶部
顶部