Skip to content

SpaceTimeDB

멀티플레이어 게임/앱을 구축하기 위한 DB. 데이터베이스와 서버 기능을 결합한 시스템.

About

  • SpacetimeDB는 데이터베이스와 서버 기능을 결합한 시스템
  • 전통적인 웹 또는 게임 서버를 별도로 두는 대신, 클라이언트가 직접 데이터베이스에 연결하여 애플리케이션 로직을 실행
  • Rust로 작성된 "모듈" 형태의 저장 프로시저를 통해 앱 로직을 데이터베이스에 직접 업로드 가능
  • 단일 Rust 바이너리로 전체 애플리케이션을 배포 가능하며, DevOps, 컨테이너, 서버, 마이크로서비스 등이 불필요함

Features

  • 스마트 컨트랙트와 유사한 개념이지만 블록체인과는 무관함
  • 기존 스마트 컨트랙트 시스템보다 훨씬 빠름
  • 게임 내 모든 요소가 데이터베이스에서 실시간으로 처리되고 클라이언트에 동기화됨
  • 실시간 애플리케이션에 최적화되어 있고, 지연 시간 최소화를 목표로 설계됨
  • 애플리케이션 상태는 메모리에 유지되며, 복구를 위해 WAL(Write-Ahead Log)에 기록됨
  • 관계형 데이터베이스 이면서, 어플리케이션 로직을 직접 저장 가능
    • 'Modules' 라고 부르는 스토어드 프로시져 형태
  • 별도의 서버 없이 클라이언트가 직접 DB와 접속해서 어플리케이션 로직을 DB내부에서 실행
  • 배치나 OLAP 작업대신 '최고의 속도'와 '최소 레이턴시'를 보장하기 위해서 최적화
    • 모든 어플리케이션 상태를 메모리에 저장하는 방식으로 속도를 달성
    • 데이터는 WAL(Write-Ahead-Log) 로
  • MMORPG 인 BitCraft Online 의 실제 백엔드가 하나의 SpacetimeDB 모듈로 실행중. 별도 서버 없음
  • 임베디드 데이터베이스 라이브러리 동작해서 자신의 어플리케이션에 임베드 가능
    • 또는 별도 스탠드얼론으로 직접 실행도 가능 (spacetime CLI 이용)
  • Rust로 된 싱글 바이너리로 맥/리눅스/윈도우 설치 지원
  • "Multiplayer at the speed of light"

See also

Favorite site