小心,美國人又要在基礎軟件上彎道超車了......
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,雖然使用了關系數據庫,但它們還都是操作系統的一部分。
扎哈里亞和斯通布雷克則完全把數據庫挪到了操作系統的下層,操作系統是基于數據庫構建的。
其基本思想是,在微內核中運行一個多節點多核、事務性、高可用的分布式數據庫,然后在數據庫之上實現調度、消息傳遞、文件系統和其他操作系統服務。