Repolode
clockworklabs

clockworklabs/SpacetimeDB

애플리케이션 로직을 데이터베이스에 배포해 서버 역할까지 맡기는 관계형 데이터베이스로, 클라이언트가 직접 연결하면 구독자에게 실시간 업데이트를 전송합니다.

대체할 수 있는 제품:Firebase

스타
25,328
포크
1,091
열린 이슈
942
마지막 커밋
1시간 전

어떤 프로젝트인가요?

SpacetimeDB는 클라이언트와 데이터베이스 사이에 별도의 웹 서버나 게임 서버를 둘 필요가 없게 합니다. Rust, C#, TypeScript 또는 C++로 스키마와 비즈니스 로직을 모듈로 작성하면 SpacetimeDB가 이를 컴파일해 데이터베이스 안에서 실행하고, 연결된 클라이언트와 상태를 동기화합니다. 클라이언트는 데이터 변경 함수인 reducer를 호출하고 테이블을 구독하며, 서버는 폴링 없이 커밋된 변경 사항을 자동으로 전송합니다.

애플리케이션 상태는 낮은 지연 시간으로 접근할 수 있도록 메모리에 보관하고, 디스크의 커밋 로그를 통해 내구성과 장애 복구를 지원합니다. 트랜잭션은 ACID를 보장합니다. 버전 2.0부터는 기본적으로 트랜잭션이 내구성을 확보할 때까지 구독 업데이트와 reducer 결과를 전송하지 않으며, 클라이언트에서 이 동작을 해제해 지연 시간을 줄일 수 있습니다.

클라이언트 SDK는 TypeScript(React, Vue, Svelte, Node.js 포함), Rust, Unity를 포함한 C#, 그리고 Unreal Engine용 C++를 지원합니다. 이 프로젝트는 채팅, 대시보드, 협업 도구 같은 반응형 웹 앱과 멀티플레이어 게임을 대상으로 합니다.

핵심 기능

  • 01Rust, C#, TypeScript 또는 C++로 작성한 모듈 형태의 애플리케이션 로직을 데이터베이스 안에서 실행합니다.
  • 02클라이언트는 테이블을 구독하고 폴링 없이 커밋된 변경 사항을 실시간으로 받습니다.
  • 03ACID 트랜잭션을 지원하며, 상태는 메모리에 보관하고 내구성과 복구를 위해 디스크에 커밋 로그를 기록합니다.
  • 04확인된 읽기 기능을 사용하면 트랜잭션이 내구성을 확보할 때까지 업데이트를 보류하며, 클라이언트별로 설정할 수 있습니다.
  • 05TypeScript(React hooks 포함), Rust, C#/Unity, C++/Unreal Engine용 클라이언트 SDK를 제공합니다.
  • 06Docker 또는 CLI로 로컬에서 실행할 수 있으며, Maincloud라는 클라우드 배포 옵션도 제공합니다.

활용 사례

  • 별도의 API 서버나 pub/sub 계층 없이 협업 웹 앱이나 채팅 서비스를 구축합니다.
  • 연결된 모든 클라이언트가 발생하는 즉시 업데이트를 확인할 수 있는 실시간 대시보드를 만듭니다.
  • 공유되는 실시간 월드 상태를 관리해 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는 클라이언트와 데이터베이스 사이에 별도의 웹 서버나 게임 서버를 둘 필요가 없게 합니다. Rust, C#, TypeScript 또는 C++로 스키마와 비즈니스 로직을 모듈로 작성하면 SpacetimeDB가 이를 컴파일해 데이터베이스 안에서 실행하고, 연결된 클라이언트와 상태를 동기화합니다. 클라이언트는 데이터 변경 함수인 reducer를 호출하고 테이블을 구독하며, 서버는 폴링 없이 커밋된 변경 사항을 자동으로 전송합니다.
SpacetimeDB은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
SpacetimeDB은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
SpacetimeDB은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. SpacetimeDB의 마지막 커밋은 2026년 10월 22일입니다.
SpacetimeDB은(는) 어디에 사용할 수 있나요?
별도의 API 서버나 pub/sub 계층 없이 협업 웹 앱이나 채팅 서비스를 구축합니다. 연결된 모든 클라이언트가 발생하는 즉시 업데이트를 확인할 수 있는 실시간 대시보드를 만듭니다. 공유되는 실시간 월드 상태를 관리해 MMORPG 같은 멀티플레이어 게임을 지원합니다. 애플리케이션 전체를 단일 언어로 작성하고 하나의 바이너리로 배포합니다.
SpacetimeDB는 어떻게 설치하나요?
README의 공식 설치 스크립트를 실행합니다 계정에 로그인합니다: spacetime login 템플릿으로 프로젝트를 만들고 dev watcher를 시작합니다: spacetime dev --template chat-react-ts
SpacetimeDB은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/clockworklabs/SpacetimeDB

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트