dbaplus社群

PostgreSQL之父炮轰半个行业:吐槽Oracle、痛批谷歌,直言计算机行业红利消退

目录

一、进入数据库领域的契机

二、与Oracle的竞争

三、Postgres的独特之处

四、“一种架构不适合所有人”

五、为什么不同意谷歌和亚马逊的做法

六、为什么选择学术界而不是大型科技公司

七、用数据库替代操作系统中的状态管理

八、数据库的挑战与未来

九、给年轻时的自己的建议

今年是PostgreSQL诞生的30周年。

作为PostgreSQL的创始人,Mike Stonebraker是图灵奖得主,也是数据库领域最具有影响力的学者之一,先后主导打造了Ingres、Postgres等深刻影响整个行业的核心系统,以在数据库底层技术上的开创性贡献闻名于世。

在近期一次访谈中,Stonebraker回顾了自己如何进入数据库领域以及从Ingres到Postgres的演进历程与关键技术突破,并坦诚分享了在数据库架构理念上与谷歌、亚马逊等科技巨头的分歧。面对当下的AI热潮,他也谈到对文本转SQL、智能体AI与数据库未来方向的判断,以及他目前正在推进的DBOS等前沿研究。

Image

以下为这场访谈的中文编译。

一、进入数据库领域的契机

Q:您最初是怎么进入数据库这个领域的?

Stonebraker:毕业后我有幸进入伯克利工作。但我很清楚,继续做博士期间的研究的话,无论是当时还是今天都不会有什么前途。如果能遇到一位懂行的导师引路,会少走很多弯路。Gene Wong至今仍然健在且活跃,他当时收我为徒,提议我们一起做点研究。

那是1971年,也就是Ted Cod在《CACM》上发表开创性论文的第二年,Gene提议我们研究数据库方向。当时的竞争方案之一是Codasyl方案,年轻人可能没听说过,它是一种底层网状模型,查询需要沿着指针遍历。另一种是IBM的方案,也就是IMS,这套系统现在依然在使用IMS是层次型数据库,数据按树形结构组织。即使在当时,IBM也意识到树状结构并不够通用,不足以解决很多人的问题。于是他们想出了一个办法,把它改成了有限的网状结构。很明显,这是一个糟糕的办法。Codasyl方案除了底层复杂、难以调试之外,还有一个问题:一旦数据结构(也就是现在所说的schema)发生变化,整套系统基本就要推倒重来,因为它完全绑定在物理存储层。相比之下,Ted Cod的方案则合理得多。

于是Gene说,我们就做个Ingres吧。1972年,我们开始开发Ingres。助理教授大概有五年时间证明自己,要么被解聘,要么获得终身教职。Ingres是我拿到终身教职的门票,而我在1976年如愿以偿。事情就是从这里开始的。

当时很多人会做原型,但有点像学生水平的代码。也就是说,你自己能运行,但给别人就运行不了。所以我们先投入了90%的精力,做出了一个可以运行的版本。然后又投入了90%的精力,让它真正能落地使用。加州大学版本的Ingres最后做得还不错。

之后几年,大约有100所大学开始使用它。因为UNIX系统当时非常流行,这是一个运行在UNIX上的免费数据库系统,所以在学术界非常受欢迎。伯克利也因此迎来了很多前来交流的访客,他们会说:“哇,这东西看起来真不错。你们最大的实际生产应用是什么?”我们往往只能回答,并没有特别大规模的场景。

后来亚利桑那州立大学考虑用Ingres处理他们4万名学生的学籍数据时,我们更加深刻意识到这一点。他们可以接受使用贝尔实验室不被支持的操作系统,也可以接受伯克利这套不被支持的数据库。但当他们意识到Unix系统上没有COBOL程序时,这个项目就彻底失败了。不被支持的操作系统、不被支持的数据库,再加上没有COBOL,注定了我们会被淘汰。很明显,唯一的出路就是创办一家公司。1980年,我们拿到了风险投资,成立了Ingres公司,把Ingres迁移到DEC VAX上。

我们有了正规的公司来维护和支持Ingres,这就是我们商业征程的开始。

二、与Oracle的竞争

Q:我了解到Ingres当时在和Larry Ellison的Oracle产品竞争。我个人感觉Ingres明显比Oracle的产品好,但Oracle那边居然还能竞争下去,他们是怎么做到的?

Stonebraker:Larry Ellison是个了不起的销售。在那个年代,他能把现在能做到的和未来才会有的说得一模一样,所以他基本上是在欺骗顾客。他会把一些根本用不了的东西寄出去,让早期的顾客帮他调试。在我看来,他采取的是一些非常不光彩的商业手段。而欺骗客户,我认为这是毫无职业道德可言的。

举个例子,当时有个概念叫“参照完整性”。意思是如果你解雇了一个员工,而他是某个部门的最后一名员工,你是想解散掉这个部门,还是想让它成为一个“幽灵部门”?Ingres公司实现了参照完整性。而Oracle只是写了两页文档,上面写着:这是业界公认的参照完整性定义。然后在文档最底下标注了一行:尚未实现。

Q:我采访过一位曾在Sun Microsystems工作过的人,他们也有类似的看法,认为Larry Ellison有点不靠谱。看来大家对他的评价都差不多。我还在别的地方看到你提到过,Oracle收购MySQL之后,大家都有点慌,于是纷纷转向了Postgres。

Stonebraker:这就是Postgres开始取代MySQL,成为主流开源关系数据库的起点。

三、Postgres的独特之处

Q:Ingres有很多技术创新,比当时的主流产品都好,但它最终还是被淘汰了,于是您又开发了Postgres。Ingres有哪些做不到而Postgres做到了的?

Stonebraker:最开始驱动我们的核心原因,是学术版Ingres的初衷:为了支持教授Praveen Varia想要的地理信息系统 (GIS)。要支持GIS系统,就需要点、线、面、线组这类数据类型。但Ingres无法做到这一点。因为Ingres的数据类型都是标准的整数、浮点数、文本和字符串,在这个基础上没有办法高效地支持GIS类型。所以,学术版Ingres在GIS场景下完全失败了。这一点我们一直铭记在心。

还有一件事,时间线稍微有点乱,但能说明问题:大概1985年,商业版Ingres推出时,关系数据库刚提出了日期时间标准。于是Ingres商业版按标准公历实现了日期时间功能。当时我还在加州大学当教授,所以也参与了Ingres商业版的开发。后来我接到一个Ingres客户的电话,他说:“你们的日期时间实现错了。”我当时就懵了,我们用的是标准公历,日期相减完全没问题。大月31天、小月30天,二月和闰年也都处理好了,日期计算完全符合预期。但他说:“在我的业务场景里,这不是我想要的。”他说自己在做债券业务,不管每个月实际有多少天,债券每月的利息都是固定的。他有债券买入日和卖出日。他想直接用日期相减,再乘以票面利率,算出应付利息。

当然,他所谓的减法是3月15日减去2月15日等于30天,因为这是他日历的定义。所以他必须先从用户代码中获取两个日期,进行减法运算,然后再把结果写回去,这让他的效率降低了两到三倍。于是他说:“为什么我不能直接重载你们的减法定义,用我自己的规则?”但Ingres里这些逻辑都是硬编码的,根本改不了。

问题就在这里:他需要“债券时间”,就像GIS需要点、线、面一样。所以Postgres从一开始就设计了可扩展类型系统,你可以定义任何需要的数据类型,而且效率很高。Postgres的核心在于它的灵活性。正如你所知,在传统业务数据处理中,大多数人用标准类型就够了。

但关系数据库开始扩展到到各种新领域。抽象数据类型、存储过程这类技术,适用性变得非常广,这就是 Postgres 的最大优势。当时,我们还在Postgres里实现了当时AI领域需要的继承特性,也做了“时间旅行”功能,但实现得太烂,后来就删掉了。

总之,Postgres里有很多很巧妙的设计。

四、“一种架构不适合所有人”

Q:您有一篇论文提出过一个观点:一套数据库系统“适合所有场景”并不理想,实际上没有任何一种架构能适配所有场景。真正需要的是面向特定需求的数据库方案。在您看来,如今市面上有哪些数据库产品依旧在走 “通用型” 的路线?

Stonebraker:2004年我写这篇论文的时候,我们正在做一个学术项目,也就是后来的 Streambase。流处理引擎的架构和关系型数据库完全不同。我们当时初步构思了适用于数据仓库的列存架构,也就是后来Vertica普及的技术,但它和其它数据库架构也截然不同。所以,这里有三种截然不同的实现方式,彼此之间没有任何相似之处。

而且这三类专用系统,性能都比通用数据库高出一个数量级。这就足以说明:如果你的业务场景,跑的是一套并非为该场景设计的通用数据库,性能就会直接差一个量级。这个结论放到今天依然成立。比如Clickhouse是列式存储的数据库,Pinecone在文本向量处理上也远优于通用数据库的自定义类型实现。这种情况依旧非常普遍。其实在多种底层架构之上,封装统一的SQL解析器并不难。但Postgres至今没有这么做,它没有实现列存架构,所以在中大型数据仓库场景完全没有竞争力。同时它也不支持多节点分布式架构,而这是大型数仓场景的基本要求。

所以我觉得这句话现在依然适用。如果你遇到数据库问题,想要着手开发,答案就是选择Postgres。它拥有庞大的开发者社区,支持丰富的数据类型扩展,开源免费,而且很容易找到Postgres的技术人员帮你快速上手。对于大多数用户来说,如果你不需要每秒处理一百万笔交易、不需要PB级数据仓库,在低端应用场景下Postgres是最佳选择。但在高端场景下,情况就不同了。

Q:GPU是否为数据库的性能优化带来了新的机会?

Stonebraker:有可能,但我认为最大的挑战是GPU基于SIMD单指令多数据流架构和索引查询的工作机制格格不入。如果索引操作是正确的解决方案,那么GPU可能就不是个好选择。同时,架构设计也必须考虑到这一点,即存储带宽不会成为瓶颈。而GPU大多是CPU的附加组件,那GPU和CPU的总线传输往往会成为性能瓶颈。

Q:为什么SIMD架构会让索引失效、性能变差?

Stonebraker:举个例子,假设我要通过B树索引查询你的薪资数据。需要先访问B树根节点,定位数据分界节点,再跟随指针向下查找,这每一步都是独立的内存访问,通常需要重复三四次。整个过程无法并行计算。这就是索引无法适配SIMD并行架构的核心原因。

Q:您之前提到,Ingres最初版本用到了B树结构。当时所有代码都是纯手写的吗?我印象里那个年代应该没有现成的B树开源库可以调用。

Stonebraker:没错,Ingres最初的版本,所有代码都是从零手写开发的。

Q:整个开发过程中,最难的部分是什么?

Stonebraker:查询优化器。算法本身就很复杂,哪怕现在你问大多数资深数据库程序员最难的部分是什么,他们仍然会说是MapReduce优化器。

五、为什么不同意谷歌和亚马逊的做法

Q:MapReduce大约在21世纪初问世,在数据领域掀起了轩然大波。大家对它印象深刻,认为谷歌非常专业,简直是划时代的创举。但从我查阅的相关文献以及您当时的观点来看,您似乎非常不认同。为什么如此反对MapReduce?

Stonebraker:我觉得当时有很多见识浅薄的人说:“谷歌很厉害,他们肯定知道自己在做什么。所以我们会听他们的。”于是他们就投入到Hadoop项目中,但Hadoop的效率低得离谱。当时,像Dave DeWitt和其他参与我们2011年那篇论文的学者都很了解分布式数据库,也明白用分布式数据库可以碾压Hadoop,这也是那篇2011年论文的核心结论。

但这并非谷歌唯一愚蠢之处。谷歌还认为,最终一致性是实现并发控制的正确方案。在同一时期,谷歌高层也提出了这一观点。但事实并非如此。所有数据库专家都说,这个想法不切实际。因为最终一致性只能解决某一类特定类型的问题,而这种场景在实践中非常少见。

Q:他们为什么追求最终一致性?

Stonebraker:假设有一个东海岸数据库和一个西海岸数据库,互为副本,你希望它们数据保持一致。假设我要执行一个事务,将西海岸仓库中的商品数量减一,那么在提交该事务之前,我会更新东海岸仓库,需要来回发送消息完成同步。为了确保无误,还需要再一次消息往返,保证两边都正确提交。所以分布式提交的成本很高,直到今天依然如此。于是他们的思路是:只在西海岸执行更新,把商品数减一,然后异步发送一条消息,不纳入事务控制,让东海岸仓库最终也同步减一。与此同时,如果东海岸也把库存减一,同样发送异步消息,西海岸最终也会同步,数据最终会趋于一致。但如果允许库存出现负数,就会出现问题:东西海岸同时卖出了最后一件商品,最终仓库库存会变成 -1,就有人拿不到货物。

如果你像亚马逊那样,通常24小时内发货,或许可以超卖。但大多数企业做不到这一点,所以最终一致性就行不通了。我们很久以前就讨论过参照完整性。销售系统中的参照完整性约束是库存大于-1。而最终一致性无法满足这个约束。

最后谷歌的Jeff Dean解决了这个问题。他们开发Spanner时,采用的是传统事务系统。因此,谷歌彻底放弃了最终一致性,也彻底放弃了MapReduce。这是性能与数据完整性之间的权衡。如果你不在乎数据,自然可以接受各种异常结果。

Q:您在其他科技巨头身上也见过类似情况吗?比如亚马逊或Facebook,他们的数据库方案是否也有你非常不认同的地方?

Stonebraker:大概三年前我在亚马逊做过一次演讲,直接指出了我认为他们所有不合理的设计。我认为亚马逊的问题在于他们同时维护着15套不同的数据库系统,多出来了大概12套。他们有自己的企业文化,我也跟他们说过,你们维护的数据库太多了,但直到现在,他们也没有淘汰任何一套。

Q:为什么说15套应该精简到3套?

Stonebraker:他们是基于图数据库系统,但众所周知,图数据库几乎从来都不是性能的最佳选择。如果你想要一个图的形态,想要一个能够处理节点和边的用户界面,那没问题。在关系型数据库之上封装一层来实现。他们大多数数据库,在某些方面都比他们的其它数据库更好。所以正确的做法是下线淘汰。任何在足够大的市场里性能不佳、又不值得持续维护的数据库,都应该被淘汰。

六、为什么选择学术界而不是大型科技公司

Q:您立足学术界,却对整个行业产生了深远的影响。我一直很好奇,相比于加入AWS这类企业、担任顶尖资深工程师,您为什么更偏爱留在学术界,以这种方式输出行业影响力?

Stonebraker:因为进入企业就意味着你有了老板和公司规章制度。这会限制我的论文发表、限制我参与行业会议公开分享,也会限制我调研、探索各家竞争对手不愿对外公开的技术细节。但最主要的原因是,我非常喜欢初创公司的氛围。在Postgres商业版被Informix收购之后,我曾在这家两千人规模的公司做兼职。但我感觉自己无能为力,因为公司官僚作风严重,总裁想要什么就能得到什么,所以我觉得我真的不适合职场博弈。而且我很难和那些我认为很蠢的人打交道。

七、 用数据库替代操作系统中的状态管理

Q:我觉得DBOS是一个非常有趣的技术模型,您能解释一下DBOS是什么吗?

Stonebraker:我们在2019年或2020年左右启动了这个学术项目。当时,斯坦福大学的Mate Zaharia教授(他也是Databricks的创始人之一,Spark的最初创建者)表示,当时Databricks基本上是在云端运行用户的Spark任务,系统同时调度的Spark任务峰值可能达一百万。

我们需要开发一个调度器,支撑百万级任务的大规模调度决策。但我们测试了所有操作系统领域开发的调度器,全都无法实现该量级的扩容。所以我们把所有调度数据都放在一个Postgres数据库中,基本上是由一个Postgres应用程序来执行调度。这时我们突然意识到:操作系统的绝大多数核心工作,本质上都是大规模数据管理,而这项工作本就该用数据库技术实现。

既然如此,我们为什么不干脆用数据库替换掉Linux的上层核心模块呢?这就是这个学术项目的要点。21世纪20年代初,我们在伯克利分校和斯坦福大学开展研究,项目取得了巨大成功,方案完全可行。在此过程中,斯坦福大学的研究人员开发了一套JavaScript扩展,提供了可对接这套全新系统架构的编程环境。

如果你在开发一种类似于编程语言的东西,并且运行在一个类似于操作系统(也就是数据库)的东西之上,那么显而易见的做法就是把所有程序状态都放在数据库中。而他们也正是这么做的。因此,我们拥有了一种创新的编程语言模型,一种创新的操作系统模型。紧接着我们萌生了一个想法:能否将这项技术商业化并且成立一个公司?

我们和风险投资人沟通过后,他们都认为:想要取代Linux是天方夜谭。但这套编程语言技术非常出色。我们当时开发了一些JavaScript扩展能力,可以让任何程序都拥有数据库系统的各种优点:数据持久化、事务、故障时自动切换等等。

2023年,我们获得融资,成立了DBOS公司。项目一直叫DBOS,所以公司也沿用了这个名字。当时公司主要聚焦编程语言方面的业务。目前,DBOS已适配TypeScript、Java、Go、Python四种主流编程语言,各语言之间可以无缝衔接运行。它可以在云端运行原生标准程序。开发者完全有充足的理由,将应用架构设计为工作流模式,所以我们决定原生支持完整的工作流系统。DBOS为四种语言提供的工作流能力可将流程中的每一步微操作封装为事务性、可持久化的单元,一旦执行完成,状态永久留存,不会丢失。

如果市场需要,我们可以实现工作流的原子性,这意味着整个工作流要么完成,要么看起来就像从未发生过一样。它具有非常优秀的特性,并且比竞争对手的产品速度更快、使用门槛更低。所以,公司正在该领域进行销售和创新。其核心理念是:将应用的所有状态存入数据库实现持久化,同时保障整体运行的高效性。正如我们之前讨论的,它的商业模式核心是吸引基层开发者。核心思路是:收集一线开发者的需求,快速补齐缺失功能,吸引用户试用。目前我们已经和大量追求最优技术方案的初创公司达成合作,同时也逐步获得大型企业的认可,这是一个很有意思的市场。

我认为目前最关键的是,大约三分之二的客户都在研发智能体AI,即在大语言模型的基础上,搭配各类组件补充多维信息与数据信号。现阶段绝大多数智能体AI都是只读场景,不会更新用户信用数据等信息。但我认为,行业很快会迎来变革,智能体将大规模应用于读写业务场景,这会让AI智能体高度依赖数据库能力,而这正是DBOS 的核心优势。

举个例子,你可以开发两个智能体协作完成转账操作:从我的账户扣款、为你的账户入账,两个操作必须协同确认提交,否则全部回滚。这就是我所说的工作流原子性:要么全部执行成功,要么完全不生效。随着行业对AI读写能力的需求持续攀升,这类技术需求会越来越旺盛。

Q:最初的研究是用数据库彻底替换操作系统的核心内核。这个思路非常新颖,我从没设想过可以用数据库接管操作系统的全部状态管理。这种方案肯定存在一些取舍和弊端吧?

Stonebraker:基于数据库管理系统搭建的文件系统速度优于原生Linux文件系统,调度引擎的性能也不输市面上任何同类调度器。同时可以实现全场景故障转移,不用额外开发,即可达成高可用。简单来说,这套方案几乎没有短板。

Q:那为什么Linux不整合这套技术,完成自身升级迭代?

Stonebraker:我也希望他们这么做。换句话说,你应该把所有设备驱动程序相关的垃圾代码都放在最底层,因为数量很多,而且没人愿意去修改这些代码,其它一切都用数据库实现来替换。

Q:您有没有跟Linux用户提过这个问题?他们的普遍反应是什么?

Stonebraker:做学术研究期间,我跟操作系统开发人员提到这一点时,他们会感到非常不安,认为数据库开发人员想抢占他们的地盘。我想编程语言开发人员也是如此,因为数据库会成为实现编程环境运行时的方式。

Q:这很有意思,客观而言,如果这套方案更好,未来或许会成为主流。

Stonebraker:Java当年也花了十年才被业界广泛接受。这类底层技术的普及,本来就需要很长的时间周期。

八、数据库的挑战与未来

Q:我很好奇您如何看待数据库领域目前还没有解决的难题?以及您认为数据库的未来会是什么样子?

Stonebraker:我想从两个方面聊聊这个话题。首先,和大家一样,三年前我们开始研究大语言模型的落地价值与适用场景。我们一直在落地文本转SQL技术,尝试让这项技术适配真实的业务数据库,尤其是真实生产环境中的数据仓库。我们在四个不同的生产数据库、数据仓库中开展实测,所用的测试负载,都来自真实用户的实际业务运行场景。我们已经对与该SQL对应的文本进行了逆向工程,所以我们有了文本和SQL以及四个基准测试。

Q:您说的文本转SQL,是指人工用自然语言向模型提问吗?

Stonebraker:比如“告诉我所有获得图灵奖的麻省理工学院教授有哪些”,LLM很擅长处理这类问题。目前业界主流的文本转SQL基准测试数据集有Spider和Bird,顶尖的大语言模型在这些测试中表现优异,准确率能达到80%甚至更高。

Q:所以还没有达到超人的水平?

Stonebraker:不是超人,但已经相当不错了,你会去考虑去用它们。当前排行榜上的准确率大概是85%,我觉得已经越来越接近了。你可能会说它还没完全达到可大规模商用的程度,但看起来确实挺不错。不过,在我们的基准测试中,大语言模型的准确率是0%;即便加上RAG和各种技巧,也只能到10%。如果你在提示词中直接提供FROM子句,也就是告知模型需要访问的所有数据表和关联条件,准确率也只能提升至35%左右。所以,这项技术还不成熟。即使成熟,也还需要一段时间。

原因是什么呢?第一,数据仓库的LLM是在数据堆上训练的,而数据仓库的数据并不在这些训练数据中。有句老话说,如果你之前没见过某份数据几次,就不可能把它复述出来。第二,Spider和Bird测试集中的查询复杂度可能只有10到20行SQL,而实际数据仓库查询可能往往有100行SQL,复杂度高得多。第三,Spider和Bird里的schema很清晰:表名和列名都具有明确含义,而且没有重复,但数据仓库并非如此。人们经常创建物化视图,这意味着存在冗余,列名往往是类似下划线 Z,上标点符号等形式,根本不直观,查找数据变得更加困难。

此外,他们还会遇到一些特殊情况。比如,J-term是麻省理工常见的概念,指一月份为期一个月的学期。虽然并非麻省理工独有,但并不常见,所以它并不在训练语料中。特有的数据、复杂的查询、混乱的schema,这些都会让它无法正常工作。而且据我所知,每一个数据仓库都会有这样的问题。所以我认为这项技术在短期内根本行不通。

那怎么办呢?第一,我们发布自己的基准测试,叫Beaver。它是四个数据仓库经过匿名化和抽象化后的版本。所以,如果你觉得自己真的很擅长把文本转成SQL,就来试试真实的基准测试,而不是虚假的那种。第二,正如我刚才所说:如果没有所有连接条件,也没有FROM子句,那你就完了。更何况,如果不把查询拆解成更简单的部分,你同样没戏。

所以在我看来,你应该向检索系统提供更简单的片段,其中包含 FROM 子句和连接条件。如果你想同时查询两个不同的结构化数据库,比如数据仓库和 CRM 系统,我认为,用LLM来执行结构化数据连接并不是好主意。更好的做法是把它们保留为表,然后用SQL来做连接。我们的观点是:尝试把所有内容都转换成表。

我们之前讨论过智能体AI。一旦系统具备读写能力,它就成了一个分布式数据库问题,你会需要原子性、一致性等这些特性。我认为这是一个非常有意思的方向。

九、给年轻时的自己的建议


Q:如果能回到刚毕业的时候,以您现在的认知会给自己什么建议?

Stonebraker:刚到伯克利工作的时候,我们几乎没怎么考虑就决定写一个数据库系统。但实际上我们对数据库一窍不通,对具体的实现也一无所知。所以一开始就做这样的事情确实挺疯狂的。但你努力尝试,最终让它运转起来,并在过程中不断学习。所以我会说:跳出思维定式,大胆设想,尝试去做。

对我来说,更值得问的问题其实是:如果你今天才刚起步,你会选择什么专业?因为我认为计算机科学未来可能不会再是一个增长型行业,我不确定自己会建议18岁的年轻人选择计算机科学专业。我认为医疗保健和建筑行业是比较稳妥的选择,其它行业看起来风险更大。如果你即将获得博士学位,并且正在考虑未来的职业方向,那么我认为选择就比较容易了。先找一份你能找到的最体面的工作,然后找一个愿意帮助你的导师,再选择一个不那么随波逐流的领域,比如我们做的那个叫“Rubicon”的项目,绝对不是那种随波逐流的。所以,选择一个不随大流的方向,然后努力把它做好。我和我妻子都说,去做你热爱的事情,钱的问题总会迎刃而解。其实我一点都不相信这句话,但不得不这样告诉自己的孩子和孙辈。

Q:如果自己都不相信,为什么还要这样告诉他们呢?

Stonebraker:我妻子就是一个很好的例子。她本硕学的都是计算机科学,原本想当一名中小学教师。但她的父母说,你不能那样做,收入不够高。我认为她一直后悔当初听从了这个建议。她并不热爱计算机,对她来说那只是一份谋生的工作而已。所以我认为,应该去找到自己真正热爱的事情。你不会挨饿,也许赚不了多少钱,但我认为你肯定会比做自己不热爱的事情更快乐。因为我认识的很多人都把工作仅仅当作一份工作,他们觉得真正的生活发生在下午 5 点到早上 8 点之间。但我完全不这么认为,我真的很喜欢我做的事情。至于赚多少钱,对我来说并不重要。
整理丨dbaplus社群
来源丨网址:https://www.youtube.com/watch?v=YPObBOwIrHk&list=LL&index=4
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:[email protected]
Image
Image