Repolode
clockworklabs

clockworklabs/SpacetimeDB

アプリケーションロジックをデプロイできるリレーショナルデータベース兼サーバー。クライアントは直接接続し、購読者には更新がリアルタイムで配信されます。

代替できる製品:Firebase

スター
25,328
フォーク
1,091
未解決の Issue
942
最終コミット
2 時間前

これは何?

SpacetimeDBを使うと、クライアントとデータベースの間にWebサーバーやゲームサーバーを別途用意する必要がありません。Rust、C#、TypeScript、C++でスキーマとビジネスロジックをモジュールとして記述すると、SpacetimeDBがコンパイルしてデータベース内で実行し、接続中のクライアントと状態を同期します。クライアントはreducer(データを変更する関数)を呼び出し、テーブルを購読します。コミットされた変更は、ポーリングなしでサーバーから自動的に配信されます。

低レイテンシでアクセスできるよう、アプリケーションの状態はすべてメモリ上に保持され、ディスク上のコミットログが永続性とクラッシュリカバリーを担います。トランザクションはACID保証に従います。バージョン2.0以降では、トランザクションがデフォルトで永続化されるまで、購読の更新とreducerの結果はクライアントに返されません。クライアント側でこの動作を無効にすれば、レイテンシを抑えられます。

クライアントSDKは、TypeScript(React、Vue、Svelte、Node.jsを含む)、Rust、C#(Unityを含む)、およびUnreal Engine向けのC++に対応しています。チャット、ダッシュボード、共同作業ツールなどのリアクティブなWebアプリや、マルチプレイヤーゲームを対象としています。

主な機能

  • 01Rust、C#、TypeScript、またはC++で記述したモジュールとして、データベース内でアプリケーションロジックを実行します。
  • 02クライアントはテーブルを購読し、ポーリングなしでコミット済みの変更をリアルタイムに受け取れます。
  • 03ACIDトランザクションに対応し、状態はメモリ上に保持され、永続性とリカバリーのためにディスク上のコミットログを使用します。
  • 04Confirmed readsでは、トランザクションが永続化されるまで更新を保留できます。この動作はクライアントごとに設定できます。
  • 05TypeScript(React hooks対応)、Rust、C#/Unity、C++/Unreal Engine向けのクライアントSDKを提供します。
  • 06DockerまたはCLIを使ってローカルで実行でき、Maincloudというクラウドデプロイ विकल्पも利用できます。

ユースケース

  • 別途APIサーバーやpub/subレイヤーを用意せずに、共同作業用Webアプリやチャットサービスを構築する。
  • 接続中のすべてのクライアントに更新をリアルタイムで表示するライブダッシュボードを作成する。
  • 共有されたリアルタイムのワールド状態を扱うMMORPGなどのマルチプレイヤーゲームを支える。
  • アプリケーション全体を単一の言語で記述し、単一のバイナリとしてデプロイする。

クイックスタート

  1. 1

    READMEに記載されている公式インストールスクリプトを実行する

  2. 2

    アカウントにログインする

    spacetime login
  3. 3

    テンプレートからプロジェクトを作成し、dev watcherを起動する

    spacetime dev --template chat-react-ts

使う前に知っておきたいこと

  • Business Source License 1.1の下でライセンスされています。このライセンスはソースコードを利用できますが、OSI認定のオープンソースライセンスではありません。数年後にAGPL v3.0へ移行します。
  • クイックスタートではMaincloudに公開します。Maincloudは独自の料金体系を持つ有料ホスティングサービスです。

収録されている特集

トピック

よくある質問

SpacetimeDB とは?
アプリケーションロジックをデプロイできるリレーショナルデータベース兼サーバー。クライアントは直接接続し、購読者には更新がリアルタイムで配信されます。 SpacetimeDBを使うと、クライアントとデータベースの間にWebサーバーやゲームサーバーを別途用意する必要がありません。Rust、C#、TypeScript、C++でスキーマとビジネスロジックをモジュールとして記述すると、SpacetimeDBがコンパイルしてデータベース内で実行し、接続中のクライアントと状態を同期します。クライアントはreducer(データを変更する関数)を呼び出し、テーブルを購読します。コミットされた変更は、ポーリングなしでサーバーから自動的に配信されます。
SpacetimeDB は無料で使えますか?ライセンスは?
SpacetimeDB は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
SpacetimeDB は今もメンテナンスされていますか?
活発にメンテナンス中。SpacetimeDB の最終コミットは 2026年10月22日 です。
SpacetimeDB は何に使えますか?
別途APIサーバーやpub/subレイヤーを用意せずに、共同作業用Webアプリやチャットサービスを構築する。 接続中のすべてのクライアントに更新をリアルタイムで表示するライブダッシュボードを作成する。 共有されたリアルタイムのワールド状態を扱うMMORPGなどのマルチプレイヤーゲームを支える。 アプリケーション全体を単一の言語で記述し、単一のバイナリとしてデプロイする。
SpacetimeDB のインストール方法は?
READMEに記載されている公式インストールスクリプトを実行する アカウントにログインする: spacetime login テンプレートからプロジェクトを作成し、dev watcherを起動する: spacetime dev --template chat-react-ts
SpacetimeDB はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/clockworklabs/SpacetimeDB

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト