lch
发布于 2026-05-02 / 0 阅读
0

造了半个数据库行业的图灵奖得主:劝年轻人别学计算机,行业红利正在消失

Mike Stonebraker 是 2014 年图灵奖得主,他对数据库系统的奠基性贡献几乎写进了所有相关教科书。从 IngresPostgres,到 VerticaVoltDBSciDB,再到最近的 DBOS,每一个都是真正成就了诸多商业公司的工程系统。


最近他做客 Meta 资深工程师 Ryan Peterman 的播客,与其进行了一个小时的对话。他说话直接,不太客气。聊到 Larry Ellison 时,他说那人把现在时和将来时混为一谈,本质上是在对客户撒谎;聊到 Google 当年力推的 MapReduce 和最终一致性,他说那不是 Google 唯一一件愚蠢的事;聊到亚马逊同时维护着十五个数据库系统,他说多了十二个


(来源:Youtube


他也表达了对如今 AI 的看法。在他看来,现在多数 agentic AI 还停在只读,给一个客户算个分、出个预测,并不真的去改数据库里的字段。一旦 agent 开始做读写,比如两个 agent 协作完成一笔转账,问题就立刻落回数据库的老地盘:事务、一致性、原子性。


说到大模型写 SQL,他甩出来几个数字。在 SpiderBird 这些公开 texttoSQL 基准上,最好的模型已经能拿到 85% 准确率,看起来差一步就能上生产。但 Stonebraker 团队用四个真实生产数据仓库做了一个新基准 Beaver,在这个基准上,大模型的准确率是 0;加上 RAG 也只到 10%;把 join 条件直接喂给模型,最多到 35%。同样的任务,一个懂 schema 的 SQL 工程师能做到 90% 以上。所以他的结论是:这项技术,至少在可见的未来,还不够格进生产。


谈及对年轻人的建议,他说如今已不太确定是否要推荐十八岁的小孩去主修计算机科学,医疗和建筑业是稳妥的选择


下面是这次对话的完整内容:


在伯克利,被一个懂门道的人带进门


Peterman我第一件想聊的事是 Postgres 是怎么起步的。我想从更早的地方开始,你最初是怎么进入数据库这个领域的?


Stonebraker我毕业之后很幸运被伯克利招了进去,但我心里清楚一件事:把博士时候做的东西继续往下做,不会有什么前途。那时候和今天一样,能找到一个懂门道的导师把你带进门,你就比别人快一截。Gene Wong 把我收到他翼下,他现在还在干活。他说,咱俩一起搞点事情吧。


那是 1971 年,Ted Codd(关系数据库理论奠基人)那篇开创性的论文发表在 CACM(《Communications of the ACM》,计算机领域的顶级刊物)上是 1970 年。Gene Wong 说,我们去研究下数据库这块。当时关系模型有两个对手。一个叫 CODASYL 提案(1960 年代提出的网状数据库标准,把数据按指针网组织),你大概太年轻没听说过。它是个底层的、像意大利面一样缠绕的网状结构,要查一条数据得一路追指针。另一个是 IBM 的 IMSInformation Management SystemIBM 的层次数据库系统,今天还在卖),数据是树形组织的。但 IBM 自己当时就承认树不够通用,解决不了很多人的问题,于是又加了一层补丁,把它变成一个受限的网状结构,一看就是个糟糕的补丁。


CODASYL 那套问题一堆。层级太低,调试起来要命。它还有个性质:一旦你的 schema(数据结构定义)有任何变化,基本就得把所有东西扔了重来,因为它整个根扎在物理层面。而 Codd 那套东西完全说得通。所以 Gene 说,咱们就来造一个这样的玩意儿吧,下一步显然该试这个方向。1972 年他开始造 IngresINteractive GRaphics REtrieval System)的雏形,那时候我刚到伯克利当助理教授。


PetermanIngres 是怎么从一个原型走到真的能用的?


Stonebraker美国大学里的助理教授一般有五年的考核期,要么熬到终身教职,要么走人。Ingres 就是我拿到终身教职的敲门砖,1976 年我拿到了。


那个年代很多人写的原型都是实验室风,自己机器上能跑,拿给别人就跑不动了。Ingres 我们先投入了第一个 90% 让它能跑起来,然后不知道为什么,又投入了下一个 90% 让它真正好用。所以伯克利版的 Ingres 是真能用的。接下来几年大概有一百所大学开始跑它,因为 Unix 起来了,而 Ingres 是一套免费的、跑在 Unix 上的数据库。它在学术圈相当流行。


我们在伯克利开始接待大量访客,他们会说,这东西看起来真不错,你们最大的 Ingres 应用是什么?我们只能说,其实不太大。


当亚利桑那州立大学考虑用 Ingres 跑他们四万学生的学籍数据时,这个问题得到了充分的印证。他们要装一个不被支持的操作系统(贝尔实验室的 Unix),要跑一个不被支持的数据库(伯克利这帮人搞的 Ingres),这两条他们都能接受。但项目最后死在第三条上:Unix 上没有 COBOL(一种主要用于商业数据处理的老牌编程语言),而他们是个 COBOL 的店。不被支持的操作系统、不被支持的数据库,再加上没 COBOL,我们就被判了死刑。


唯一的出路是开公司。1980 年我们拿到了那个年代意义上的风险投资,成立了 Ingres 公司,把 Ingres 移植到 DEC 公司(数字设备公司,当年的小型机巨头)的 VMS 上,一个真正的操作系统、一家真正能支持产品的公司。这就是商业化旅程的起点。


Larry Ellison 把现在时和将来时混为一谈


Peterman我看到 Ingres 当时是和 Larry Ellison 的 Oracle 在竞争。从能力上看 Ingres 明显更好,他们怎么还能跟你们争?


StonebrakerLarry Ellison 是个一流的销售。他当时基本上把现在时和将来时混为一谈,说白了就是对客户撒谎。他会发不能用的东西,让早期客户帮他 debug。我觉得他做的是非常不光彩的生意,对客户撒谎在我看来是不可原谅的。


举个例子,有一个东西叫参照完整性Referential Integrity,关系数据库里的一种约束:一张表里对另一张表的引用必须真实有效,不能指向不存在的记录)。比方说你解雇了一个员工,而他正好是某个部门的最后一个人,那你是要把这个部门删掉,还是留一个空壳部门?诸如此类。Ingres 公司把参照完整性实现了。Oracle 公司写了两页手册,先把参照完整性的定义写出来,这部分大家都同意,然后在底下加了一行:尚未实现。


Peterman有意思。我之前采访过一个在 Sun Microsystems 干过的人,他对 Larry Ellison 的看法也差不多,觉得这人有点不光彩。看来是个共识。我还在某处看到你说过,Oracle 收购 MySQL 的时候,所有人都怕了,转去用 Postgres


Stonebraker那就是 Postgres 取代 MySQL、成为首选开源关系型数据库的起点。


一个债券交易员的电话,催生了 Postgres


Peterman你造了 Ingres,里面有大量技术创新,让它比对手强。但最后它还是没了,你做了 PostgresIngres 没做、而 Postgres 做了的那件关键的事是什么?


Stonebraker一开始就有一件事埋在我们脑子里。学术版 Ingres 最早的目标是要支持隔壁那位 Praveen Varah 教授要做的地理信息系统(GIS)。要支持 GIS,你得有点、线、多边形、线组这些数据类型。但 Ingres 显然搞不定,我们放进 Ingres 的数据类型是标准那几样:整数、浮点、文本字符串。在这之上你不可能高效地支持 GIS 类型。所以作为一个 GIS,学术版 Ingres 是个彻头彻尾的失败。这件事一直放在我们脑子后面。


另一件事时间上稍微往后跳一下,但能把这个点说透。大概 1985 年,ANSI(美国国家标准协会)刚提了一个关系数据库的日期时间标准。商业版 Ingres 把日期时间实现了,用的是标准的格里高利历。我那时候跟商业版那边也有联系,同时还在伯克利当教授。


我接到一个 Ingres 客户的电话。他说,你们日期时间实现错了。我说,我们实现的就是格里高利历啊,你能做减法,月份有 30 天或者 31 天,二月除外、闰年除外,日期减法就是按你期望的方式工作的。


他说不对,那不是我要的。他做的是债券金融工具。出于某种原因,他的债券每个月付的利息一样,不管这个月有几天。他有买债券的日期、卖债券的日期,他想直接做减法,乘以票息率,得到付给客户的利息。但他要的减法是:月 15 日减 月 15 日等于 30 天,因为他那套日历就是这么定义的。结果他不得不把两个日期取出来,在用户代码里做减法,再把答案塞回数据库,效率掉了两到三倍。


他说,我为什么不能直接重载你定义的减法,换成我要的版本?当然,Ingres 是写死的。


但他要的东西,本质上跟前面那个点、线、多边形是一回事。他要的是债券时间。Postgres 的设计目标就是有一个可扩展的类型系统,你想要什么数据类型都行,而且都是高效的。这就是 Postgres 的核心,它有这种灵活性。


业务数据处理多数时候用标准类型就够了,但关系数据库开始扩散到各种地方,人们想要的是抽象数据类型,或者叫存储过程,叫法很多。这种可扩展性给了Postgres 巨大的适用面,这是 Postgres 最大的事情。


Postgres 也支持了当时 AI 那帮人想要的继承机制。我们还做过时间旅行(time travel,让数据库能查询历史时点状态),但实现烂得一塌糊涂,过了一阵就被拿掉了。但不管怎么说,Postgres 确实包含很多有意思的东西。


Peterman你想招的是非常出色的软件工程师。你之前说过,你找这种人没什么困难。你怎么识别那种非凡的工程师?


Stonebraker通常很明显。我对什么事大概有多难,心里有数。如果他们在学校里干完的量是我觉得合理水平的三倍,那他们就是非常出色的人。


Peterman反过来,你说过一句很有意思的话:我受不了不那么聪明的人,跟他们说话很费劲。你又是怎么识别一个人不聪明的?


Stonebraker这事很容易,你跟他聊几句,很快就能看出来。你的硕士论文做的是什么?具体怎么工作的?错误条件你怎么处理的?用了多少进程?为什么不用线程?就是问深度的技术问题。


一种数据库不可能解决所有问题


Peterman你做过一个演讲,后面也有篇论文,讲的是一种数据库通吃所有场景是错的,你想要的是针对具体需求的数据库方案。今天市面上你看到哪些数据库还在试图通吃?


Stonebraker我写那篇论文是 2004 年。我们当时有一个学术项目,后来变成了 StreamBase(流处理数据库),流处理引擎跟关系数据库长得一点都不像。我们还有一个列存(按列存储数据,更适合分析型查询)的雏形,做数据仓库用的,后来 Vertica(基于列存的分析型数据库)把它推开了,列存跟行存也长得一点都不像。三种完全不同的实现,互相没有任何相似,每一种都比对手快一个数量级。所以很清楚,你跑一个不是为你这类工作负载设计的数据库,你就要付一个数量级的代价。


我觉得今天还是这样。ClickHouse(开源列式分析数据库)是个列存,Pinecone(向量数据库)做文本向量处理比用户自定义类型那条路要快。所以这个判断基本没变。


技术上没什么难度把一个统一的解析器架在多种实现之上。Postgres 到现在为止选择不这么做。它没有列存实现,所以在大型数据仓库上它不具备竞争力。它也没有多节点支持,对大数据仓库来说这是入场券。所以这个观点今天和当年一样成立。


不过另一个角度也对:如果你想快点干起来,有数据库需求,选 Postgres。社区巨大,各种数据类型实现都有,免费,你能找到 Postgres 直接用。在你撑到每秒百万级事务之前,它都用得挺好。在你支撑 PB 级数据仓库之前,它就是那个最优解。低端,Postgres 就是绝对的一种通吃。高端,这话就不成立了。


PetermanGPU 会不会给数据库优化带来什么新机会?


Stonebraker可能。但我觉得最大的挑战在于,GPU 是 SIMDSingle Instruction Multiple Data,单指令多数据),这跟索引正好是反着来的。所以只要索引是正确答案的地方,GPU 大概就不是好主意。另外架构上你得让从存储到 GPU 的带宽不成为瓶颈。如果 GPU 是 CPU 的附加件,那 CPU 到 GPU 的总线很多时候就是瓶颈。


Peterman你能解释一下为什么 SIMD 下索引就不那么有效?


Stonebraker比方说我要找 Ryan 的工资,我有一棵 树(一种平衡树索引结构)。你先到根节点,找到 Ryan 落在哪一边的分隔符,顺着指针走,那是一次内存访问;然后再来一遍,这样跑三四层。这种过程没法很好地并行。所以答案是:索引并行不起来。


Peterman你刚才说 树。第一版 Ingres 那会儿,这些都是你们手写的吗?那时候应该没有现成的 树库。


Stonebraker对。Ingres 最早的版本完全是从零写的。


Peterman那次实现里最难的是哪部分?


Stonebraker查询优化器(数据库里负责把 SQL 查询翻译成最优执行计划的模块)。


Peterman为什么这个最难?


Stonebraker算法上就是难。你今天去问任何一个资深的数据库工程师,最难的部分是什么,他还是会说优化器。


那不是 Google 唯一一件愚蠢的事


PetermanMapReduce 在 2000 年代初出来,在数据世界掀起了风暴,大家觉得 Google 真懂行,这是面包发明以来最好的东西。但我看你当时和你后来的论文,你强烈不同意。为什么?


Stonebraker那时候有一大批不太开窍的人,他们说 Google 这么聪明,他们做的肯定是对的,Google 怎么说我们就怎么做。于是一窝蜂上 HadoopMapReduce 的开源实现)。但 Hadoop 的效率低得离谱。当时 Dave DeWitt(数据库领域元老,威斯康星大学教授)和我们 2011 年那篇论文的几个作者都懂分布式数据库,我们清楚分布式数据库系统能把 Hadoop 按在地上摩擦,那篇论文基本就是这么写的。事实证明也是如此。


而那不是 Google 唯一一件愚蠢的事。同一时期 Google 还在大力鼓吹最终一致性是做并发控制的正确方式,这是他们居高临下发布的。但所有数据库圈的人都说,你们脑子坏了,它只解决一小类特殊问题,而那类问题在实际中很少出现。


Peterman他们为什么追最终一致性


Stonebraker这个想法是这样:你东海岸有个数据库,西海岸有个数据库,互为副本,你想让它们保持一致。


如果你说,我做一个事务把西海岸仓库的小部件数量减一,提交这个事务之前,我要先把消息发到东海岸更新它,再发回来确认,然后还要再来一轮消息确保两边都正确提交,那做一个分布式提交是很贵的,今天也还是这样。


所以那个想法是:你在西海岸做更新、把库存减一,只是异步发个消息出去、不放进事务里,东海岸最终会被减一。同时如果你在东海岸把另一种货品减一,你也异步发消息,西海岸最终也会收到,最后一切收敛。


但如果允许库存跌破零,会发生这种事:东海岸和西海岸的人同时卖掉了最后一个小部件,最后仓库状态变成负一,有人拿不到他的货。


如果你像亚马逊那样说通常 24 小时内发货,那也许还能允许超卖。但大多数企业做不到。所以最终一致性就是不工作。我们前面提到过参照完整性,在销售系统里,参照完整性的约束就是库存大于负一,这个约束在最终一致性下崩了。Google 的 Jeff DeanGoogle 首席科学家,MapReduce 和 Spanner 的主要作者之一)后来想清楚了这件事。他们做 SpannerGoogle 的全球分布式数据库)的时候,Spanner 是一个传统的事务系统,Google 完全放弃了最终一致性,完全放弃了 MapReduce


Peterman所以这个权衡基本上是用正确性换性能。


Stonebraker是性能 vs 数据完整性。如果你不在乎你的数据,那你就愿意接受坏事发生。


Peterman你当时跟 Google 团队聊过吗?


Stonebraker2011 年那篇论文之前我们找过他们,问要不要合作做点事。他们没兴趣,拒绝了。


Peterman其他大公司呢?亚马逊、Facebook,有没有你强烈不同意他们做法的?


Stonebraker大概三年前我在亚马逊做过一次演讲,把所有我觉得他们做错的事都讲了。亚马逊的问题是他们在维护十五个不同的数据库系统,大概多出了十二个。他们有自己的文化,我说你们维护的数据库系统太多了。到现在为止他们一个也没退役。


Peterman为什么你说十五个应该只留三个?


Stonebraker比方说他们在维护一个图数据库。但大家都清楚,图数据库在性能上几乎从来不是首选。如果你喜欢节点和边那种用户接口,没问题,在关系数据库之上做一层壳,把这个用户模型给你就行。他们大多数数据库系统,都有另一个数据库系统在该做的事上做得更好。所以答案是:任何在足够大的市场里不具备性能竞争力的数据库系统,你都该退役它,因为维护要钱。


我跟笨人打交道有困难


Peterman你从学术界深刻地影响了产业。我有个问题:为什么不直接去工业界?为什么你更愿意留在学术界用这种方式产生影响,而不是去 AWS 之类的地方做个杰出工程师?


Stonebraker因为那样你头上就有个老板,有公司规章,限制你发表论文的自由,限制你去会议讲东西的自由,限制你去探查竞争对手在做什么的自由。但更主要的是,我喜欢做创业。


商业版 Postgres 后来被 Informix19801990 年代的关系数据库巨头之一)收购,我那时在 Informix 兼职。那是一家两千人的公司,我感觉做不出什么改变,它官僚,总裁要什么就是什么。我天生不适合搞政治,搞不来。我跟我觉得笨的人打交道有困难。所以我跟大公司有点麻烦。


Peterman我想聊一下 DBOS,这是个很有意思的技术模型。能解释一下 DBOS 是什么吗?


Stonebraker我们 20192020 年左右开始这个学术项目。当时 Matei ZahariaSpark 的创造者,Databricks 联合创始人)在斯坦福任教。他说,Databricks 那时候基本上就是在云上跑用户的 Spark(一种主流的分布式数据处理引擎)任务,任意时刻可能有上百万个 Spark 任务在调度,得写一个能在百万级别工作的调度器。


他说他们试过所有 OS 圈那些人写的调度器,都不行,扛不住。所以最后他们把所有调度数据放进了一个 Postgres 数据库,基本就是用一个 Postgres 应用来做调度。


然后我们就意识到:你在操作系统里大部分时间做的事,就是在管理大规模数据。你应该用数据库技术来做这件事。那干脆把 Linux 的上半部分换成数据库系统好了。


那就是这个学术项目的主旨。我们在 20 年代初在伯克利和斯坦福做这个,做得相当成功,确实能跑通。过程中斯坦福那边给 JavaScript 写了一个扩展,因为你需要某种编程入口跟你的实现对话。


如果你做的是一个跑在数据库之上的操作系统,而你又有一个编程语言运行时,那很自然就是把所有状态都放到数据库里,他们就是这么做的。所以我们既有一个创新的编程语言模型,也有一个创新的操作系统模型。


接下来当然是想,能不能做公司?我们跟风投聊,没有一个人不说你想取代 Linux 那是做梦,但他们都说,你这个编程语言部分很有意思。我们的 JavaScript 扩展能让任何程序都拥有数据库系统的那些好性质:状态是持久的,你可以有事务,失败时可以故障转移,这些好东西。


2023 年我们拿到融资成立了 DBOSDatabase Operating System)公司,这一直是项目的名字。但我们做的实际上是编程语言生意。今天 DBOS 有 TypeScript 版本、Java 版本、Go 版本、Python 版本,都是无缝的,看起来就是普通程序,但跑在云的世界里。


Peterman这跟最初那个用数据库替换操作系统内核的研究项目相比,是不是收窄了?


Stonebraker现在每个人都有动机把应用结构组织成工作流。所以我们决定就支持工作流系统。DBOS 在那四种语言下支持的工作流,里面的每一步,叫微操作也好叫别的也好,都是事务性的。工作流是持久的,一步走完不会被忘记。如果有人有市场需求,我们可以做到工作流是原子的:整个工作流要么完成,要么看上去从未发生过。它的性质非常好,比竞争对手快很多、用起来也容易很多。公司在这块卖得很好,也在持续创新。


整个想法是,把应用的状态放到数据库里让它持久化,然后想办法跑得快。商业模式是先抓底层程序员,跟他们说,你需要什么我们没有,告诉我们,我们尽快加上,把人拉过来试。


Peterman今天 DBOS 的客户主要在哪些场景?


Stonebraker我们在很多创业公司里很成功,他们想选最好的东西。我们也开始打进大客户。今天大概三分之二的客户在做 agentic AI,一个大语言模型,周围加一堆增强信号的东西。目前为止 agentic AI 大多是只读的,比如你要给Ryan 是不是好客户产出一个预测,跑一堆东西出一个新结果给某个人。本质上是只读的,你没真的去改 Ryan 的信用评级。


我估计很快整个世界就会用 agent 做读写应用,那它就会变得非常数据库,而 DBOS 在这块做得特别好。比方说你写两个 agent,把我账户里的 100 美元转到你账户:一个 agent 把我账户减 100,另一个把你账户加 100,这两个 agent 必须要么都提交、要么全部回滚,也就是说工作流必须是我说的原子的,要么发生,要么看起来没发生过。我觉得这个市场对原子性的需求会越来越高,这对 DBOS 是好事。


Peterman那今天向应用开发者交付的 DBOS,跟最初那个把操作系统内核换成数据库的研究版本不一样了。这其实挺酷的,我以前没想过把操作系统所有状态都放进数据库。这里一定有什么权衡吧?


Stonebraker在 DBMSDatabase Management System,数据库管理系统)之上写的文件系统比 Linux 文件系统更快。调度引擎跟其他调度引擎相比也有竞争力。所有东西都能故障转移,你不用做任何额外的事就拿到了高可用。答案是没什么坏处。


Peterman那为什么 Linux 不去吸收这个,把自己升级一下?


Stonebraker你希望他们这么做。意思是,把所有设备驱动那些杂事留在底层,东西多没人想碰,把上面的东西全部换成数据库实现。


Peterman你跟 Linux 圈的人提过吗?他们的反应通常是什么?


Stonebraker学术项目阶段,我跟操作系统那帮人提的时候,他们会觉得很被冒犯,觉得这是数据库圈的人在抢他们的地盘。编程语言的人也一样,他们觉得编程环境的运行时该是他们的,我们说运行时该用数据库做,他们也不爽。


Peterman有意思。但如果客观上是对的,可能它最后会赢。


StonebrakerJava 也用了 10 年才被广泛接受,这种事的时间常数我觉得就是大。


在我们的基准上,大语言模型得 


Peterman咱们聊了很多过去的事,我想知道你怎么看数据库领域那些没解决的问题和未来。


Stonebraker有两件事我想说。第一件,跟所有人一样,三年前我们开始看大语言模型能干什么。我们一直在做 texttoSQL(让模型把自然语言问题翻译成 SQL 查询)。我们想让它在真实世界的数据库上工作,尤其是真实世界的数据仓库。我们在四个生产级的数据仓库上试,拿到了真实的用户工作负载、真实运行的查询,让真实用户回过头给我们提供这些 SQL 对应的自然语言文本。所以我们有四个真实的 texttoSQL 基准。


Peterman你说 texttoSQL,意思是人用自然语言对模型说,比如四岁以上的所有人这种?


Stonebraker比方说告诉我所有在 MIT 拿过图灵奖的教授LLM 应该擅长这件事。TexttoSQL 已经有公开基准,一个叫 Spider,一个叫 Bird(两个学术界主流的 texttoSQL 基准数据集)。最好的 LLM 系统在这些基准上挺不错,80% 准确率以上,当前榜首大概 85%,你会考虑用它,虽然还不到生产级。


但在我们的基准上,大语言模型的准确率是 0%。如果你给它加上 RAG(检索增强生成)和所有那些花招,能到 10%。如果你在 prompt 里直接告诉它 from 子句,也就是把所有要访问的表、所有要做的连接条件都喂给它,准确率到 35% 左右。这东西离生产级很远,而且短期内大概也到不了,如果它真的能到的话。


那区别在哪?


第一,数据。LLM 是在 The PileEleuther AI 制作的开源大模型训练语料库,800GB 文本)上训练的,数据仓库里的数据不在 The Pile 里。有句老话,如果你之前没见过这数据几次,你没机会把它复述出来。这是第一。


第二,查询复杂度。Spider 和 Bird 上的查询大概十到二十行 SQL,真实世界数据仓库里是一百行 SQL,复杂度差一个量级。


第三,schemaSpider 和 Bird 里的 schema 是干净的,表名是助记的,列名是助记的,没有重复。但真实数据仓库里,人们到处建物化视图(materialized view,预先计算好的查询结果,加速分析),意味着到处有冗余;列名经常是 underscore_z_uppers_andre_blah 这种,毫无助记性,很难。还有他们有特异数据,比方说 JtermMIT 等美国大学一月份的一个迷你学期)在 MIT 是个流行词,一月份的一个一个月学期,这个词不只 MIT 有,但也不普及,不在 The Pile 里。特异数据、查询复杂、schema 一团糟,这三件事在我知道的每个数据仓库里都成立。所以这技术就是不工作,短期内也不会工作。


Peterman那你们怎么办?


Stonebraker第一,我们把基准发表了,叫 Beaver,是这四个数据仓库的脱敏抽象版本。如果你觉得自己 texttoSQL 做得很好,来真基准上试,别老在假的上跑。


第二,接着我刚才说的,如果你拿不到 from 子句、拿不到所有连接条件,你就完蛋;如果你不把查询拆成更简单的小块,你也完蛋。这告诉我什么呢?你想给检索系统更简单的小块,小块里要包含 from 子句、要包含连接条件。这是一。


第二,你一旦想跨两个不同的结构化数据库聊,比如你的数据仓库和你的 CRM 系统,那很显然,用 LLM 做结构化数据连接是个坏主意。你最好把它们留在表里,做 SQL 连接。所以我们的视角是,把所有东西都变成表。


我们在跟德国慕尼黑交通部合作。他们有六个全职的人在回答市民投诉性的查询,比方说为什么我家旁边的路口绿灯时间不够我过马路为什么电车停的时间不够我上车为什么电车一小时才来一班。他们的数据库里有什么?电车时刻表是 SQL,信号灯时序是 SQL,路口图是 CAD(计算机辅助设计文件),德国联邦的相关法规是文本,慕尼黑市的相关法规也是文本。所以你要做的是 SQL × SQL × CAD × 文本 × 文本的连接。


我们的视角是把它们全部变成 SQL、变成表,然后用一个相当于查询优化器的东西做连接。这就是我们现在在做的事。我觉得别人会有别的想法,但这是个非常肥沃的领域,因为人们真的想做这件事。这是一。


第二,前面说的 agentic AI,一旦它变成读写,它就是个分布式数据库问题,你要原子性、要一致性、要那一整套东西。我觉得这是非常有意思的领域。这就是我现在在做的。


Peterman你刚才说的那个基准,LLM 现在拿 分,人能拿多少?如果你找一个真懂 SQL 的人,他能打多少?普通人呢?


Stonebraker一旦把自然语言部分消歧之后,一个懂 SQL、了解 schema 的程序员,准确率会非常高。


Peterman90% 这个量级?


Stonebraker至少。


Peterman好。我挺意外大模型在这种基准上得分这么低。也许这期播客出去之后会有 Anthropic 的人联系你或者怎样。


Stonebraker我很想知道,因为这会是个很棒的成功故事。


计算机科学不一定还是个增长行业


Peterman对那些想深入理解数据库的人,你会推荐什么材料?有什么顶级的技术书?


Stonebraker文献里的论文。我和 Joe Hellerstein(伯克利数据库教授,与 Stonebraker 长期合作)出过一本叫《Readings in Database Systems》的红皮书,但已经八年了。作为八年前的读物我觉得它很好。除此之外就是文献里有名的论文。


Peterman如果你能回到刚毕业那会儿,以你今天知道的事给自己一个建议,你会说什么?


Stonebraker我刚到伯克利接那份工作的时候,没怎么思考过就说,我们来写一个数据库系统吧。当时我们对数据库一无所知,对实现也一无所知,我们也不是 Bill JoyBSD Unix 主要作者,Sun Microsystems 联合创始人)那种水平的程序员。开局做这种事,真的相当疯狂。但你硬着头皮干,让它能跑起来,一路上学。所以答案是:跳出框架,想些疯狂的事,去做。


更好的问题是:如果你今天刚开始,会主修什么?因为我觉得计算机科学未来不一定是一个增长行业。我现在不太确定我会推荐 18 岁的小孩去主修计算机科学。


我觉得医疗和建筑这些行业是稳妥的赌注,其他都看起来风险大不少。如果你即将拿到博士学位、要决定接下来做什么,那其实容易:挑你能拿到的最有声望的工作,找一个愿意帮你的导师,选一个不随大流的方向。比方说我们的项目 Rubicon,就是不随大流的。


我和我太太总跟人说,跟随你的热情,钱总会有的。但说实话我一秒钟都不信这话,我觉得这只是你必须告诉孩子和孙子的话。


Peterman既然你不信,为什么你必须这么说?


Stonebraker我太太就是个例子。她有计算机科学的硕士和本科学位,但她想做 K12 老师。她父母说,你不能这么做,赚不到钱。我觉得从那以后她一直后悔这个决定。她对计算机科学没什么热情,只是把它当个手艺干。所以答案是:找你有热情的事做,你不会饿死,可能赚不到大钱,但你大概率会比做你没热情的事更快乐。


我认识很多人把工作仅仅当工作,生活是发生在下午五点到早上八点之间的事。我完全不是这样,我真的喜欢我做的事,赚多少钱不重要。


参考资料:

1.


排版:胡巍巍


注:封面/首图由 AI 辅助生成