Backend Advanced Rust

SurrealDB - 多模型数据库

Rust 编写的多模型数据库,统一文档、图谱、关系型、时序数据,支持实时查询、向量搜索和嵌入式部署

databaserustdistributed

什么是 SurrealDB?

SurrealDB 是一个用 Rust 编写的多模型数据库,将文档、图谱、关系型、时序、地理空间和键值数据统一到单一引擎,并具备强大的搜索和检索功能(全文、向量、混合检索)以及实时事件驱动能力。

安装

Docker(推荐)

docker run --rm -p 8000:8000 surrealdb/surrealdb:latest start

编程语言 SDK

npm install surrealdb.js   # JavaScript/TypeScript
pip install surrealdb      # Python
go get github.com/surrealdb/surrealdb.go # Go

快速开始

USE NS mynamespace DB mydb;

CREATE user SET name = "Alice", email = "alice@example.com", age = 30;

SELECT * FROM user WHERE age > 18;

数据模型

文档模型

CREATE article SET
  title = "Getting Started",
  content = "This is the content...",
  tags = ["tutorial", "surreal"];

图模型(无 JOIN)

-- 创建关系
RELATE person:alice ->knows-> person:bob;

-- 图查询
SELECT ->knows->person.name FROM person:alice;

实时查询(Live Query)

LIVE SELECT * FROM user WHERE active = true;

数据库变化会实时推送到应用(通过 WebSocket)。

SDK 使用

JavaScript

import Surreal from 'surrealdb.js';

const db = new Surreal('http://127.0.0.1:8000/rpc');
await db.signin({ user: 'root', pass: 'root' });
await db.use({ namespace: 'myns', database: 'mydb' });

const user = await db.create('user', { name: 'Alice', email: 'alice@example.com' });
const users = await db.select('user');

部署方式

方式场景
嵌入式 (WASM)边缘计算、浏览器
单节点中小型项目
分布式集群大规模、高可用
SurrealDB Cloud托管服务

与传统数据库对比

特性SurrealDBPostgreSQLMongoDBNeo4j
多模型
图查询
向量搜索需扩展需扩展
实时推送

最佳实践

  1. 从 Docker 快速体验:无需安装
  2. 善用 Live Query:实时应用场景替代轮询
  3. 图查询替代多表 JOIN:多对多关系用 RELATE
  4. SCHEMAFULL 生产环境:确保数据一致性

参考