S-JIS[2025-12-25/2026-01-04]
Tsurugi ユーザー定義関数
Tsurugi(TsurugiDB)のSQLのユーザー定義関数(UDF)のメモ。
Tsurugi 1.8.0で、試験的機能としてユーザー定義関数(UDF)が使えるようになった。
ユーザーが関数を作っておき、select文などから呼び出すことが出来る。
select my_function(foo) from test;
UDFの使い方は他のRDBMSと同じだが、作り方は異なる。
他のRDBMSではcreate function文でUDFを定義するが、TsurugiのUDFはgRPCを利用する。
(gRPCは、Googleが開発した、RPC(Remote Procedure Call、別の場所にある関数を呼び出す仕組み)のフレームワーク)
ユーザーはprotoファイルで関数を定義し、その処理を行うgRPCサーバーを用意する。
gRPCサーバーを作るプログラミング言語は(gRPCが対応しているものなら)何でも良い。
TsurugiはgRPCクライアントとして振る舞う。
SQL文の中でUDFが呼ばれると、TsurugiはgRPCサーバーの関数を呼び出す。
このため、TsurugiのUDFはTsurugi起動前に作成しておく必要がある。
(Tsurugiの実行中に動的にUDFを作ることは出来ない)
TsurugiのUDFは以下の手順で作成する。
- protoファイルを作成する。(UDFの定義を行う)
- 使用できるデータ型はTsurugi UDFで規定されているもののみ。
- protoファイルをビルドし、gRPCサーバー(gRPCサービス)を作る。
- gRPCサーバーを作るプログラミング言語は(gRPCが対応しているものなら)何でも良い。
- UDFをTsurugiに登録する。
- udf-plugin-builderというツールを使用する。
- Python製なので、実行環境にPythonが必要。
- protoファイルをビルドしてgRPCクライアントのsoファイルとiniファイルを生成し、Tsurugiから見える場所に配置する。このため、Tsurugiと同じサーバー上で実行する。
- gRPCサーバーを起動する。
- gRPCサーバーが稼働する場所はTsurugiと異なるサーバーで構わないが、udf-plugin-builderでTsurugiに登録する際に「接続先の場所(ホスト名やポート番号)」を指定する。
- または、生成されたiniファイルを直接編集して接続先を変更することも出来る。
- Tsurugiを起動する。
- UDF実行時に、プラグイン(UDFのsoファイルとiniファイル)が読み込まれる。
SQLへ戻る /
Tsurugiへ戻る /
技術メモへ戻る
メールの送信先:ひしだま