為什么SurrealDB要賭Rust?
SurrealDB從頭開始構(gòu)建,希望成為開發(fā)人員構(gòu)建未來應(yīng)用程序的終極數(shù)據(jù)庫。
為了構(gòu)建能夠支持未來應(yīng)用程序的數(shù)據(jù)庫,SurrealDB需要未來的底層編程語言。他們相信這種語言就是Rust,他們從Rust的Future中獲得靈感,構(gòu)建了類sql查詢語言SurrealQL。
在SurrealDB主頁的正中間,你會看到這三句話:
- 開發(fā)更加容易
- 構(gòu)建更快
- 規(guī)模更大
這不僅是SurrealDB可以為應(yīng)用程序做的事情,也是Rust為SurrealDB做的事情。由于Rust眾所周知的陡峭的學(xué)習(xí)曲線,當(dāng)你想到使用Rust時,更容易開發(fā)和更快構(gòu)建可能不是你首先想到的事情。
然而,Rust支持你以不同的方式思考。在Rust中從0到1的轉(zhuǎn)換速度可能不如在其他語言中那么快,但它比你想象的要容易。因此,可以使用不同的語言進(jìn)行原型設(shè)計(jì),然后在看到項(xiàng)目的長期潛力后再用Rust重新編寫。SurrealDB本身首先使用Go開發(fā)原型,然后使用Rust完全重寫。
這里的關(guān)鍵是,一旦支付了學(xué)習(xí)Rust的前期成本,你就可以走得更快,或者像人們常說的那樣:從慢到快。
現(xiàn)在,在進(jìn)一步討論之前,我們需要解決一個問題,相信許多人都會有一個問題:為什么不使用Zig或其他更新的語言呢?
雖然確實(shí)可以使用Zig或其他較新的語言構(gòu)建數(shù)據(jù)庫,但在默認(rèn)情況下,當(dāng)涉及到內(nèi)存安全時,它們沒有Rust的特性,而且沒有垃圾收集器以獲得最高性能。
不可否認(rèn),Rust已經(jīng)俘獲了開發(fā)者社區(qū)的青睞,在Stack Overflow的年度開發(fā)者調(diào)查中連續(xù)8年被評為“最受尊敬的編程語言”。它不僅僅是令人欽佩,它也是GitHub上增長最快的語言之一。
2019年Linux安全峰會上的一場演講顯示,內(nèi)存安全問題估計(jì)占主流系統(tǒng)(包括Android和Ubuntu)安全漏洞的65-88%。這也符合微軟的經(jīng)驗(yàn),微軟每年分配給CVE的漏洞中有70%仍然是內(nèi)存安全問題。
這表明,即使經(jīng)過幾十年的開發(fā),一些最優(yōu)秀的工程師使用C和C++的最佳實(shí)踐,仍然會出現(xiàn)問題,諸如訪問已經(jīng)釋放的內(nèi)存、數(shù)據(jù)競爭等。因此,很難說這只是技能問題,而更有可能是所使用語言的根本問題。
有了這個背景,你就明白為什么微軟Azure的首席技術(shù)官M(fèi)ark Russinovich說:“說到語言,現(xiàn)在是時候停止使用C/C++開始任何新項(xiàng)目了,在那些需要非gc語言的場景中使用Rust。為了安全性和可靠性,業(yè)界應(yīng)該將這些語言聲明為棄用語言?!?/p>
這種對Rust的信任并不是憑空而來的,為了使Rust在安全關(guān)鍵型環(huán)境中完全可用,已經(jīng)投入了大量的工作。這可以從Rust最近通過Ferrous Systems開發(fā)的 Ferrocene工具鏈獲得ISO 26262和IEC 61508標(biāo)準(zhǔn)的資格認(rèn)證中看出。
你可能也聽說過美國政府正在關(guān)注這些發(fā)展,比如美國白宮國家網(wǎng)絡(luò)主任辦公室(ONCD)。該辦公室上個月(2024年2月)發(fā)布了一份報告,建議轉(zhuǎn)向內(nèi)存安全的編程語言,并指出Rust是可以在安全關(guān)鍵的太空系統(tǒng)中替代C和C++。
雖然數(shù)據(jù)庫不是至關(guān)重要的太空系統(tǒng),但它們通常在組織中扮演著至關(guān)重要的角色。你想要保證你的數(shù)據(jù)安全,因?yàn)槿绻銇G失了你的數(shù)據(jù),你就會失去你的業(yè)務(wù)。
因此,如果主要系統(tǒng)中65-88%的安全漏洞可能是由內(nèi)存問題引起的,那么理解為什么SurrealDB把賭注押在Rust上以確保數(shù)據(jù)盡可能安全就不是什么難事了。