1.被"惹恼"的数据库巨佬
2021年,DataBricks的创始人和CTO,Spark的发明人马泰·扎哈里亚在斯坦福做了一次演讲。
图片
在演讲中,他提到了DataBricks遇到的一个烦人的问题,DataBricks经常需要在云上调度上百万个Spark任务,并且跟踪这些任务的状态(等待、运行、完成、失败)。
这些任务非常小,用进程/线程来管理并不合适,太重了,并且进程线程的调度是单机的,DataBricks需要跨越多个计算机调度。
Databricks团队选择Postgres作为任务调度和状态跟踪的数据库,尽管Postgres成熟稳定,但是管理超大规模的分布式任务,在短时间内记录一百万个任务的状态变化,压力太大了。
Matei Zaharia抱怨说:PostgreSQL太慢了!
这可“惹恼”了听演讲的一位大佬迈克尔.斯通布雷克。
图片
迈克尔.斯通布雷克可不是普通大佬,应该是巨佬,数据库领域只有4个人获得了图灵奖。
(1)查尔斯 • 巴赫曼
数据库领域的开拓者,网状数据库的发明人,2017年去世
(2)埃德加 • 科德
关系数据库的发明人,2003年去世
(3)詹姆斯 • 格雷
事务处理技术的奠基人,2007年出海后失踪,2012年被宣布死亡
(4)迈克尔·斯通布雷克
没错,迈克尔.斯通布雷克是唯一还在世的数据库巨佬。
迈克尔·斯通布雷克有多牛,看看下面两幅图就明白了。
首先他带头开发了Ingres,成为很多数据库的老祖宗:
图片
更厉害的是,巨佬还带出了一大批的人才,覆盖了数据库的各个领域,到处都是他的“徒子徒孙”。
图片
(上面两幅图片来源于四川大学唐常杰教授的博客:https://blog.sciencenet.cn/blog-287179-887047.html )
巨佬还创立了StreamBase,Vertica,Goby,VoltDB,SciDB等一系列创业公司,实在是太强悍了。
因此,马泰·扎哈里亚说 PostgreSQL 性能很差,那感觉就像说斯通布雷克的孩子有点傻一样......
听了演讲以后的斯通布雷克并没有和马泰·扎哈里亚争吵,而是告诉他:我们可以做得更好,联手吧!
其实,马泰·扎哈里亚的Spark遇到的问题主要是:
不得不在 PostgreSQL 上添加奇怪的附加组件,维护操作系统之外的 Spark 集群的状态
因为Linux是个单机的操作系统,但是如今的计算都是分布式的,所以必须有k8s这样的软件来管理应·用数据、身份验证系统、消息传递、集群管理.....
Linux太老了,而Kubernetes 太复杂了!
现在,扎哈里亚和斯通布雷克要设计了一个数据库来取代它们!
操作系统不是不行吗,那就别在它的上面折腾数据库了,干脆反过来,在数据库上搞一个操作系统!
2.两个先烈
其实,让操作系统依赖数据库,这个概念并不新鲜。
IBM早在AS/400大型机(后来叫System i)上就搞过,它的文件就是保存在数据库表中的。
图片
比如在AS/400上,有个叫做QCSRC的文件,内容是一个HelloWorld的代码。
图片
QCSRC就是个一个表,这个表有三列:SRCSEQ,SCRDAT,SRCDTA。
其中SRCDTA中保存着HelloWorld的源代码,一共六行。
图片
如果按照SRCDTA这一列进行排序: select * from qcsrc orderby srcdta
就可以看到结果发生了变化,源代码重新排列了:
图片
早在2000年,微软也提出过一个雄心勃勃的WinFS(Windows Future Storage)项目,试图把将不同类型的数据(文档、联系人、图片、邮件等)进行标准化管理。
WinFS的想法是将文件的元数据存储在关系数据库中,这样文件可以通过复杂的查询(类似 SQL)快速定位。例如,一个图片文件的元数据包括拍摄时间、地点、相机类型等,可以通过这些元数据迅速进行筛选和排序,找出某个时间的所有照片。
另外,通过数据库的关系建模,WinFS 能够直观地管理文件之间的关联。例如,联系人可以直接链接到与其相关的邮件、图片和事件。
尽管 WinFS 的概念很有前瞻性,但是将文件系统与数据库深度整合技术难度高,特别是要保证性能和兼容性,WinFS进展缓慢,最终与2006年取消。
3.DBOS
无论是AS/400还是WinFS,虽然使用了关系数据库,但它们还都是操作系统的一部分。
扎哈里亚和斯通布雷克则完全把数据库挪到了操作系统的下层,操作系统是基于数据库构建的。
其基本思想是,在微内核中运行一个多节点多核、事务性、高可用的分布式数据库,然后在数据库之上实现调度、消息传递、文件系统和其他操作系统服务。