跳到主要内容
项目档案应用项目

clockworklabs/SpacetimeDB 是什么?用途、安装与使用指南

SpacetimeDB 是一个将数据库与服务器功能合二为一的平台,开发者可直接将业务逻辑写入数据库模块,客户端直连调用。支持 Rust、C#、TypeScript 等语言,适用于游戏、协作、物联网等实时场景。本页提供项目介绍、安装指南、使用方法和架构解析。

25,221RustStar 于 2026年3月7日2026年9月19日 更新

AI 总结

SpacetimeDB 是一个融合关系型数据库与应用服务器的创新平台,开发者可将业务逻辑以模块形式直接部署至数据库,实现无需独立后端的实时应用开发,显著提升效率并降低延迟。

中文项目介绍

SpacetimeDB 是一个关系型数据库兼应用服务器的融合系统,允许开发者将应用程序的 schema 和业务逻辑以“模块”形式直接写入数据库。客户端可直连数据库进行数据操作和函数调用,无需传统的独立应用服务器层。 这一设计解决了传统 Web 应用架构中需单独部署、维护应用服务器的问题,简化了系统架构,减少了网络跳转带来的延迟,并极大加速了开发周期。开发者只需专注于业务逻辑的编写,而无需操心服务器运维和 API 层搭建。 技术上,SpacetimeDB 基于 Rust 构建,支持多种编程语言(包括 Rust、C#、TypeScript 和 C++)编写模块。它采用内存优先的状态存储设计,通过提交日志实现持久化,确保低延迟和高可靠性。核心机制包括“Reducer”用于处理异步请求并修改数据库,“订阅”系统用于实时推送数据变更到客户端本地缓存,以及“状态镜像”保持客户端与服务器数据同步。 SpacetimeDB 适用于需要实时数据同步和低延迟响应的场景,如多人在线游戏、实时协作工具、物联网设备数据聚合以及后端即服务(BaaS)等。其一体化架构特别适合快速原型开发和规模化实时应用。

详细信息与使用说明

1. 项目定位与用途

SpacetimeDB 定位为关系数据库与应用服务器的结合体,核心用途是允许开发者将应用逻辑(数据表定义和业务处理函数)作为模块直接上传至数据库。客户端直接连接数据库,通过调用 Reducer 或订阅数据变更来交互,完全省去独立后端服务。这实现了“数据库即服务器”的范式,使开发聚焦于数据模型和逻辑本身,无需单独构建和部署应用服务器层。

2. 解决的问题

传统架构中,业务逻辑需部署在独立的应用服务器上,导致架构复杂、延迟增加、开发运维成本高。SpacetimeDB 通过将逻辑内驻数据库,消除应用服务器层,简化部署流程,减少网络开销,并提供内置的实时同步与状态管理机制,从而解决上述痛点,提升系统整体性能和开发速度。

3. 适用场景

SpacetimeDB 特别适合需要实时数据同步和低延迟响应的应用,包括多人在线游戏(同步玩家状态)、实时协作工具(如文档编辑)、物联网场景(设备数据聚合与即时响应)以及后端即服务(BaaS)快速提供数据 API。其架构也适用于快速原型开发和需要简化后端复杂度的项目。

4. 安装方式

SpacetimeDB 提供多种安装途径:Docker 用户可直接拉取镜像 `clockworklabs/spacetimedb` 运行;Rust 开发者可通过 `cargo install spacetimedb` 安装 CLI 工具;TypeScript 开发者使用 `npm install spacetimedb` 获取 SDK;.NET 开发者通过 NuGet 安装 `SpacetimeDB.Runtime`。开发环境需 Rust 1.93.0 或更高版本,以及 Node.js >=18.0.0 和 pnpm >=9.0.0。

5. 使用方式

开发者使用支持的语言(Rust、C#、TypeScript 或 C++)编写 SpacetimeDB 模块,定义数据表和 Reducer(异步函数)或视图(同步查询)。通过 SpacetimeDB CLI 或语言特定工具将模块编译并部署到 SpacetimeDB 服务器。客户端应用使用对应 SDK 连接服务器,调用 Reducer 发起写操作,或订阅表变更以自动更新本地状态。详细开发流程见官方文档中的快速入门指南。

6. 实现特点

SpacetimeDB 采用内存优先设计,应用状态常驻内存以保证低延迟,通过提交日志(commit log)实现持久化。核心架构组件包括 Host(托管数据库)、Database(导出表和 Reducer)、Table(数据存储)、Reducer(请求处理)。订阅系统管理客户端数据订阅,自动推送增量更新。多语言绑定通过 `crates/bindings`、`crates/bindings-csharp`、`crates/bindings-cpp` 等提供统一接口,支持跨语言开发。

思维导图

SpacetimeDB
核心引擎 (crates/core)
数据存储 (crates/datastore)
执行引擎 (crates/execution)
查询处理 (crates/query)
订阅系统 (crates/subscription)
语言绑定 (crates/bindings)
CLI 工具 (crates/cli)

常见问题

SpacetimeDB 的核心概念是什么?

SpacetimeDB 是一个关系数据库兼服务器,允许将应用逻辑以模块形式直接部署到数据库,客户端无需中间服务器即可连接和交互,实现数据库即服务器的范式。

如何安装 SpacetimeDB?

可通过 Docker 镜像(clockworklabs/spacetimedb)、Rust 的 cargo install spacetimedb、npm 包 spacetimedb 或 NuGet 包 SpacetimeDB.Runtime 安装。开发环境需 Rust 1.93+ 和 Node.js 18+。

支持哪些编程语言开发模块?

官方支持 Rust、C#、TypeScript 和 C++,通过对应的 SDK 和绑定编写模块,定义数据表和业务逻辑。

SpacetimeDB 适用于哪些场景?

特别适合需要实时数据同步的低延迟应用,如多人在线游戏、实时协作工具、物联网数据聚合和后端即服务(BaaS),也适用于快速原型开发。

如何部署和使用 SpacetimeDB 模块?

使用语言特定工具将模块编译后,通过 SpacetimeDB CLI 部署到服务器;客户端使用对应 SDK 连接,调用 Reducer 函数发起请求或订阅表变更以接收实时更新。