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