为什么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上以确保数据尽可能安全就不是什么难事了。

责任编辑:武晓燕 来源: coding到灯火阑珊
相关推荐

2020-09-25 08:10:55

Rust系统编程

2021-02-24 07:42:34

PythonRust语言

2015-08-06 10:14:15

造轮子facebook

2022-08-15 08:27:02

基站网络

2013-03-12 14:30:09

Ubuntu操作系统

2021-02-11 13:30:56

Nodejs源码c++

2014-08-25 10:00:18

开源

2019-03-19 08:59:13

物联网IOT技术

2015-05-12 11:04:42

Java EE学习Java EE

2019-01-14 07:28:56

大数据云计算互联网

2017-04-05 16:40:45

2017-09-08 08:35:16

Android代码API设计

2024-10-17 16:41:57

KafkaZooKeeper

2019-11-27 10:25:15

SaaS云端IT架构

2012-06-18 14:51:09

Python

2017-04-05 18:10:05

R语言开发Ross

2019-12-26 14:52:31

微软CortanaAndroid

2022-11-28 09:58:58

C++开发

2021-03-16 08:35:14

Kubernetes Docker容器

2009-12-17 15:18:47

点赞
收藏

51CTO技术栈公众号