1. 项目定位与用途
SpacetimeDB 定位为关系数据库与应用服务器的结合体,核心用途是允许开发者将应用逻辑(数据表定义和业务处理函数)作为模块直接上传至数据库。客户端直接连接数据库,通过调用 Reducer 或订阅数据变更来交互,完全省去独立后端服务。这实现了“数据库即服务器”的范式,使开发聚焦于数据模型和逻辑本身,无需单独构建和部署应用服务器层。
SpacetimeDB 是一个将数据库与服务器功能合二为一的平台,开发者可直接将业务逻辑写入数据库模块,客户端直连调用。支持 Rust、C#、TypeScript 等语言,适用于游戏、协作、物联网等实时场景。本页提供项目介绍、安装指南、使用方法和架构解析。
SpacetimeDB 是一个融合关系型数据库与应用服务器的创新平台,开发者可将业务逻辑以模块形式直接部署至数据库,实现无需独立后端的实时应用开发,显著提升效率并降低延迟。
SpacetimeDB 定位为关系数据库与应用服务器的结合体,核心用途是允许开发者将应用逻辑(数据表定义和业务处理函数)作为模块直接上传至数据库。客户端直接连接数据库,通过调用 Reducer 或订阅数据变更来交互,完全省去独立后端服务。这实现了“数据库即服务器”的范式,使开发聚焦于数据模型和逻辑本身,无需单独构建和部署应用服务器层。
传统架构中,业务逻辑需部署在独立的应用服务器上,导致架构复杂、延迟增加、开发运维成本高。SpacetimeDB 通过将逻辑内驻数据库,消除应用服务器层,简化部署流程,减少网络开销,并提供内置的实时同步与状态管理机制,从而解决上述痛点,提升系统整体性能和开发速度。
SpacetimeDB 特别适合需要实时数据同步和低延迟响应的应用,包括多人在线游戏(同步玩家状态)、实时协作工具(如文档编辑)、物联网场景(设备数据聚合与即时响应)以及后端即服务(BaaS)快速提供数据 API。其架构也适用于快速原型开发和需要简化后端复杂度的项目。
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。
开发者使用支持的语言(Rust、C#、TypeScript 或 C++)编写 SpacetimeDB 模块,定义数据表和 Reducer(异步函数)或视图(同步查询)。通过 SpacetimeDB CLI 或语言特定工具将模块编译并部署到 SpacetimeDB 服务器。客户端应用使用对应 SDK 连接服务器,调用 Reducer 发起写操作,或订阅表变更以自动更新本地状态。详细开发流程见官方文档中的快速入门指南。
SpacetimeDB 采用内存优先设计,应用状态常驻内存以保证低延迟,通过提交日志(commit log)实现持久化。核心架构组件包括 Host(托管数据库)、Database(导出表和 Reducer)、Table(数据存储)、Reducer(请求处理)。订阅系统管理客户端数据订阅,自动推送增量更新。多语言绑定通过 `crates/bindings`、`crates/bindings-csharp`、`crates/bindings-cpp` 等提供统一接口,支持跨语言开发。
SpacetimeDB 是一个关系数据库兼服务器,允许将应用逻辑以模块形式直接部署到数据库,客户端无需中间服务器即可连接和交互,实现数据库即服务器的范式。
可通过 Docker 镜像(clockworklabs/spacetimedb)、Rust 的 cargo install spacetimedb、npm 包 spacetimedb 或 NuGet 包 SpacetimeDB.Runtime 安装。开发环境需 Rust 1.93+ 和 Node.js 18+。
官方支持 Rust、C#、TypeScript 和 C++,通过对应的 SDK 和绑定编写模块,定义数据表和业务逻辑。
特别适合需要实时数据同步的低延迟应用,如多人在线游戏、实时协作工具、物联网数据聚合和后端即服务(BaaS),也适用于快速原型开发。
使用语言特定工具将模块编译后,通过 SpacetimeDB CLI 部署到服务器;客户端使用对应 SDK 连接,调用 Reducer 函数发起请求或订阅表变更以接收实时更新。