用 Rust 编写 Postgres 函数


PL/Rust 是一种可加载、可信的过程语言处理程序,使开发人员能够使用 Rust 编程语言创建 PostgreSQL 函数。与其他过程语言不同,PL/Rust 函数不被解释。相反,您提供的定义被CREATE FUNCTION ... LANGUAGE plrust包装在 Rust 中,编译为本机机器代码,并动态加载。

许多常见的编译权衡适用:

  • 编译可能很慢
  • 执行速度非常快,通常比 PL/pgSQL 快 10 倍!
  • 类型是静态的,必须显式处理
  • 可以全面分析代码并在编译时捕获错误
  • PL/Rust 必须了解它编译什么以及如何编译,所以 1.0 目前只支持一些 Postgres 类型和 Rust 目标

但是好处是,编译本机(“C”)函数的许多其他负担被消除了。

PL/Rust 可以透明地重新加载、重新编译和替换函数,而无需额外提示,就好像它是任何其他过程语言一样。

平台支持:

  • x86-64 和 aarch64 Linux 支持使用 Postgres 13、14 和 15 进行主机编译
  • 可以使用从https://rustup.rs获得的 Rust 工具链使用 Debian Bullseye 的最新更新启用 x86-64 和 aarch64 之间用于复制目的的交叉编译,其他设置可以通过其他发行版上的用户配置启用
  • Rust 1.67.1 支持可信 PL/Rust