关注飞总聊IT,了解IT行业的方方面面。

最近DuckDB又火了,因为它跑起TP-H什么的,越跑越牛逼了。

打开网易新闻 查看精彩图片

DuckDB是什么,我想关心数据仓库的人,很多都知道。不关心的那就没办法了。

简单来说,DuckDB就是一个轻量级,内存优化的分析型数据库,专注在快速的查询性能和低延迟的响应时间。

有关DuckDB的技术路线,可以参考一下这篇文章:

https://www.infoq.com/articles/analytical-data-management-duckdb/

这算是DuckDB创始人亲自说的DuckDB的理念。

但是我今天要讲的故事稍微有点不一样。

2021年的时候,我听说我之前在Tableau的一个前同事Richard Wisley在给DuckDB干活,然后我就彻底理解了,为什么DuckDB那么牛逼。

Richard Wisley这个名字,对很多搞数据库的人来说很陌生。说实话,在接触他之前,我也不知道,有的时候,高手在民间这句话到底是什么意思。

他是Tableau的第四号员工,就是创始人以外的第二位雇员,我当年进Tableau的时候,就是他面试的我。

他在Tableau的时候,主要是一个人单枪匹马的干了一件事情,谢了一个SQL引擎,叫做Tableau Data Engine。一定要我说的话,这东西和DuckDB的理念很像。

我一直以为的database的开发路线是,在学校学习了这方面的知识,进入到某个核心database团队,然后做内部开发一段时间。最后成为大神。

但是Richard Wisley不是。这是一个完全没有受过任何正统的database训练的人。

我第一次打开Tableau Data Engine的代码,内心是很崩溃的,因为里面充满了各种各样矛盾的地方,各种名字的实际含义和数据库内核开发的约定俗成的含义完全不匹配,牛头对上了马嘴等等。

但是,不得不说,他写Tableau Data Engine,是真的有种民工手搓原子弹的感觉。

他的办公室里,有很厚的一篇博士论文。

这篇博士论文当然是另外一个传奇,作者是Marcin Zukowski。这个人呢?PhD论文影响力巨大,毕业以后就成立了Vectorwise。后来又和其他几个人一起创立了Snowflake,当之无愧的数据库领域的大神,可谓PhD还没毕业,就已经在罗马了,不像有的人,PhD毕业10几年,还是牛马。

他的毕业论文还有一个著名的抄袭者:Clickhouse。

但是这个Richard Wisley,就是作为一个完全不懂数据库的人,打印出了这篇论文,然后按照这个manual,民工造核弹的复刻出了一个Tableau Data Engine。

必须承认,因为Richard Wisley没有经过正统的数据库训练,所以这个Data Engine小毛病很多,修修补补的要求很高。但是我实在是对他非常的尊重,因为这个东西,很牛逼。速度快,效率高。

但是,很多时候,我们只能说,一个人的成功不仅仅要靠自己的努力也需要靠运气。Tableau的founder们也许是visualization的大神,但是肯定不是数据处理的大神。

在某胖子的忽悠之后,2016年,Tableau毅然的买下了一家德国大学创业的小公司HyperDB,把一个号称全球最快的既可以做OLTP又能做OLAP的内存数据库给收购了。

实际上收购的,是俩大学教授和他的几个学生,并没有什么真正做过工程的。

而同时,founder们觉得Richard Wisley过时了,让他去Tableau研究院养老了,Tableau Data Engine也给封存了起来。

这故事到这里可能是结束了。其实也没结束。因为当年我亲身经历了把老的引擎换成HyperDB的事。

结果就是,那个吹牛逼说自己多牛逼的HyperDB,几乎每个查询都比Tableau Data Engine要慢,就没几个查询是快的。

HyperDB傻逼到做metadata operation的时候,直接一把大锁就把整个系统表全锁上了,连好一点的并发都做不到。我也不知道应该说什么。

后面HyperDB修了一年多,勉勉强强的凑合着就算整合完了。但是在我看来,如果以同样的钱投资给Tableau Data Engine的话,Tableau不但会有一个更牛逼更完善的数据库,也会在大神Richard Wisley的带领下,攻城略地。

只不过,Founder们的心思也早就不再继续运营发展公司,而是打算卖了公司财富自由享福去了。

Richard Wisley无疑是这场政治斗争的牺牲品,他那几年就特别不开心。还申请能不能把Tableau Data Engine开源了,最后也没成功。

再后来他就不想在公司干活辞职了,然后他就去给DuckDB干活了。

我和他一起工作的时候,接触最多的一次是关于对GroupBy 和windowing function的实现的一些合作。可以毫不夸张的说,他对和GroupBy相关的东西的底层实现的理解,实在不是我这种凡人可以随便评价的。

他应该是早就财富自由了,毕竟是Tableau第四号员工。早年,也许真的是Tableau的founder们运气好,雇到的他,是一个极其牛逼的程序员。这种牛逼真的是一言难尽。不仅仅牛逼而且非常的领先。C14才出来,他就对那些新特性用得炉火纯青,JavaScript学一两个月,就有别人10年功力。反正,我本人见过的所有程序员里,我觉得他最牛逼。尤其是对OLAP的某些底层实现的理解,我没见过更牛逼的。

所以他去DuckDB,然后去折腾GroupBy,aggregate等等,我实在是没理由相信DuckDB能做的不快。

看一下他是怎么介绍自己的:

打开网易新闻 查看精彩图片

我最近写的专栏,讲职场的经验,尤其是一些其他地方不容易看到的真话,有兴趣可以订阅,24小时内可以退款。