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