surrealism

🦀 Rust 编译 WASM,扩展 SurrealDB 核心能力

SurrealDB 官方 WASM 扩展开发框架,支持 Rust 编译为数据库原生模块,可直接在 SurrealQL 中调用自定义函数,适合需要扩展数据库能力的 Rust 开发者。

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

使用说明

核心用法

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

显著优点

  • 原生集成:WASM 模块以一等公民身份运行于数据库内部,调用延迟极低,无需网络 RPC
  • Rust 生态:可复用 crates.io 上海量专业库(加密、科学计算、文本处理等)
  • 安全沙箱:WASM 的内存隔离模型天然限制模块权限,降低数据库层面的攻击面
  • 版本对齐:由 SurrealDB 官方维护,与核心版本同步演进

潜在缺点与局限性

  • API 不稳定:文档明确标注处于积极开发阶段,3.x 版本间可能 Breaking Change
  • Rust 门槛:要求开发者熟悉 Rust 所有权系统与 WASM 编译流程
  • 调试困难:WASM 错误栈追踪相比原生 Rust 更晦涩,缺乏成熟调试工具链
  • 生态早期:社区示例与第三方教程稀缺,问题排查依赖官方仓库

适合人群

  • 需要为 SurrealDB 添加特定领域算法(量化金融、NLP、自定义编解码)的 Rust 开发者
  • 追求极致性能、无法接受 UDF 网络开销的基础设施团队
  • 已有 Rust 技术栈、希望复用现有库的数据库用户

常规风险

  • 稳定性风险:非稳定 API 可能导致生产代码在升级时失效
  • 沙箱逃逸:虽然 WASM 提供内存隔离,但宿主接口(如 SurrealDB 提供的 WASI 扩展)若存在漏洞仍可能被利用
  • 供应链风险:依赖的 Rust crate 若存在漏洞,将随 WASM 模块一同进入数据库运行时
  • 运维复杂度:WASM 模块的版本管理与回滚策略需要额外设计,缺乏成熟最佳实践

surrealism 内容

手动下载zip · 2.8 kB
skill-card.mdtext/markdown
请选择文件