写点什么

寒冬未散,手里没点“必杀技”,怎么翻过浪浪山? | 展望数据库工程师的 2023

  • 2023-01-19
    北京
  • 本文字数:13479 字

    阅读完需:约 44 分钟

寒冬未散,手里没点“必杀技”,怎么翻过浪浪山? | 展望数据库工程师的2023

最近几年,数据库技术十分火热,数据库开发也成为大家关注的热门方向。如何成为一名优秀的数据库工程师?2023 年,数据库工程师需要提升哪些技能,做好哪些准备?


InfoQ《极客有约》特别策划的《2022 年年度技术展望》系列直播,邀请到了涛思数据联合创始人,开源云原生时序数据库 TDengine 主要作者关胜亮,一起展望数据库工程师的 2023。


视频回放地址:https://www.infoq.cn/video/KM4KfAtfgcQbKoqZV58M


以下内容节选自当天的分享,InfoQ 做了不改变原意的编辑:

与编程结缘


InfoQ:请您分享一下自己的开发经历,您最初是怎么走上数据库开发这个方向的?


关胜亮: 我本科就读于中国科学技术大学,研究生就读于中科院计算,学的都是计算机相关的专业。我参加工作之后就一直在做时序数据库方面的工作,只不过那个时候还没有时序数据库,叫实时数据库,只能存储当前时间的数据,历史数据都是存在其他系统里面。这样一直做了很多年。


后来,包括像 Memcache、Redis 这样的开源软件出现之后,我开始觉得做实时数据库没有什么前景了。后来,得知我的科大校友,涛思数据的创始人陶建辉要开始做一个实时、历史统一的时序数据库。我仔细了解之后发现,自己在时序数据,包括分布式方面的一些知识储备,在大数据领域的一些业务储备,正好跟这样一个产品是匹配的。而且,陶总过往的创业经历和工作激情也让我相信,他能够带领大家开发出一个行业领先的数据库产品。就这样,我就开始了 TDengine 的研发,我十几年的知识积累,也就能够发挥出更大的作用。

我还在写代码,写代码使我快乐

InfoQ:您已经做到联合创始人这个位置,您现在还写代码吗?


关胜亮: 对,还在写。2017 年,我加入了涛思数据,是 TDengine 的主要开发者之一。我主导了 1.0、 2.0 到 3.0 这三个版本的所有迭代。今年我们做了新的版本,我写了很多很多代码,写代码使我快乐。


相比于管理者,我更加喜欢开发者这样一个角色。每年,我都会在 GitHub 上面深度参与代码开发。今年因为我们发布 3.0,所以我写的代码尤其多。从今年 1024 程序员节公布的数据中可以看到,我的开源贡献全球排名前 50,国内排名第七。


InfoQ:请您从自身经历出发聊一聊,作为一个数据库工程师,日常每天的工作大概是怎么样的?有没有一些工作是比较程式化的,每天都要做的,有没有一些工作是非常有挑战的,比如说需要专门拿出一天之中精神最饱满的一个时间来做?


关胜亮: 每天上班第一件事肯定就是看看自己有没有新的问题,尤其是一些 Bug 或者是线上的问题。任何时候,Bug 处理肯定都是第一位的。我们可以因为 Bug,把任何其他低优先级的工作都推迟。


第二就是要定期跟用户进行交流,去修正产品的发展方向。最好就在日历里面记录下来,大概什么时间约了一些什么样的人,跟大家一起交流产品该往哪个方向走,也包括在一些合适的场合,宣传产品的设计理念和应用场景。


第三个也是工作量比较大的,就是新功能开发。其实开发一个全新的功能难度是挺大的,也是非常有挑战性的。很多人都能够维护代码,包括一些大厂的员工,他们可能维护代码的能力都很强,但真正的从 0 到 1 去做一个产品的时候,就不一定行了。很有可能刚开始要的是 a,最后做成 b。我们的策略一直是以终为始,也就是现在提到的倒推工作法。我们都会先起草新功能的宣传稿,这还不是用户手册,主要内容是怎么跟其他的部门、可能的用户去宣传它。之后就可以认识到,这个产品做起来是有价值的,再开始去起草用户手册,然后再去进行原型开发。最后才是常规的设计开发和测试流程。这种流程可能看起来会浪费时间,但实际上,这种做法能最大限度的做到不返工。并且,能把问题责任局限在一个很小的范围之内。


因此,总结来看,我每天大部分的工作可能都是在新功能的开发上面,少部分的工作在 Bug 处理和用户交流上面。但如果你要是一个领导者的话,你可能还有很多的会议、评审工作。

如何从初级数据库开发者进阶到高级数据库开发者

硬实力和软实力同样重要

InfoQ:经过这么多年,您已经进阶到一个比较高级的开发者角色。相信很多开发者都有这样一个疑问,就是在自己工作了几年之后,能不能够顺利地从一个初级开发者进阶成为一个高级开发者?在这个过程中,您是怎么做到的?您中间做了哪些努力?


关胜亮: 我是 2009 年 7 月份参加的工作,当时到当年的春节我就成为一个小组长了,也算是从这个问题里面的普通工程师变成了资深工程师了。很显然,技术水平确实是非常关键的一环。但是,竞争者的技术水平也都差不太多,尤其技术这个东西,没有说谁就一定强过谁。这个时候,觉得比较重要的就是一些软实力了。


在我看来,当时比较强的软实力有几个部分。第一是责任心,也就是交代的工作都能够按照一定的工期、一定的质量来完成。尤其值得一提的一点是,能承担一些边界比较模糊的工作或者说脏活累活。第二是业务能力,也就是我们要能够理解客户的需求,或者是说,如果做的不是项目的话,要能够理解产品的主要应用场景。我记得,我开始也只是负责开发一个模块,但是,会尽可能利用任何可能的机会去掌握整个产品的脉络。有机会的时候,立刻就能够补充空缺。最后是文档能力,很多开发人员对此不是特别重视。但是,不管是晋升评级的文档或者日常总结的文档,或者产品相关的文档,都要用心对待,因为文档体现了一个人的逻辑、思路和他对待工作的态度。我觉得大家要做的就是,要么不写,要写就一定好好写。所以我觉得,大家从这三个非技术能力的方面去严格要求自己,自然而然就会变成一名资深工程师。


InfoQ:您刚才提到脏活累活要愿意去干,在开发工作中,哪些算是脏活累活?


关胜亮: 其实比较简单,例如开发的时候,可能客户会遇到一些 Bug。刚开始的时候,大家都不知道这个 Bug 到底应该由谁来处理,甚至可能都不知道它属于哪个模块。这个时候,很显然,问题抛出来了,却没有任何归属。如果你能够主动去做这样的一些事情,你就会成为这个组里面或者这个产品里面比较重要的角色。当所有人都依赖于你的时候,你的地位,你的经验,就能够更好的发挥出来,大家就更信任你。

优秀数据库工程师必备技能

InfoQ:现在,很多人都希望自己变得更优秀,也有很多程序员在工作之外想学习各种技能、工具、课程等提升自己。但现在知识特别多,可能让人有点眼花缭乱,您能不能给大家分享一下自己的经验?要成为一个优秀的数据库开发者需要掌握哪些技能,哪些是最核心的,重点学习哪些技术和工具就可以了?


关胜亮: 这要看开发人员的水平,如果是半路出家,也不是计算机专业的,要学很多东西。如果只是培训机构出来的,那么可能要学的东西就更多。这个时候,想成为一个数据库开发工程师基本是不可能的,你要积累很多的经验和经历才行。


一个正常水平的开发工程师,需要学哪些东西?我觉得开发语言并不是最重要的,因为用各种语言都能够开发数据库,像 C/C++、Go、Rust 等。我觉得主要是要掌握各种数据结构。第一要掌握各种数据结构的使用,最好能够自己去编写一些简单的,基础的库。像哈希、树、图、链表等,也建议你自己去写,而不光是去用。当你写完这些东西之后,自己的水平会得到很大的提高。另外,比较困难的一些数据结构,像红黑树、B+树、LSM 树等等,一定要很清楚概念,并且至少写一个简单的算法,这时,你的基本能力就基本上够用了,编码能力基本上也够用了。


然后要掌握一些网络通信和多线程编程的使用方式。现在,各种语言都比较强调异步调用和异步 I/O。这方面的理念必须要掌握清楚,尤其是要知道各种不同的异步调用之间到底有哪些共享的数据,如何去处理共享数据之间的锁的问题,这个特别考验水平,也只能在工作中才能够摸索的到。


第三,我觉得需要掌握一定的分布式知识,因为单机软件现在越来越少,大多数软件都需要多台机器协同,像 Raft、Paxos 这样常规的分布式算法,需要了解。也可以看一看 ZooKeeper、etcd 的实现原理,掌握一些基本的概念。


第四,如果有时间,最好是看一些开源软件的代码,简单的像 Nginx、Redis,功能复杂一点的,像 SQLite。掌握这些,我觉得基本能力就够了。


之后,可以试着给一些数据库做 Demo 插件,比如说像 MySQL、Postgre 都支持插件。这些插件不一定要得到多么大的应用,能够做出来就可以了。


最后,可以回过头去看一些数据库书籍,掌握一些理论知识。再然后,就应该想办法在实际的工作中去应用它,你不用它最后你掌握的东西都忘了。可以写一些独立的数据存储的组件,因为不管做什么样的工作,都可能会涉及到一些简单的临时文件,临时数据存储等,可以写一下这些东西。能写这些东西就差不多了,就可以找一些国内的数据库公司去试一试,看看面试能不能通过。


我觉得大体应该是这样的一个过程。

如何让自己不可替代

InfoQ:开发者之间的竞争压力挺大的。关于怎么构建自己的技术壁垒,在技术能力上让你在这个公司不可替代。在这方面,您觉得应该怎么样去努力?


关胜亮: 对于一个公司,它可能会有一些跟其他公司不同的地方,对于个人当然也会有。公司间的壁垒,或者产品间的壁垒,很容易从定位或者是产品架构上来实现。


对于个人来讲,其实很难说我有哪些东西,而别人没有。因为这么多的竞争者,没有哪些技术是只有你会别人不会的。所以,如果想在工作上更有区分度,或者在公司中有更加重要的一个位置,还是从技术和业务两个方面去着手。


这里说的技术不是通用技术,也不是说写几篇技术博客就可以了。这里的技术主要是算法跟具体业务的结合。然后在业务上,要掌握整个产品的应用场景。这些东西,就像打球一样。比如说,我喜欢看 NBA,有很多好的球星看起来天赋很高,但其实背后都是一遍一遍地苦练。在公司也是一样,你做的东西多了,接触的客户多了之后,自然而然的就能够达到一个相对重要的地位。事实上,要想通过走捷径去获得这样的一个位置,几乎是不可能的。没有人可以说我什么都不干,然后还可以位置无忧。

数据库工程师如何做职业规划?

职业发展路径

InfoQ:很多开发者都对职业规划有不少疑问。数据工程师应该怎么去做好自己的职业规划?一个比较好的职业路径应该是什么样子的?


关胜亮: 我觉得,首先,数据库工程师的入门难度比较大。所以,当你成为一名资深的工程师之后,上面提到的竞争力基本就形成了。


之后,我觉得可以从四个方面去考虑职业发展的规划。第一个就是继续做技术,成为技术专家。但是,成为技术专家不光要有深度,还要有广度,要扩大自己的知识面,尤其要抽时间去看竞品,看市场上主流技术的发展。其实这方面难度比较大。但如果你是一个比较宅的人,这比较适合你。


第二就是想办法首先提升为组长,然后争取成为部门主管。这样的话,可以走一个技术管理的岗位。


除了技术相关的,也可以向解决方案架构师转变。凭借你早期积累的对于产品的理解,还有技术能力,就可以更好地为客户提供技术咨询。因为现在,技术咨询这个领域对人员水平的要求越来越高了。以前,都是一些技术比较差的人去做,现在,做这种解决方案的咨询,都需要很资深的员工。


也可以向销售去转变。最近五年,也包括疫情这段时间,技术销售越来越吃香了,之前吃饭喝酒这种方式已经 out 了。大家觉得,你技术比较牛,那我就能相信你。


关于职业发展,我觉得可以从这四个方向去做。当然,如果你能力更出众,做成高管,那就是另外的路径了。

要不要转管理?

InfoQ:您提到了好几种转型路径。下一个问题就重点谈谈管理吧。如果你一开始做技术,后来做管理,这个跨度还是挺大的,很多人就想知道,我到底啥时候转,我自己适不适合转,我转过去之后万一不适应,发现我不适合做管理怎么办?您有没有一些时间点建议,以及怎么判断自己适不适合转?


关胜亮: 管理能力和技术能力其实是完全不同的能力,也是不同的职业规划。我刚参加工作的时候,还比较年轻,大家说 35 岁就不能写程序了。后来等我到 35 岁的时候,大家又说 45 岁不能写程序了。我觉得,这些说法都不是很准确,因为实际上,走管理和走技术这两种路径,从收入来看的话,差别也不是很大。


大家都说到了一定年龄之后就无法做技术,似乎就必须得转型管理,转型可以,但并不一定要转管理,也可以转型到很多其他的岗位。而且现在的技术岗,如果你做的是一些底层技术的话,年龄越大可能会越受到重视。而如果说你做的是 UI 类的软件,那你挣这个钱主要是靠时间来积累。当你年龄大了之后,你没有那么多时间的时候,你就必须要转型。如果你技术挖得比较深,你的竞争力是你的技术能力,而不是工作时间,不是靠加班来拼的时候,那么你只会做的越来越好。


其实到了一定年龄之后,如果你在自己的岗位上不是特别资深,特别有竞争力的话,那其实管理岗也好,研发岗也好,都会被淘汰,而且管理岗的缺口可能更少。像我们公司,其实就有很多大龄的程序员,很多之前做过管理,都至少带过十几二十人的团队,还有更多的。后来,他们觉得还是回归研发比较好。所以说,不是说你自己适不适合去做研发,不是说做不好研发,就去做管理,肯定不是这样的。其实,大多数不想在技术方面深入的人,大多不是转到管理岗,而可能转到像售前、交付、运维、市场这样的一些非研发岗位。


所以我觉得,判断自己适不适合做技术管理,就是问问自己有没有这样的意愿、能力,或者某一天能够去一个创业公司,能够独立带队完成一个新产品从 0 到 1 的开发。如果是你判断自己在未来某一时间段内能够有这个能力,那么我觉得你可能还适合做技术管理,如果不能的话,就要考虑自己真正的发展方向在哪里,做好自己的职业规划。技术管理的难度很大,大家不要觉得它是一个很容易的事。


InfoQ:管理能力的提升有哪些快速通道?


关胜亮: 首先是你到底适不适合管理岗。如果你目前不在这样的岗位上,那么首先,你先制造一个这样的机会,比如说我想要做一个什么样的新特性。而这样一个新特性又不是自己一个人能够完成的。显然,开发人员分前端、后端以及存储,很多不同的分工。做这样一个小特性时,需要很多人一起配合。这时,你就可以尝试在很小的一个范围之内,让大家围绕你把这件事做好。这就是你自己练手的一个好机会。做不好也没关系,接着回去做独立的模块就是了。做的好的话,就说明你具备了组织大家一起去完成一件事的能力。


然后,如果有机会,就参与一些比较重要的功能的开发。如果你还能够组织一些人把这个事情完成,那么恭喜你,基本上你就能够得到领导或公司的信任了。再有机会的时候,你可能就能够提升为管理人员了。


如果说你已经是管理岗,想提升自己的管理能力,我觉得主要就是从工期和质量两个方面去思考。如何能够更好的评估一件事情,什么时间能够完成。如何能够按照一定的标准去完成。这两个方面是管理里面非常重要的核心指标。当然,这个指标只是一种非客观的评价。


提升管理能力,一方面就是实战,一方面就是多看看书,多听听一些演讲,或者是参与一些培训班。我记得,我刚开始参加一个培训班的时候,我听到那个培训老师讲的,就跟被洗脑一样,我突然觉得,哇,管理还可以这么去搞。过了两天,我回来之后发现,哎,这个老师说的怎么感觉完全实现不了呀。我就对这个老师讲的东西产生了一些疑问。后来,随着经验越来越丰富,我发现,老师讲的是一些理论,他找了一个很好的例子,来证明他的理论能够执行。而如果你把这个理论,原封不动的放到自己的公司里去,可能就会执行不下去。这个其实就是理论和实际相结合,但你要是一点理论都没有,确实也没有办法做好管理。

如何平衡管理和一线技术工作


InfoQ:作为一个技术 leader 的话,您自己在管理工作和一线技术工作这两个方面,是怎么平衡的?


关胜亮: 技术管理和一般管理不同。在我看来,技术管理的难度比较大。不像我们砌一堵墙,今天你砌 1 米,明天我砌 2 米,然后拼在一起。技术管理的本质是要把一项任务拆分为多个子任务,然后把这些子任务安排到合适的人,并在规定的时间内完成交付,进行有效的检查。这里面比较难的是任务拆分,估算工期也很难,质量检查也很难。这些都需要 leader 具有很强的技术能力。


大家会看到,没有人会跨技术领域去做管理。本来做后端,现在去管手机 APP,这个确实难度比较大。所以,要想具备较强的技术能力,就需要不断参与一线的技术工作。


作为 leader,我通常会参与一些需要新技术的功能模块的开发,在完成原型开发或者第一版交付之后,再转给其他同事。通过这种方式,我们就可以在新员工中得到一定的威信。另外,自己也熟悉了新技术。还能避免新技术引入对整个研发工作造成太大的风险。所以作为一个技术 leader,一定要找到一些可能性,让自己去学习新技术。这样才能够不断提升自己的能力。

数据工程师有“钱途”吗?

InfoQ:做数据工程师有钱途吗?前几天,我看到有家机构发了一份程序员收入报告。您能不能分享下,数据库工程师的收入到底有多大竞争力呢?


关胜亮: 数据库工程师的收入其实还是挺高的,因为数据库也是属于后端研发的一种。任何做后端研发的人,都有可能转化为数据库工程师。数据库开发不一定非得去做 SQL 相关的,它里面也需要很多像分布式、网络、存储这样一些底层的知识。


我们招人,也不是只招数据库这个领域的,也会招一些其他的后端工程师。我们看到,现在去一些招聘网站会发现,后端工程师收入普遍比前端工程师高。而数据库工程师又往往会比普通的后端工程师技术能力更强,所以他的收入更高。不同的公司可能给的钱不一样,但基本上都属于这个公司里面排在前列的岗位。


InfoQ:您在招人的时候,会比较看重哪些方面的能力?比如说有一位求职者,他哪些方面比较强,对于您来说或者对于涛思数据来说是加分项。


关胜亮: 我们招人的时候,技术能力当然很重要,因为技术能力是技术型公司所必须的。但是,就我个人来讲,技术方面的能力,由各个用人小组就负责了。比如说哪个小组需要用什么人,他们自然而然就会评估这个人的水平,所以我的考察一般都是基于个人素质方面。一般都是考察一个人在某一件事情上面,曾经到达过那种高度。


我曾经跟 HR 说,给我面试的应届生,我只要 985 的毕业生,其他的不要推给我,就是认为他们既然在学习这种事情上面能够达到前 1/100 的高度和水平,那还是比较厉害的。但如果他不是 985 毕业的,那么我们要招他的时候,他多半已经参加工作好几年了,这时我就会考察他具体参与过哪些项目,或者在哪项技术上面做的比较好,到底好在什么地方。


我为什么要考察这两点?我希望他是有一些成功经验的。对于有成功经验的人,我需要做的事情就很明确了,就是要让这些员工把自己成功的经验复制出来。通过各种方式激励他,让他投入更多的精力,让他把成功的经验发挥出来,因为你成功过。只要你成功过,无论如何,你总会有一些不同的地方,比如你非常聪明,或者工作非常努力,总会有一些成绩,一些东西是和别人不一样的。所以我一般都会关注求职者的成功经历。


InfoQ:在找工作的时候,是去大厂还是去小厂,您是怎么看的?


关胜亮: 去大厂还是小厂,也要看自己做哪些事情。去大厂有个好处,你可能会觉得虽然你没有做到核心开发,这很正常,因为刚开始一两年不太容易做到,但你有很多学习的机会,很多代码仓库,你都有权限去看。这时,你就能够学习很多知识,但这其实是针对大概五年前、十年前而言,因为那个时候开源软件还比较少。你要想学习这些东西,只能去大厂。


现在,这种开源软件越来越多,我们可以通过各种不同的渠道去学习知识,这时,如果你进大厂,还没有比较核心的岗位,可能就不一定好了。如果你真是技术能力比较强,那我建议去一些相对比较小的公司,因为比较小的公司里,你的竞争对手也会相对弱一些。这时,你就很容易出类拔萃。如果你喜欢做管理岗,或者喜欢做核心技术攻关,可能都能够轮得到你,你的成长就会非常快,因为成长还是一定要通过实战来完成。去了大厂你能够学到东西,但不一定有机会去做。

数据库行业发展现状与展望

开源数据库不会冲击商业数据库市场


InfoQ:现在开源数据库越来越多了,会不会冲击商业数据库的市场呢?


关胜亮: 这倒不会。开源和商业并不矛盾,完全可以把它们合二为一,我们公司主推的就是开源商业模式。但开源不是免费,开源也是有偿的服务,你可以用我们的软件,但是当需要我们提供服务的时候,我们还是能够获取一定的报酬的。


简单来讲,当你的公司具备一定的技术能力,并愿意在这方面投入自己的维护成本,那你用开源软件就可以了,出了问题你自己可以解决它。那么还有一些公司,尤其是像一些并不以技术特长为主的,比如一些传统企业,还有一些小一点的技术公司,他们虽然技术能力比较强,但他们希望把技术放在真正的业务上面,不希望在基础软件领域投入太多,这时候,他们就会购买开源软件的服务。我们公司的盈利模式也是这样。我们给一些真正有需要的公司提供服务,给一些技术能力比较强的公司提供更多的选择,让他们自己免费使用。同时,这也可让越来越多的用户使用我们的软件。


我们知道,数据库不是设计出来的,而是用出来的。你没有那么多的场景,就没有办法发现那么多的问题。当时有很多人质疑我们说,TDengine 为什么迭代速度这么快,我们两周甚至一周就发一个版本。当时我就说,那是因为有很多用户,他们提出了很多问题,所以我们才能有这么快的迭代速度,才能有这么多的新功能。如果真的都没有人用的话,那么你的软件永远都是稳定的,一个不运行的软件它怎么可能有 Bug。


TDengine 既有开源的部分,也有商业的部分。如果是一个纯粹商业数据库,它就没有免费版本,它们的生存空间已经越来越小了。尤其是一些新型的数据库,它们没有办法竞争过 Oracle、Postgre、MySQL 这样一些成名的数据库。它们也没有办法去跟一些开源数据库竞争,因此,它们的生存空间会越来越小。


这也是最近几年,开源数据软件蓬勃发展的一个主要原因。像时序数据库、图数据库、内存数据库这样的数据库,现在蓬勃发展起来了。像工业制造业的发展过程一样,大数据架构也会细分为越来越多的零部件,这个领域里也产生了盈利能力很强的公司。但是进一步去看就会发现,这样一些盈利能力很强的公司,他们最核心的技术都是开源的。所以我们说,纯商业收费库是没有发展前景的,我们一边开源,一边做商业,这样的公司是符合技术发展潮流的。


InfoQ:数据库上云对数据库行业的冲击大不大?


关胜亮: 其实不是很大。MySQL 这个公司很知名,大家买云上的 MySQL 也花了不少钱,但是实际上,这个钱都被云厂商挣走了,MySQL 公司本身并没有挣到太多的钱。


随着这种方式的发展,大家发现,如果我们做开源,最后自己都没有拿到更多的收益,这肯定不合适,所以现在大家提供了一些新的开源协议,包括我们公司,这并不是为了阻止大家免费使用,而是我们不希望自己的产品被公有云软件公司拿去部署,而我们只是给人做嫁衣。有了这样一些协议的保护之后,上不上云已经对我们本身的发展,影响就不是太大了。


上云的理念在这些年,尤其是近几年也确实是一个蓬勃发展的状态。一般来讲,很多应用方都会主动把大数据平台上云,有的是公有云,有的是私有云或者混合云。而且,越来越多的数据库公司,像国外的比较厉害的 Snowflake、Databricks,我们发现,上云使他们的产品得到了更好的推广,因为很早以前,软件部署非常困难,需要耗费很多人力。通过上云,就可以扩大这些数据产品的应用范围,甚至创造出新的价值。


所以我的结论应该是影响不大,可能还有很多好处,因为我们公司的产品现在也在上云。我们也跟一些云厂商进行合作,比如华为,在他们的云市场上就可以购买到我们的产品。上云,如果我们把握好这个机遇,对于数据库有非常好的促进作用。

2023 年,数据库最值得关注的技术趋势

InfoQ:新的一年开始了,这几年数据库也挺火的。您能否展望一下今年或者说未来三到五年,数据库的哪些技术点值得大家关注,或者说有比较大的发展潜力?


关胜亮: 我觉得潜力还是在一些比较专业的数据库领域。现在来看,通用技术方案越来越难以解决一些专门的技术问题。我们要从技术的角度去寻找自己的赛道。


我们看到,顶级的开源产品,像国外的 Kafka、Mongo,国内的像 TiDB,包括我们的 TDengine,有很多拥有上万 Star、上百贡献者的软件,都把精力放在了自己比较擅长的领域,然后让其他厂商去做数据集成。因此,我觉得,一定要说哪一个技术方向一定会火,这不好判断。但是,这种技术型的公司,尤其是一些有硬核技术的公司,它永远都会活下去。可能你这一家公司活不下去,但是另外一家公司也会活下去。


我们始终相信,硬核技术永远都不会过时,而且只有技术能带来新的元素。因此我也希望,大家如果要找工作,还是要找一些有硬核技术的公司。基本上,这些公司,因为各种原因,可能不会 100%全部都活下来。但是,对于个人发展来讲,它是一种很好的技术沉淀。


InfoQ:您谈到,很多技术方向都有很大的发展潜力。对于这个行业的从业者,对于数据库工程师来说,他们应该怎样去抓住这些机会?有没有可能,他们可以根据这些技术趋势去提升自己的技能,然后做好准备?


关胜亮: 我觉得,很多年轻人都有一种顾虑,就是觉得自己怀才不遇。他们会一边工作,还一边去做一些跟工作本身没有关系的其他准备工作。比如我现在正在开发其他软件,然后去想,什么时候能成为一名数据库工程师。我觉得,大可不必这样做。


我一直都认为,真正的能力都是实战中锻炼出来的。回顾自己成长最快的时候,都是加班最多的时候。我们会发现,积累的并不是技术能力,而是做事情的方法。我觉得,最重要的是,在实际工作中看一些技术书籍、管理书籍,然后去思考怎么样把一件事情做好,掌握把事情做好的方法,并在实践中不断验证和修正。把事情做好的方法才是真正的工作经验。我不建议大家去学习某一些新的方向,除非你现在没有工作,处于待业阶段。

国产数据库如何加速?

InfoQ:这两年,因为一些原因,我们国家在科技方面,尤其是在基础软件方面,国产化的呼声特别高。就数据库来说,在走向全球、走向一流方面,国内似乎没有国外做得那么好?关于这个问题,您觉得应该怎么样解决?


关胜亮: 其实我们现在做的也不见得比国外差很多,像现在国内比较流行的一些软件做的都不错。我也会参与一些开源软件活动,他们之所以没有在国外打出名气,主要是因为国外很多时候也和我们一样。我们都喜欢用本土化的,像之前去 IOE,我们不喜欢用国外的软件。这给类似我们这样的数据库软件提供了很多土壤。国外也是这样,他们一看这个软件不是他们国内本土开发的,也有这样的效果。


我记得,前几年互联网比较火的时候,大家都做互联网,做的差不多了之后,大家就开始希望用互联网的思维去改造传统的工业领域。但是这种改造,说白了,并没有一些硬核技术,都还是用同一种互联网思维去改造工业,并没有产生新的价值和新的业务场景,重写一遍业务系统的意义并不是很大。这时基本上就宣告了,用这种互联网的思路解决不了问题。


所以,经过这两三年的沉淀,我们会发现,越来越多的企业、创业团队,包括一些资本,把资金投入到了小而精的专业数据库上。这些小而精的专业数据库发展的非常好。因为我们国内是一个非常大的市场,什么样的场景都有。


我觉得,再经过三年左右,国内还会涌现出更多的类似这样的数据库软件。像我们 TDengine,可能也会在国外拥有一席之地。


InfoQ:您刚才提到在国外有一席之地,那咱们现在是不是有出海计划了?


关胜亮: 对,我们已经在美国组建了销售团队,也招了不少人。预计明年初就会在国外推广。但到底能不能成功,这个不好说。


我觉得,做基础软件一定要耐得住寂寞,不要盲目地扩大,也不能盲目地悲观。如果这次在国外没成功,那最重要的是复盘,看看我们到底还差在哪儿,去做一定的改造。出海不成不一定失败,重要的是得到很多经验教训。我们看到,去美国难度会比较大,但是去东南亚,包括台湾和日本,国内的很多软件竞争力都非常强。所以从这个角度来讲,我们如果能够真正知道美国到底要什么,我们的基础软件肯定会越来越好。


InfoQ:涛思对数据库未来发展的战略,既有本土化战略,也有出海规划。从这个角度看,是不是说国内数据库的发展,未来必须要走出海这个路径?


关胜亮: 目前来看,绝大多数做的不错的技术团队,都不是由一些大公司孵化的。因为我们知道,孵化这样一个团队,收益相对会比较低,尤其是刚开始的创始团队,收入会比较低,获得的股份会比较少。每个人,做自己的事情和做公司的事情,投入肯定是不一样的,战斗力也不一样。所以我们看到,这样的公司恰好都是独立但有资本支持的一些公司。有资本支持的公司又希望投入收益能最大化,那么怎么才能够收益最大化?如果仅仅在国内,虽然国内市场也挺大,但在国内市场,资源很重要。谁拥有了资源,谁就能够获得市场。


相反,对于技术型市场的开拓还不是特别多。虽然近些年来,在国内,我们也凭借技术获得了很多客户。但是,也有很多客户,尤其是一些比较大的客户,他们并不关注你的技术怎么样,他们关心的是你的资源网怎么样。我们要想提升知名度,获得更多的社会认可,包括更高的估值,我们必然就希望到国外去做一些工作。


在国外成功占据一席之地之后,在国内也就更好推动。比如说,我们去做一个数据库软件的投标。在业务选型里面写上 Oracle 和 MySQL,大家都不会有任何问题,因为这都是大家公认的业界标准。但是如果你写上了一个不知名的小数据库,那么大家就会怀疑,这里面是不是有什么套路啊?也就是说,如果能够成为事实标准,就能够给公司的发展带来一个非常好的直接的推动作用。我们希望先从国内走出去,再从国外走回来。通过这种迂回的方式,能够把一个公司真正做大做强,并且能够有更多的业务场景,使产品的稳定性、易用性都变得更好。


InfoQ:国产数据库要想取得突破,一个关键的问题是不是就在于人才?


关胜亮: 我觉得,一个软件的成功失败不在于个人能力,最主要的是组织能力。刚开始三五个人的时候,就可以做一个东西出来。但是,如果你投入的只是这样一个团队,做出来的东西,势必就不会有那么大的价值。换句话说,它的功能不会特别全。我们就必不可少的要扩展研发规模,包括其他团队的规模。这时,组织能力就凸显出来了。


我觉得,国内软件行业跟国外软件行业最大的区别还是组织能力。我们看到,我们的员工跟国外的一些顶级研发人员比起来,个人能力差别并不大。那么为什么国外的知名公司,他做出来的东西总是很好,很稳定呢,他有什么秘诀呢?其实就是他的管理能力比较好。


我现在比较喜欢把这个管理能力称为组织能力,就是组织一些人完成一件事的能力,我们比较欠缺这样的能力,而并不在于说我们有什么样的人才。如果一定要说人才的话,就是具有组织能力的人才。


当然,事实上,对于组织能力,并不是单单一个人到了某一个公司之后,就一定能够改变整个公司的气氛。甚至说,当你所推动的制度跟其他人的理念不一样时,你可能就待不了太久了。所以,我觉得,从组织上面、从管理制度上面去学习国外,可能还真是一个比较好的前进方法。我们公司现在也是慢慢向这个方面去转型,去了解国外的一些成功的经验是什么样的。


InfoQ:您刚才谈到了很多关于数据库发展的问题,比如资源,可能大厂在这方面比较有优势。那您觉得,在国产数据库发展方面,创业公司要想获得好的发展,他自己需要在哪些方面做出努力?在整个形势也不是特别热的情况下,这些创业公司还是要专注于做技术吗?


关胜亮: 对,越是到寒冬,大家更是要步子迈的小一点,因为实际上现在有一些对赌等等,把一些本来有很多好思路的公司都搞得最后走向了一个不好的状态。如果你没有一个创业者在前面做领头,虽说资本把公司拿去了,但它最后也发展不了。为了保住公司,让它更好的度过寒冬,如果公司剩了不到半年的钱了,你该怎么办呢?


我觉得还是要在技术上去做,而不是去做太多市场方面的东西。关于市场,我们从两方面去理解。一方面是做一些市场活动,比如到很多地方去做广告、做宣传。这势必会有一些投入,这种投入要降低。


还有一种是为了能够打开市场,获得越来越多的客户,我们需要有很多的销售团队。但是,扩大销售团队如果不能获得高收益的话,投入可能就会损失掉。而且,即便你真正拿到很多合同,但是,那很有可能跟你这个公司本来的定位是不一样的。为了完成这样的合同,你可能会把公司里面比较核心的开发能力,投向了容易拿到市场合同的技术方向上。最后,从一个技术型的公司变成一个项目型的公司,处于一种只是勉强活着的状态。当寒冬过去之后,你就会发现,自己所赖以生存的技术已经被其他公司远远抛在后面了。这时,等待你的最终也还是同样的结局,只不过就是死的晚了一点而已。


所以我觉得,不管怎么样,还是要把握住自己做事的初心。希望做成什么样的产品,希望做成什么样的盈利模式,要秉持住这样的想法,不要被外界的诱惑所吸引。

同侪寄语:穿越寒冬

InfoQ:2023 年刚开始,新的一年,您能为数据库工程师这个群体送上一句祝福的话吗?


关胜亮: 我希望大家都能够熬过这个寒冬,在疫情过去的时候,在 2023 年,都能够得到一份满意的工作,获得一份满意的收入。


InfoQ:很多人都在做自我提升,尤其是在寒冬的时候,大家觉得,修炼好自己的内功,才能够让自己具备穿越周期的能力。自我提升很重要的一个渠道就是看书,您能不能给大家推荐三本数据库开发相关的书籍?


关胜亮: 我也就看了十来本。我觉得,比较好的一本是《数据库系统概念》,这是一个比较经典的数据库系统教科书。刚入门的话,可以看一看这本。然后可以看一看《Redis 的设计和实现》。它比较全面的描述了 Redis 内部的运行机制。如果你的经验还不算丰富,则可以通过这本书了解目前业界是怎么解决这方面的问题的。第三本是稍微进阶一点的,就是《数据库系统内幕》。它主要介绍了存储引擎并发控制的一些核心技术。这本书讲的稍微乱一点。它最后面的两三章里面讲到了 B+树和 LSM,这一块可能会对你产生一些启发作用。现在所有的关系库,包括 NoSQL 的库,包括 TDengine,可能都用到了这些技术。这应该是必备的一种技术要求,大家可以看一看。

2023-01-19 12:098732
用户头像
刘燕 InfoQ高级技术编辑

发布了 1012 篇内容, 共 374.8 次阅读, 收获喜欢 1769 次。

关注

评论

发布
暂无评论
发现更多内容

聪明人的训练(二十)

Changing Lin

4月日更

抢购倒计时自定义控件的实现与优化

vivo互联网技术

动画 安卓 自定义控件 倒计时

计算机原理学习笔记Day11

穿过生命散发芬芳

计算机原理 4月日更

三色标记原理,我给应聘者问懵了...

华为云开发者联盟

Java 节点 三色标记 SATB算法 回收器

重磅更新!运维工程师打怪升级进阶之路 3.0(体系化带你全面从入门到企业实战)

民工哥

Linux 后端 linux运维 运维工程师 linux学习

全程干货!拍乐云受邀LiveVideoStackCon,首席科学家分享拥塞控制最佳实践

拍乐云Pano

架构实战营 - 模块 2- 总结

吴建中

架构实战营

多源数据即席查询Trino(Presto)引擎剖析

小舰

4月日更

MySQL常用引擎及优缺点

Sakura

4月日更

Rust从0到1-枚举-if let控制流

rust 枚举 if let

架构实战营 - 模块 2- 微信朋友圈高性能复杂度分析

吴建中

架构实战营

华为云PB级数据库GaussDB(for Redis)揭秘第八期:用高斯 Redis 进行计数

华为云开发者联盟

redis GaussDB(for Redis) 计数器 计数

低代码:正在改变软件的开发方式

华为云开发者联盟

软件开发 低代码 低代码平台 华为云应用魔方 AppCube

阿里员工:最惨P7,33岁才28K,感觉没有前途了。网友调侃:最美逆行者

程序员生活志

【LeetCode】实现 strStr()Java题解

Albert

算法 LeetCode 4月日更

搭建亿级时间线数据的监控系统,我有绝招!

华为云开发者联盟

Grafana 监控系统 GaussDB(for Influx) 华为云数据库 时间线

Linux tree命令

一个大红包

Linux linux命令 4月日更

【签约计划】行业分析能力考核成绩公布

InfoQ写作社区官方

签约计划 热门活动

GitHub开源:100美元自制激光雷达

不脱发的程序猿

GitHub 开源 DIY 4月日更 激光雷达

我很久没写代码了,但我是个好架构师

四猿外

Java 程序员 系统架构 架构师 代码

【全网首发】2021年移动开发iOS进阶提升方案,内附详细视频知识点解析和思维导图!【强烈建议收藏!】

flutter swift 数据结构与算法 ios开发 iOS逆向

使用 Amazon SageMaker 特征存放区存储、发现和共享机器学习特性!

亚马逊云科技 (Amazon Web Services)

神级Android进阶笔记!一次关于JVM的面试经历,建议收藏

欢喜学安卓

android 程序员 面试 移动开发

面试加分项!为了跳槽强刷1000道Android真题,附小技巧

欢喜学安卓

android 程序员 面试 移动开发

行动起来!为迁移到自己的证书颁发机构做好准备!

亚马逊云科技 (Amazon Web Services)

NoCode 实战 | 想要开发在线选课系统?何必那样大费周章!

亚马逊云科技 (Amazon Web Services)

芯片设计软件上云新思路!看珂晶达如何高效拓宽市场 | 精选案例

亚马逊云科技 (Amazon Web Services)

iMazing 一款替代iTunes的数据备份软件

懒得勤快

ios Mac imazing 手机管理

腾讯万字Code Review规范出炉!别再乱写代码了

程序员生活志

寒冬未散,手里没点“必杀技”,怎么翻过浪浪山? | 展望数据库工程师的2023_AI_刘燕_InfoQ精选文章