小心,美国人又要在数据库上弯道超车了:DBOS-在数据库上建立操作系统
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
一、被"惹恼"的数据库巨佬 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 太复杂了! 现在,扎哈里亚和斯通布雷克要设计了一个数据库来取代它们! 操作系统不是不行吗,那就别在它的上面折腾数据库了,干脆反过来,在数据库上搞一个操作系统! 二、两个先烈 其实,让操作系统依赖数据库,这个概念并不新鲜。 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年取消。 三、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可以保证即使休眠时间长达数周或数月,即使程序崩溃或重启多次,提醒电子邮件也始终会按时发送(并且确认电子邮件永远不会重新发送)。 这就是数据库把所有状态都管理起来的威力,它就极大地简化了程序员的工作。 四、总结 2001年,Oracle CEO 拉里·埃里森说过:中间件是一个愚蠢的想法,一切都应该交给数据库来管理。 20多年过去了,DBOS真的把这些活儿交给数据库来干了。 但是很明显,DBOS不是Windows,Linux这样的单机操作系统,更不是让普通消费者来使用的。 DBOS面向的是云计算,它也许是未来的云计算的操作系统。 中国人老是喜欢说弯道超车,如果DBOS真的搞成了,那才是真正的弯道超车,美国人的创新能力确实是强,不承认不行。还有一个对国内某些厂商非常不利的消息,不像PostgreSQL,DBOS不是完全开源的,它们没法“自研”,然后再弯道超车了。 >>>> 参考资料
本文作者 刘欣,著有畅销书《码农翻身》《半小时漫画计算机》,前IBM架构师,领导过多个企业应用架构设计和开发工作;洞察技术本质,擅长用故事去讲解复杂技术。 该文章在 2024/12/14 9:47:56 编辑过 |
关键字查询
相关文章
正在查询... |