はじめに

こんにちは。株式会社ジールの@yakisobapanです。

Amazon RDSにて、Rustを用いたユーザー定義関数の作成ができるようになりましたので、試してみました。

目次

    • アップデート内容

 

    • アーキテクチャ

 

    • やってみた

 

    所感

アップデート内容

RDS for PostgreSQLでプログラミング言語”Rust”がサポートされ、Rustを利用した高度なユーザー定義関数の作成ができるようになりました。

Amazon RDS for PostgreSQL が Rust をサポートし、高パフォーマンスのデータベース機能を構築できるようになりました
(2023/05/23 What’s New with AWS?より)

 

アーキテクチャ

image.png

やってみた

DBの構築

    • DBインスタンスの作成

 

    RDSコンソールより、下記の要件でDBインスタンスを作成します。

・DBタイプ:PostgreSQL
・バージョン:PostgreSQL 15.2 以降
・パラメータグループ:カスタム1
*注釈でも説明していますが、Rustの拡張機能をインストールするため、
デフォルトではなく、カスタムパラメータグループを指定します。

image.png
undefined

PL/Rustのセットアップ

    plrust 拡張機能のインストール

・下記順序で”DB インスタンスパラメータグループ”リンクを選択します。

undefined

・検索窓より「shared_preload_libraries」を探し、対象を”✓”し、
”パラメータの編集”押下します。

image.png
image.png
undefined
    設定の確認

・DB接続後、下記クエリを実行して、
拡張機能がインストールされているか確認します。

SHOW shared_preload_libraries;
undefined
    • 関数の実行

 

    ・Rustを利用して書かれたファンクションを実行してみます。
/*
1~100の中で3で割り切れない数値を配列で出力する
filter_multiplesという関数を作成
*/
CREATE OR REPLACE FUNCTION filter_multiples(a BIGINT[], multiple BIGINT) RETURNS BIGINT[]
    IMMUTABLE STRICT
    LANGUAGE PLRUST AS
$$
    Ok(Some(a.into_iter().filter(|x| x.unwrap() % multiple != 0).collect()))
$$;


WITH gen_values AS (
SELECT ARRAY(SELECT * FROM generate_series(1,100)) as arr) --1-100の数値を生成して配列に格納
SELECT filter_multiples(arr, 3) --filter_multiplesに引数を渡して実行結果を表示
from gen_values;

・実行してみると、結果が返されていることがわかります。

image.png

所感

PL/Rustでしかできないようなことは、まだ見い出せていませんが、今回PL/Rustが追加されたことで、間違いなく開発の幅が広がったのではないのでしょうか!

またRustは、まったくの初見でしたので、新しい言語に触れる良い機会になりました。
勉強も兼ねて、もう少し深堀して触ってみようと思いますので、どうぞお楽しみに!

参考

 


株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:

ZEUSCloud

image.png
广告
将在 10 秒后关闭
bannerAds