专栏介绍面试
「对话 CTO」是极客公园的一档最新专栏,以技术人的视角聊聊研发管理者的发展和成长。数据库
本专栏由ONES 的创始人&CEO 王颖奇做为特邀访谈者。王颖奇曾参与金山软件 WPS、金山毒霸等大型软件的核心开发工做;2011 年创立了正点科技,旗下产品正点闹钟、正点日历在全球用户过亿;2014 年,王颖奇在知名美圆基金晨兴资本任 EIR,并以我的身份参与十余家公司的管理咨询工做;2015 年,王颖奇创立 ONES,致力于提供企业级研发管理解决方案。编程
摘要网络
有像甲骨文这样的统治级巨头在,数据库市场仍是个好的创业领域吗?在 PingCAP 联合创始人&CTO 黄东旭眼中,答案是确定的,数据库行业的转折点已经到了。分布式
黄东旭曾在豌豆荚从事 infrastructure 相关工做,在分布式存储领域有着多年的积累和实战经验。在他看来,伴随着分布式数据库理念和技术的成熟,对传统数据库理念和技术的依赖正在走向瓦解。工具
开源理念的普及也在加速数据库行业走向下一个阶段,「像数据库、操做系统、云技术,或者云内部的基础软件,将来只有开源一条路,若是不开源,或者说内核不开源的话,产品的生命力是不好的。」学习
一切正在 PingCAP 中顺利落地。做为开源新型分布式数据库公司,PingCAP 研发了分布式关系型数据库 TiDB 项目,具有「分布式强一致性事务、在线弹性水平扩展、故障自恢复的高可用、跨数据中心多活」等核心特性。目前公司准生产测试用户 1400 余家,涉及互联网、游戏、银行、保险、证券、航空、制造业、电信、新零售、政府等多个行业。测试
本期对话 CTO,咱们请到了 PingCAP CTO 黄东旭来谈一谈他对于数据库行业的技术和行业演进的理解,以及商业公司究竟须要什么样的数据库。操作系统
分布式数据库、开源数据库的蓝海机遇在哪?翻译
颖奇:PingCAP作的事情,我认为在中国工业领域上具备很大意义。由于几乎没有其余公司作过,大家是怎么想到作这件事的?
黄东旭:中国过去也不是没有作数据库的公司,咱们和他们不太同样在于,一是咱们是相似于互联网公司,或者说创业公司的路径,是走融资发展的;二是技术上,咱们公司是基于分布式数据库的理论成立的。
过去三四十年,数据库市场都是依赖像 Oracle、IBM 所创建的理论基础运行。但在 21 世纪,Google 提出分布式系统技术后,随着硬件条件的成熟,像 SSD、万兆的网卡,带来的改变就是处理的数据量在持续地变大。数据库市场到了须要去作修订或者说要有个转折的地方了。数据库行业最根基的东西在发生变化,而这一块还没人作,因此说必定要找到正确的切入点。
颖奇:大家找到的切入点是什么?
黄东旭:就是分布式理论怎么跟传统关系数据库理论融合的点。
最近这些硬件的革新,使得原来不少的假设都不成立了。好比过去你们可能以为数据库的瓶颈是磁盘,想怎么设计一个更好的 B-Tree 可以让磁盘磁头转得少一点。但如今全是 SSD,甚至将来可能持久化内存的东西都出现了。过去分布式系统的网络这么慢,带宽这么小,因此尽量都是在单机或者本地上去作。但如今基本上单机访问远程数据库和访问本地数据库在吞吐量上表现差很少了。
还有就是选择「开源」。中国传统软件数据库的技术软件商业模式,跟传统的软件很像,就是作一个产品,招一堆销售挨家敲门。咱们以为这样效率过低。就如今而言,基础软件好很差关键是在于怎么在最短的时间找到最多人来去用这个产品,可以让它变得更好,变成一个正向循环。但传统软件招销售并非一个特别好的选择,由于扩张速度取决于销售敲门的速度。
颖奇:靠销售确定来不及。
黄东旭:因此咱们喜欢「开源」。「开源」至关于用一些 to C 的方法论,在工程师的社区里经过病毒式传播让产品 adoption,别人用得不爽必定会 feedback 提 issue。用的人越多,它的质量就越好,质量越好,会变成一传十,十传百的这种效应,让产品正向循环下去。
对于基础软件,个人观点是像数据库、操做系统、云技术,或者云内部的基础软件,将来只有开源一条路,若是不开源,或者说内核不开源的话,产品的生命力是不好的。不像其余的商业软件,基础软件就像在水管、水电煤这样的基础设施的层面上,你不开源的话别人也不敢用。
颖奇:咱们看到在中国实际上有两件事情以前没怎么作好。第一是特别基础的软件,第二是作一个特别好的开源公司,大家算是把两种结合起来的「鼻祖」。请问大家具体是怎么作的呢?
黄东旭:我以为有一点是由于 PingCAP 或者 TiDB 选的这个坑特别好。过去你们都知道 MySQL 数量大了之后只能 sharding,如今 TiDB 就是解决这个坑。你们都很是清楚这是个痛点,你不用去跟别人解释这就是一个很是厉害的内核代码。有需求有痛点,而后问题足够清晰,也足够大。
颖奇:那你以为开源这个事情会把PingCAP带到一个什么样的位置上?
黄东旭:从数据库的角度上来看,你们会发现,最先的关系数据库 SQL、TSQL,在互联网或者移动互联网开始爆发的时候,数量开始膨胀,单机系统怎么样都搞不定的时候,互联网公司没有办法,只能去作了一套 NoSQL,但 NoSQL 又有点过了,就把原来的传统管理模型全都扔掉,但至少能把数据存下来。因此我以为历史是螺旋式发展。
其实这两年已经开始有这个趋势,就是新一代的数据库又开始回归 SQL 模型,可能将来持续十年会有一个关系型数据库的复兴吧。过去是由于分布式理论,以及硬件环境没有办法去跟这个模型很好地结合在一块儿。但至少以咱们的经验来讲,如今分布式基本上能知足不少需求。
颖奇:因此传统数据库公司是在单机上解决这种数据的问题?
黄东旭:对,我以为将来数据必定是更大的状态,单机确定是有问题的。硬件成本持续在降低,必定会到达一个临界点,就是数据自己的价值都比硬件成本要高,这样一来,我确定是保护数据,怎么样把个人数据能无限存下来,而且能快速经过好用的接口来访问它。我以为这个市场会很大,因此我历来都不跟别人说这个事情的天花板在哪里,由于我本身也不知道。
颖奇:早期仍是在数据价值比较大的行业里来应用会更好一些?
黄东旭:咱们早期策略上分两块,一块就是互联网公司,workload 数量很大,而后有很强的研发团队,开源社区的主力就是这帮人,随便用,并且我会很鼓励大家投人投精力去用它。
还有一部分是一些高净值客户,好比银行,业务已经倒逼他们要去用一些互联网的技术去解决问题。好比说即便 Oracle 用得很差,迁到 TiDB 上其实也是很平滑的过程,同时能够保证多数据中心高可用、强一致等这些特性,用起来很省心。
我以为咱们就是拿互联网最早进的技术给到传统公司,给他们赋能,并且让对方的迁移成本降得很低。
「商业公司」如何管理「开源社区」
颖奇:能够跟你们讲一下PingCAP对人才的要求和大家的管理方法吗?
黄东旭:我一直信奉一句话,「Hire for attitude, train for skill」。
首先你要打心底里承认这个事情,是一切日后谈的基础。这对咱们来讲不难,不少工程师他们仍是有共同理想的。
第二点就是研发人才的 skill set,我可能会更倾向因而在互联网,或者说在作这种大规模分布式系统。互联网人有个优点在于他们对新技术的接受度特别高,思想特别开放,没有一些条条框框的东西。
第三点就是特别喜欢年轻人,咱们会刻意地让团队里面有一些很是新鲜的血液。
第四点的话咱们并不强求,就是人的责任心和主人公意识,这其实跟咱们的晋升体系有关。咱们的晋升体系跟 Facebook 很像,团队在实际工做的时候,让员工的特色会慢慢浮现出来。好比说小明,每件事情交给他都特别靠谱。你们都公认以为他是个靠谱的人,慢慢造成这样的效果。
对于小公司来讲,没办法把每一个人天天的工做,每一个任务都亲自去帮你规划好。因此咱们的管理风格还算是比较粗放吧。
颖奇:大家公司如今是有一些外籍工程师?
黄东旭:对,咱们也有一些外籍人士,大概七八我的吧。咱们比较国际化。由于咱们这个项目是开源的,用户用出问题了通常会去上面提一个 issue,不少国内用户直接用中文写 issue 上去,咱们还有一个团队专门把中文 issue 翻译成英文,由于这个东西要同步嘛,在别人遇到一样问题去搜索的时候也能看到。
颖奇:大家的TiDB或者TiKV里,我看到有几百个contributors,那里面有多少是外籍的?
黄东旭:一半。包括咱们的文档都是中英文一对一的比例。
我以为在哪作这个事情,这个问题已经不重要了。包括如今咱们不少人才,在加入以前就已是项目的粉丝,有些人甚至都不用面试,都不用看 GitHub,由于这我的每天就在 commit code。
咱们在国内的招聘方式也是挺特殊的,咱们不太关心你到底在哪一个城市工做。咱们重度依赖像 Google Docs、Slack、GitHub、Jira、Confluence 这种生产力工具,基本上可以摆脱面对面的会议,这个是很重要的。咱们不鼓励开长会,若是要开会,就开半个小时、15 分钟的短会。
远程有个好处就是它会迫使工程师把全部想作的东西进行文档化,任何东西均可以被检索。我以为这样更符合现代化的管理模式,有充足的时间,更加灵活地安排本身的生活,是一个更好的工做方式。
颖奇:开源社区可能有一套管理模式,商业公司也有本身的管理模式,如今大家在这两边的管理模式是同样的仍是说会有一些区别?
黄东旭:咱们是同样的。你能够认为咱们本身的员工跟社区小伙伴的区别,就 TiDB 内核部分的开源来讲,惟一区别就是咱们给他们工资。
颖奇:你以为将来中国会有不少这样的工做出现吗?
黄东旭:我以为在技术软件行业会愈来愈多。
颖奇:早期美国的不少开源软件没有太多资本介入,因此发展周期会很长。你以为资本介入会使得开源软件发展周期变短吗?
黄东旭:没有资本介入,或者说没有商业公司在后面支持的话,开源软件都不会有太强的生命力。开源我认为是分红两个阶段,一个是 1.0,一个是 2.0。1.0 是当年像 Glue、 GCC、Linux 内核这些项目;2.0 是就最近的这几年像 Eclipse、MongoDB、Databricks 这些开源软件公司,这些模式实际上是更先进的,或者更加符合如今时代的作法。中国其实过去没有这样的东西,咱们算是第一波。
颖奇:早期的开源公司商业化诉求没那么快,因此贡献者相对平等,也没有经济回报。如今您这边的项目里有两种方式,可能一百个工程师是拿回报的,另一百个多是不拿回报的。那如今一个项目里混杂了两种组合方式,大家的解决方案是什么?
黄东旭:我以为其实这个问题的本质是:为何要来(社区)。
两种状况,一种就是我实际就在用这个东西,发现这个东西很差,某些地方有 bug 或者说某些地方的功能不是我想要的,我想要去改进它。大多数机构都是出于这种思路来贡献的。
第二种人就是纯粹为了作出成就感。以为这事情很不错,我能参与到这个项目来了,「I want to help」,我想去帮助别人,同时我可以获得证实,我是这个项目的 heavy contributor、committer,获得尊敬或者认同感。
对每个 contributor,哪怕提交一行代码或者修改一个文档,咱们都会给他一个大礼包,包括贴纸、杯子等等周边产品。若是贡献比较多的话,我会亲手给你写一封明信片表达感谢,包括咱们每一年办的这些大会,只要是 contributor 都是免费的。
颖奇:我以为这个挺棒的。再问最后一个问题,你能够推荐几本书,给已是CTO或准备想当CTO的人学习和借鉴。
黄东旭:我有几本书是很喜欢的,《Unix 编程艺术》是到目前来讲对我影响最大的跟编程和计算机相关的书。更技术一点的是《Unix 环境高级编程 (APUE) 》。不少人想学编程可能看这本书够了,其余什么书都不用买,就这个。还有《大教堂与集市》,这个介绍 open source 的原始出发点。而后我最近在读《毛选》,还有王小波的小说。
颖奇:《Unix编程艺术》这本我也会推荐给年轻人看。这本书对个人影响很是大,读完使得我对整个计算机的软件体系结构有了很是深入的认识。第一次读是在13年前了,至今对个人工做和创业都有很大的帮助。很是感谢东旭今天的分享。
本文做者:王颖奇,联系方式:wangyingqi@gmail.com