Surrealism – WASM-Erweiterungen für SurrealDB
Neu in SurrealDB 3. Schreiben Sie benutzerdefinierte Funktionen in Rust, kompilieren Sie sie nach WebAssembly (WASM) und stellen Sie sie als native Datenbankmodule bereit, die aus SurrealQL aufgerufen werden können.
Voraussetzungen
- Rust-Toolchain (stabil) mit Ziel
wasm32-unknown-unknown - SurrealDB CLI v3.1.4+ (
surreal-Binärdatei mit Unterbefehlsurreal module) - Vertrautheit mit SurrealQL
DEFINE MODULEundDEFINE BUCKET
Entwicklungsworkflow
1. Annotieren – surrealism.toml + #[surrealism] bei Rust-Funktionen
2. Kompilieren – surreal module compile (erzeugt .wasm-Binärdatei)
3. Registrieren – DEFINE BUCKET + DEFINE MODULE in SurrealQL
Kurzanleitung
# Neues Surrealism-Projekt erstellen
cargo new --lib my_extension
cd my_extension
# WASM-Ziel hinzufügen
rustup target add wasm32-unknown-unknown
# surrealism.toml erstellen (erforderliches Manifest)
cat > surrealism.toml << 'TOML'
[package]
name = "my_extension"
version = "0.1.0"
TOML
# Erweiterung schreiben (mit #[surrealism] annotieren)
cat > src/lib.rs << 'RUST'
use surrealism::surrealism;
#[surrealism]
fn greet(name: String) -> String {
format!("Hello, {}!", name)
}
RUST
# Mit SurrealDB CLI nach WASM kompilieren
surreal module compile
# In SurrealDB registrieren
surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- Zugriff auf die WASM-Datei gewähren
DEFINE BUCKET my_bucket;
-- Die Modulfunktionen registrieren
DEFINE MODULE my_extension FROM 'my_bucket:my_extension.wasm';
-- Die Funktion in Abfragen verwenden
SELECT my_extension::greet('World');
Anwendungsfälle
- Benutzerdefinierte skalare Funktionen, die aus SurrealQL aufgerufen werden können
- Fake-/Mock-Datengenerierung für Tests
- Domänenspezifische Logik (Sprachverarbeitung, quantitative Finanzen, benutzerdefinierte Kodierung)
- Zugriff auf spezielle Rust-Crate-Funktionalitäten, die zu spezifisch für das SurrealDB-Kernsystem sind
- Benutzerdefinierte Analysefunktionen für die Volltextsuche
Status
Surrealism befindet sich in aktiver Entwicklung und ist noch nicht stabil. Die API kann sich zwischen SurrealDB 3.x-Releases ändern. Feedback über GitHub-Issues/PRs im surrealdb/surrealdb-Repository einreichen.
Vollständige Dokumentation
Die Haupt-Regeldatei dieses Skills enthält die vollständige Anleitung:
- rules/surrealism.md – Projekteinrichtung, Rust-Funktionssignaturen, WASM-Kompilierung, DEFINE MODULE/BUCKET-Syntax, Bereitstellung, Tests und Best Practices
- SurrealDB Extensions Docs – offizielle Dokumentation
- CLI module command –
surreal module-Referenz