pgx 代码,为何让 postgres extension 的撰写如此简单?

答案是 Rust 自身的诸多特性:内存和并发安全性,宏支持,以及和 C 的 ABI 的兼容。这些特性,共同造就了 pgx 优雅的使用体验:

1.使用 pg_module_magic!() 来处理 extension 的脚手架代码。这个宏的背后是一些脚手架代码来设置 extension 的上下文。

2.使用 #[pg_extern] 来封装 Rust 函数,使其接口符合 postgres extension 的 C ABI,以及处理 Rust 数据结构和 postgres 内部数据结构的转换。

3.#[pg_extern] 和 default! 宏甚至可以帮助 pgx 工具链生成相关的 SQL 语句,这样当打包一个完整的 extension 时,你可以减少撰写这些SQL语句的痛苦。

Rust还有正确性的保证。可以用 Rust 扩展 elixir 能力的 rustler 项目一样,pgx 代码只要编译通过,几乎没有内存安全和并发安全问题;如果在你的 extension 中抛出致命异常(panic),postgres server 不会崩溃,只是执行这个操作的 transaction 被回滚而已。

然而,其它编程语言,或者效率不高,或者表现力不强,或者无法保证程序的正确性,或者繁文缛节等。

这样的Rust,要不要尝试学习和实践?与此同时,我们欢迎热衷Rust技术,热爱量化的小伙伴,加入非凸!

【岗位】Rust开发工程师(具体要求可登陆官方网站)

【投递邮箱】recruit@ft.tech

【微信沟通】354334592

【官网】ft.tech

资料来源:程序人生

27 views
Comments
登录后评论
Sign In