surrealism

🦀 为SurrealDB编写Rust WASM扩展

为SurrealDB 3开发Rust WASM扩展,编译后作为原生模块嵌入数据库,支持自定义SurrealQL函数调用

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

使用说明

Surrealism — SurrealDB WASM扩展开发框架

核心定位

Surrealism是SurrealDB 3.0引入的官方WASM扩展系统,允许开发者用Rust编写自定义函数,编译为WebAssembly后作为原生模块部署到数据库内核中直接调用。

技术架构与用法

三步开发流程:
1. 编码 — 使用#[surrealism]宏标注Rust函数,配合surrealism.toml清单文件

2. 编译 — 通过surreal module compile命令生成.wasm二进制文件

3. 部署 — 在SurrealQL中执行DEFINE BUCKET分配存储 + DEFINE MODULE注册模块

调用方式:注册后通过模块名::函数名(...)语法直接在SurrealQL中调用,与内置函数无差别体验。

显著优点

| 维度 | 优势 |
|:---|:---|
| 性能 | WASM沙箱内执行,接近原生速度,避免进程间通信开销 |
| 安全 | 隔离内存空间,崩溃不影响数据库主进程 |
| 生态 | 直接调用Rust crates丰富生态(密码学、数值计算、文本处理等) |
| 便携 | 单二进制分发,跨平台运行 |
| 集成度 | 深度嵌入查询引擎,支持在WHERE/JOIN等子句中使用 |

典型应用场景

  • 自定义标量函数:复杂业务逻辑下沉至数据库层
  • 领域专用计算:量化金融模型、自然语言处理、自定义编解码
  • 测试数据生成:集成fake/mock库生成仿真数据
  • 全文检索扩展:自定义Analyzer实现特定语言分词

局限性与风险

当前约束:

  • ⚠️ API不稳定:SurrealDB 3.x期间接口可能变更
  • 工具链依赖:必须安装Rust及wasm32-unknown-unknown目标
  • 调试复杂度:WASM调试体验弱于原生开发
  • 内存限制:受WASM沙箱内存上限约束
  • 生态早期:第三方surrealism crate生态尚在建设中

安全考量:

  • WASM沙箱提供基础隔离,但仍需审计不可信代码
  • DEFINE BUCKET权限控制不当可能导致模块被非授权访问
  • 复杂Rust依赖可能引入供应链风险

适合人群

  • 需要数据库层自定义函数的后端开发者
  • 追求查询性能不愿将计算外移至应用层
  • 熟悉Rust生态且接受API不稳定的早期采用者
  • 有特定领域计算需求(如金融、NLP)的技术团队

版本与可信度

  • 上游版本:SurrealDB v3.0.0 (commit: 2e0a61fd4daf)
  • 技能版本:1.0.4
  • 许可证:MIT
  • 官方SurrealDB团队维护,属第一方扩展机制

surrealism 内容

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