Repolode
clockworklabs

clockworklabs/SpacetimeDB

一个兼作服务器的关系型数据库,应用逻辑直接部署在库内,客户端直连并实时接收数据变更。

可替代:Firebase

Star
25,328
Fork
1,091
未关闭 Issue
942
最近提交
2小时前

这是什么?

SpacetimeDB 去掉了客户端与数据库之间独立的 Web 或游戏服务器层。开发者用 Rust、C#、TypeScript 或 C++ 把表结构和业务逻辑写成一个模块,SpacetimeDB 编译后直接在数据库内运行,并把状态同步给已连接的客户端。客户端调用 reducer(修改数据的函数)并订阅表,服务端会自动推送已提交的变更,无需轮询。

所有应用状态保存在内存中以降低访问延迟,磁盘上的 commit log 负责持久化和崩溃恢复,事务满足 ACID 特性。自 2.0 版本起,默认情况下订阅更新和 reducer 结果会等到事务落盘后才发送给客户端,也可以关闭该行为以换取更低延迟。

客户端 SDK 支持 TypeScript(包括 React、Vue、Svelte、Node.js)、Rust、C#(含 Unity)以及用于 Unreal Engine 的 C++。它适用于聊天、仪表盘、协作工具等响应式 Web 应用,也适用于多人游戏。

核心功能

  • 01应用逻辑以 Rust、C#、TypeScript 或 C++ 模块形式运行在数据库内部。
  • 02客户端订阅数据表,无需轮询即可实时接收已提交的变更。
  • 03满足 ACID 事务,状态常驻内存,并通过磁盘 commit log 保证持久性与崩溃恢复。
  • 04确认读机制可让更新在事务落盘后才送达客户端,并可按客户端配置。
  • 05提供 TypeScript(含 React hooks)、Rust、C#/Unity 和 C++/Unreal Engine 的客户端 SDK。
  • 06可通过 Docker 或 CLI 本地运行,也支持名为 Maincloud 的云端部署。

适用场景

  • 构建协作类 Web 应用或聊天服务,无需单独的 API 服务器或发布订阅层。
  • 制作实时仪表盘,让所有在线客户端即时看到数据变化。
  • 为 MMORPG 等多人游戏提供共享的实时世界状态后端。
  • 用单一语言编写完整应用,并部署为一个可执行文件。

快速上手

  1. 1

    运行 README 中的官方安装脚本

  2. 2

    登录你的账户

    spacetime login
  3. 3

    从模板创建项目并启动开发监视模式

    spacetime dev --template chat-react-ts

使用前须知

  • 采用 Business Source License 1.1 许可证,属于源码可用而非 OSI 开源许可证,约几年后才会转为 AGPL v3.0。
  • 快速开始会发布到 Maincloud,这是一项有独立定价的付费托管服务。

收录于专题

标签

常见问题

SpacetimeDB 是什么?
一个兼作服务器的关系型数据库,应用逻辑直接部署在库内,客户端直连并实时接收数据变更。 SpacetimeDB 去掉了客户端与数据库之间独立的 Web 或游戏服务器层。开发者用 Rust、C#、TypeScript 或 C++ 把表结构和业务逻辑写成一个模块,SpacetimeDB 编译后直接在数据库内运行,并把状态同步给已连接的客户端。客户端调用 reducer(修改数据的函数)并订阅表,服务端会自动推送已提交的变更,无需轮询。
SpacetimeDB 可以免费使用吗?用的什么许可证?
SpacetimeDB 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
SpacetimeDB 还在维护吗?
活跃维护中。SpacetimeDB 最近一次提交是在 2026年10月22日。
SpacetimeDB 适合用来做什么?
构建协作类 Web 应用或聊天服务,无需单独的 API 服务器或发布订阅层。 制作实时仪表盘,让所有在线客户端即时看到数据变化。 为 MMORPG 等多人游戏提供共享的实时世界状态后端。 用单一语言编写完整应用,并部署为一个可执行文件。
SpacetimeDB 怎么安装和运行?
运行 README 中的官方安装脚本 登录你的账户: spacetime login 从模板创建项目并启动开发监视模式: spacetime dev --template chat-react-ts
在哪里获取 SpacetimeDB?
源代码和安装说明在 GitHub 上:https://github.com/clockworklabs/SpacetimeDB

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目