小心,美国人又要在基础软件上弯道超车了......

科技   2024-12-09 09:58   河南  
01
被"惹恼"的数据库巨佬


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 太复杂了!


现在,扎哈里亚和斯通布雷克要设计了一个数据库来取代它们!


操作系统不是不行吗,那就别在它的上面折腾数据库了,干脆反过来,在数据库上搞一个操作系统!


02
两个先烈


其实,让操作系统依赖数据库,这个概念并不新鲜。


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年取消。


03
DBOS


无论是AS/400还是WinFS,虽然使用了关系数据库,但它们还都是操作系统的一部分。


扎哈里亚和斯通布雷克则完全把数据库挪到了操作系统的下层,操作系统是基于数据库构建的


其基本思想是,在微内核中运行一个多节点多核、事务性、高可用的分布式数据库,然后在数据库之上实现调度、消息传递、文件系统和其他操作系统服务。



第一层是微内核,主要实现内存管理,中断处理,驱动等。


第二层是一个高性能的、多节点的分布式数据库


第三层,在DBMS上构建高级OS服务,分布式文件系统、集群调度程序和分布式进程间通信 (IPC) 子系统


第四层是用户程序,例如Spark。


第1,2,3层加起来被成为DBOS(Database-Oriented Operating System),就是“面向数据库的操作系统”。 


据说当时有人想把它叫做DataSphere OS,或者HyperDataOS,但是斯通布雷克坚持采用了简单直白的“DBOS”,因为“直白的名字最能吸引人注意,就像UNIX和SQL那样”。


DBOS有两个鲜明的特点:


1.所有应用程序和操作系统的状态都存储在分布式数据库的表中


2.仅通过数据库事务来访问状态


这么做有什么好处?


首先,集群调度程序可以将有关任务和工作程序的信息存储在数据库表中,百万级别的任务状态跟踪对数据库来说就是小事儿一桩。


因为数据库支持事务(ACID),可以保证对任务状态的并发访问。在发生故障时,DBOS也能保证一致性和持久性,可以轻松从中断处继续运行。


其次,使用强大的数据库日志功能,可以追踪对应用程序状态的访问,简化应用程序的分析、监控、调试和保护。


DBOS还有多种安全优势,包括“攻击面更小、漏洞更少”,从严重的错误或攻击中恢复可能很简单,只需将数据库回滚到以前的状态即可。


斯通布雷克认为,有了DBOS,“生活就简单多了,你可以省去 Linux、Kubernetes 和其他一些必需品。


举个简单的例子,DBOS支持工作流,假设你有这么一个需求:需要发送一封确认邮件,等待一段时间,然后再发一封提醒邮件:


@DBOS.workflow()def reminder_workflow(email: str, time_to_sleep: int):send_confirmation_email(email)DBOS.sleep(time_to_sleep)send_reminder_email(email)

通过使用工作流,DBOS可以保证即使休眠时间长达数周或数月,即使程序崩溃或重启多次,提醒电子邮件也始终会按时发送(并且确认电子邮件永远不会重新发送)。


这就是数据库把所有状态都管理起来的威力,它就极大地简化了程序员的工作。


04
总结


2001年,Oracle CEO 拉里·埃里森说过:中间件是一个愚蠢的想法,一切都应该交给数据库来管理。


20多年过去了,DBOS真的把这些活儿交给数据库来干了。


但是很明显,DBOS不是Windows,Linux这样的单机操作系统,更不是让普通消费者来使用的。


DBOS面向的是云计算,它也许是未来的云计算的操作系统。


中国人老是喜欢说弯道超车,如果DBOS真的搞成了,那才是真正的弯道超车,美国人的创新能力确实是强,不承认不行。还有一个对国内某些厂商非常不利的消息,不像PostgreSQL,DBOS不是完全开源的,它们没法“自研”,然后再弯道超车了。


参考资料:

https://www.youtube.com/watch?v=CDSgJE5mPJM   AS/400的例子
https://thenewstack.io/meet-dbos-a-database-alternative-to-kubernetes/
https://www.nextplatform.com/2024/03/12/the-cloud-outgrows-linux-and-sparks-a-new-operating-system/
https://venturebeat.com/data-infrastructure/postgresql-and-databricks-founders-join-forces-for-dbos-to-create-a-new-type-of-operating-system/
https://www.infoworld.com/article/2336467/dbos-cloud-overturns-database-on-os-conventions-for-speed.html
https://dbos-project.github.io/blog/intro-blog.html 

全文完,觉得不错的话点个或者在看吧!


近期爆文

世界上最幸福的程序员
世界上最厉害的协作软件,让程序员痛不欲生,最后被印度人搞走了

1970年以来技术的发展趋势,怪不得程序员35岁就被裁......

这个大学生写了个免费软件,全世界网民抢着给他送钱,每月10万美元

全世界流浪的程序员,用最原始的技术,每月赚17.6万美元!

开源软件的叛徒,加入了微软

这两个程序员要花100万,彻底重写世界上最复杂的软件

被哈佛扫地出门,他发明了让无数程序员痛不欲生的编程语言,获得了计算机最高奖!

这两个大龄程序员,打算搞垮一个世界软件巨头!



码农翻身
一个技术和职场的宝藏博主
 最新文章