小心,美國人又要在基礎軟件上彎道超車了......
1.被"惹惱"的數(shù)據(jù)庫巨佬
2021年,DataBricks的創(chuàng)始人和CTO,Spark的發(fā)明人馬泰·扎哈里亞在斯坦福做了一次演講。
圖片
在演講中,他提到了DataBricks遇到的一個煩人的問題,DataBricks經(jīng)常需要在云上調度上百萬個Spark任務,并且跟蹤這些任務的狀態(tài)(等待、運行、完成、失敗)。
這些任務非常小,用進程/線程來管理并不合適,太重了,并且進程線程的調度是單機的,DataBricks需要跨越多個計算機調度。
Databricks團隊選擇Postgres作為任務調度和狀態(tài)跟蹤的數(shù)據(jù)庫,盡管Postgres成熟穩(wěn)定,但是管理超大規(guī)模的分布式任務,在短時間內記錄一百萬個任務的狀態(tài)變化,壓力太大了。
Matei Zaharia抱怨說:PostgreSQL太慢了!
這可“惹惱”了聽演講的一位大佬邁克爾.斯通布雷克。
圖片
邁克爾.斯通布雷克可不是普通大佬,應該是巨佬,數(shù)據(jù)庫領域只有4個人獲得了圖靈獎。
(1)查爾斯 ? 巴赫曼
數(shù)據(jù)庫領域的開拓者,網(wǎng)狀數(shù)據(jù)庫的發(fā)明人,2017年去世
(2)埃德加 ? 科德
關系數(shù)據(jù)庫的發(fā)明人,2003年去世
(3)詹姆斯 ? 格雷
事務處理技術的奠基人,2007年出海后失蹤,2012年被宣布死亡
(4)邁克爾·斯通布雷克
沒錯,邁克爾.斯通布雷克是唯一還在世的數(shù)據(jù)庫巨佬。
邁克爾·斯通布雷克有多牛,看看下面兩幅圖就明白了。
首先他帶頭開發(fā)了Ingres,成為很多數(shù)據(jù)庫的老祖宗:
圖片
更厲害的是,巨佬還帶出了一大批的人才,覆蓋了數(shù)據(jù)庫的各個領域,到處都是他的“徒子徒孫”。
圖片
(上面兩幅圖片來源于四川大學唐常杰教授的博客:https://blog.sciencenet.cn/blog-287179-887047.html )
巨佬還創(chuàng)立了StreamBase,Vertica,Goby,VoltDB,SciDB等一系列創(chuàng)業(yè)公司,實在是太強悍了。
因此,馬泰·扎哈里亞說 PostgreSQL 性能很差,那感覺就像說斯通布雷克的孩子有點傻一樣......
聽了演講以后的斯通布雷克并沒有和馬泰·扎哈里亞爭吵,而是告訴他:我們可以做得更好,聯(lián)手吧!
其實,馬泰·扎哈里亞的Spark遇到的問題主要是:
不得不在 PostgreSQL 上添加奇怪的附加組件,維護操作系統(tǒng)之外的 Spark 集群的狀態(tài)
因為Linux是個單機的操作系統(tǒng),但是如今的計算都是分布式的,所以必須有k8s這樣的軟件來管理應·用數(shù)據(jù)、身份驗證系統(tǒng)、消息傳遞、集群管理.....
Linux太老了,而Kubernetes 太復雜了!
現(xiàn)在,扎哈里亞和斯通布雷克要設計了一個數(shù)據(jù)庫來取代它們!
操作系統(tǒng)不是不行嗎,那就別在它的上面折騰數(shù)據(jù)庫了,干脆反過來,在數(shù)據(jù)庫上搞一個操作系統(tǒng)!
2.兩個先烈
其實,讓操作系統(tǒng)依賴數(shù)據(jù)庫,這個概念并不新鮮。
IBM早在AS/400大型機(后來叫System i)上就搞過,它的文件就是保存在數(shù)據(jù)庫表中的。
圖片
比如在AS/400上,有個叫做QCSRC的文件,內容是一個HelloWorld的代碼。
圖片
QCSRC就是個一個表,這個表有三列:SRCSEQ,SCRDAT,SRCDTA。
其中SRCDTA中保存著HelloWorld的源代碼,一共六行。
圖片
如果按照SRCDTA這一列進行排序: select * from qcsrc orderby srcdta
就可以看到結果發(fā)生了變化,源代碼重新排列了:
圖片
早在2000年,微軟也提出過一個雄心勃勃的WinFS(Windows Future Storage)項目,試圖把將不同類型的數(shù)據(jù)(文檔、聯(lián)系人、圖片、郵件等)進行標準化管理。
WinFS的想法是將文件的元數(shù)據(jù)存儲在關系數(shù)據(jù)庫中,這樣文件可以通過復雜的查詢(類似 SQL)快速定位。例如,一個圖片文件的元數(shù)據(jù)包括拍攝時間、地點、相機類型等,可以通過這些元數(shù)據(jù)迅速進行篩選和排序,找出某個時間的所有照片。
另外,通過數(shù)據(jù)庫的關系建模,WinFS 能夠直觀地管理文件之間的關聯(lián)。例如,聯(lián)系人可以直接鏈接到與其相關的郵件、圖片和事件。
盡管 WinFS 的概念很有前瞻性,但是將文件系統(tǒng)與數(shù)據(jù)庫深度整合技術難度高,特別是要保證性能和兼容性,WinFS進展緩慢,最終與2006年取消。
3.DBOS
無論是AS/400還是WinFS,雖然使用了關系數(shù)據(jù)庫,但它們還都是操作系統(tǒng)的一部分。
扎哈里亞和斯通布雷克則完全把數(shù)據(jù)庫挪到了操作系統(tǒng)的下層,操作系統(tǒng)是基于數(shù)據(jù)庫構建的。
其基本思想是,在微內核中運行一個多節(jié)點多核、事務性、高可用的分布式數(shù)據(jù)庫,然后在數(shù)據(jù)庫之上實現(xiàn)調度、消息傳遞、文件系統(tǒng)和其他操作系統(tǒng)服務。