Surrealism -- SurrealDBのWASM拡張
SurrealDB 3の新機能。Rustでカスタム関数を記述し、WebAssembly (WASM) にコンパイルして、SurrealQLから呼び出せるネイティブデータベースモジュールとしてデプロイします。
前提条件
- Rustツールチェーン(stable)と
wasm32-unknown-unknownターゲット - SurrealDB CLI v3.1.4以上(
surreal moduleサブコマンドを含むsurrealバイナリ) - SurrealQLの
DEFINE MODULEとDEFINE BUCKETの知識
開発ワークフロー
1. アノテーション -- surrealism.toml + Rust関数への #[surrealism]
2. コンパイル -- surreal module compile (.wasm バイナリを生成)
3. 登録 -- SurrealQLで DEFINE BUCKET + DEFINE MODULE
クイックスタート
# Surrealismプロジェクトを作成
cargo new --lib my_extension
cd my_extension
# WASMターゲットを追加
rustup target add wasm32-unknown-unknown
# surrealism.toml(必須のマニフェスト)を作成
cat > surrealism.toml << 'TOML'
[package]
name = "my_extension"
version = "0.1.0"
TOML
# 拡張を記述(#[surrealism] でアノテーション)
cat > src/lib.rs << 'RUST'
use surrealism::surrealism;
#[surrealism]
fn greet(name: String) -> String {
format!("こんにちは、{}!", name)
}
RUST
# SurrealDB CLIを使ってWASMにコンパイル
surreal module compile
# SurrealDBに登録
surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- WASMファイルへのアクセスを許可
DEFINE BUCKET my_bucket;
-- モジュール関数を登録
DEFINE MODULE my_extension FROM 'my_bucket:my_extension.wasm';
-- クエリで関数を使用
SELECT my_extension::greet('World');
ユースケース
- SurrealQLから呼び出せるカスタムスカラー関数
- テスト用のフェイク/モックデータ生成
- ドメイン固有ロジック(言語処理、定量ファイナンス、カスタムエンコーディング)
- SurrealDBのコアには含まれていないニッチなRustクレート機能へのアクセス
- 全文検索用のカスタムアナライザ
ステータス
Surrealismは活発に開発中であり、まだ安定していません。APIはSurrealDB 3.xのリリース間で変更される可能性があります。フィードバックはsurrealdb/surrealdbリポジトリのGitHub Issue/PRで報告してください。
完全なドキュメント
完全なガイダンスについては、メインのスキルルールファイルを参照してください:
- rules/surrealism.md -- プロジェクト設定、Rust関数シグネチャ、WASMコンパイル、DEFINE MODULE/BUCKET構文、デプロイ、テスト、ベストプラクティス
- SurrealDB拡張ドキュメント -- 公式ドキュメント
- CLI moduleコマンド --
surreal moduleリファレンス