surrealism

🦀 Rust 编写 · WASM 编译 · 原生调用

为 SurrealDB 编写 Rust WASM 扩展,编译后作为数据库原生模块调用,实现自定义 SurrealQL 函数与领域特定逻辑。

收藏
3.7k
安装
1.1k
版本
1.0.3
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

Surrealism 是 SurrealDB 3.0 引入的 WASM 扩展开发框架,允许开发者使用 Rust 编写自定义函数,编译为 WebAssembly 后部署为数据库原生模块。开发流程分为三步:使用 #[surrealism] 宏注解 Rust 函数、通过 surreal module compile 编译为 .wasm 二进制文件、在 SurrealQL 中执行 DEFINE BUCKETDEFINE MODULE 注册模块。

显著优点

  • 原生性能:Rust 编译的 WASM 在数据库内部以沙箱方式运行,避免进程间通信开销
  • 生态复用:可直接引入 Rust crates 实现语言处理、金融计算、自定义编解码等 niche 需求
  • 无缝集成:注册后以 module_name::function_name() 形式直接在 SurrealQL 调用,与内置函数体验一致
  • 灵活部署:通过 BUCKET 机制管理 WASM 文件权限,支持多版本并存

潜在局限

  • API 不稳定:文档明确标注处于活跃开发期,SurrealDB 3.x 版本间可能破坏变更
  • 技术门槛:需同时掌握 Rust、WASM 编译目标及 SurrealQL 模块系统
  • 调试复杂:WASM 沙箱内错误信息可能不如原生 Rust 开发直观
  • 生态早期:第三方 Surrealism 扩展库尚未形成规模,多数场景需从零开发

适合人群

  • 已有 Rust 基础、需要为 SurrealDB 注入自定义业务逻辑的后端开发者
  • 对查询性能敏感、需将计算密集型任务下沉到数据库层的场景
  • 需要复用成熟 Rust 生态(如解析器、加密库)解决特定领域问题的团队

常规风险

  • 版本锁定风险:API 不稳定可能导致升级 SurrealDB 时扩展失效,建议固定 minor 版本并预留迁移成本
  • 安全沙箱边界:虽 WASM 提供隔离,但仍需审查引入的 Rust crates 安全性,避免供应链攻击
  • 调试与监控:生产环境需额外配置 WASM 模块的日志采集与性能指标监控,当前工具链支持有限

surrealism 内容

手动下载zip · 1.7 kB
SKILL.mdtext/markdown
请选择文件