那位用Rust重写数据库的创始人来复盘了:删除27万行C++代码,值吗?
赵钰莹AI前线 2022-10-08 13:30 Posted on北京
嘉宾 | 吴英骏博士
采访 | 赵钰莹数据库初创企业 RisingWave Labs 曾经发表了一篇博客文章,宣布完全删除掉了 RisingWave(该公司开发的云原生流式数据库) 的 27 万行 C++ 代码库,并用 Rust 语言从头开始重写了一遍系统。本文,我们采访到了该公司的创始人 &CEO 吴英骏博士,详细探讨了重写前中后期的准备、遇到的问题以及经验复盘。放弃 Rust,初抉择是 C++ InfoQ:选择哪种编程语言和 RisingWave 的特性有关系吗?
吴英骏: RisingWave 是一款云原生流式数据库,主要服务于需要超低延迟实时数据分析应用。其定位不仅是一个 SQL 数据库系统,还提供流处理能力:使用流数据执行连续查询,并以物化视图的形式动态维护结果。另外,采用分层架构,建立在现代云基础架构之上,利用云资源为用户提供对成本和性能的细粒度控制。
这个架构最大的特点在于资源是无限的,既然有无限资源,性能并不是特别大的问题,只要加资源,性能就会更好,但是资源是收费的,设备是收费的,我们希望能够在保证用户性能的前提下让整个系统更加便宜,让普通用户以一种比较低的价格使用,这是我们的核心设计理念。
这与编程语言的选择没有太大关系,开发一款数据库可以用各种各样的语言,比如 C++、Rust、Java,Scala 等,一些交易系统相关的可能还会考虑 Haskell,但即便是在 20 年之前的数据库,也鲜少有人使用 Java 、Basic、Python 这类语言,主要是因为这些语言的运行效率和性能均不高。
我们主要希望选择一门高性能的编程语言,所谓的高性能基本上是 C++、Rust 或者一些小众的语言,如果希望可以被用户广泛接受,基本是 C++ 和 Rust。
InfoQ:从之前披露的文章中可以看到团队最初选择的是 C++ 语言来构建,并集结了多位具有 10 年以上经验的 C++ 工程师,当时是看中了 C++ 的哪些特质还只是遵循市面上大部分数据库系统的选择?
吴英骏: 我本人比较擅长 C++,不管是读博期间还是创业之前做的所有数据库都是用 C++ 写的,没有用过其他任何语言写过任何项目。
创业之初,有人给我们提过可以用 Rust 写,理由是用 Rust 写容易火。在我看来,这不可以算作理由,我们又不是想要成为网红,选择一门语言肯定不是
登录后可查看完整内容,参与讨论!
立即登录