rust如何连接oracle数据库,使用 Rust 开发 PostgreSQL 存储过程

pgxr

使用 Rust 来编写 PostgreSQL 的扩展函数(相当于存储过程)。

fast-programs-different-programming-languages.svg

使用这个星球上最快的、高效、安全、有趣的编程语言,来为世界上功能最强大的开源关系数据库编写库内的程序!

试想,当你从数据库中查询出 1000 条记录用于程序处理时,当你的程序是数据库内的程序时,你根本无需将这 1000 条结果通过 PostgreSQL 的通讯协议走网络传输到应用程序里,在应用程序里分配这么大一块内存来装这些数据,再来进行处理。你可以直接读取数据库内这 1000 条结果的内存,在上面进行分析,直接进行逻辑处理或是返回结果!

又或者,你有一个复杂的逻辑,要查询出一些数据来,根据这些数据进行一些逻辑处理,然后还要更新一些数据,整个过程需要连接数据库次数达到数十次之多。如果你把程序写在数据库内,你只需要连接一次数据库!

通过把程序写在数据库内,你节省了应用程序所需要使用的内存,也节省了数据需要在网络间传输的时间。

而最适合用来进行这项工作的开发语言,应该就是 Rust 了!高性能、强表达能力、拒绝程序 BUG、无损耗 C 接口,让你的程序极速飞驰!同时让你的开发过程轻松愉悦!

经测试,用 Rust 开发的存储过程比用 PL/pgSQL 开发的存储过程要快 30~40 倍之多!

代码示例

#[macro_use]

extern crate pgxr;

use pgxr::bindings::*;

PG_MODULE_MAGIC!();

PG_FUNCTION_INFO_V1!(pg_finfo_pgxr_example_add_one);

#[no_mangle]

pub extern "C" fn pgxr_example_add_one(fcinfo: FunctionCallInfo) -> Datum

{

let num = try_return_int!(PG_GETARG_I32(fcinfo, 0));

PG_RETURN_I32(num + 1)

}

使用方法

git clone https://github.com/clia/pgxr.git

cd pgxr/examples/pgxr_example_add_one

cargo build --release

然后运行 pg_config

找到 PKGLIBDIR,如 /usr/lib/postgresql/11/lib

sudo cp target/release/libpgxr_example_add_one.so /usr/lib/postgresql/11/lib

sudo su - postgres

psql

CREATE FUNCTION pgxr_example_add_one(integer) RETURNS integer

AS 'libpgxr_example_add_one.so', 'pgxr_example_add_one'

LANGUAGE C STRICT;

select pgxr_example_add_one(1);

这就是全部了,简单吧?

玩得开心!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值