더이노베이터스

SpacetimeDB

🔧 설치

CLI 도구를 통해 SpacetimeDB를 독립형 데이터베이스 서버로 실행할 수 있습니다.

👉 설치 가이드: https://docs.spacetimedb.com/getting-started/installation

👉 설치 바로 가기: https://docs.spacetimedb.com/getting-started/installation

👉 시작 가이드: https://docs.spacetimedb.com/getting-started/introduction


🚀 SpacetimeDB란?

  • SpacetimeDB는 서버이자 데이터베이스입니다.
  • 데이터베이스 내부에서 애플리케이션 로직을 실행할 수 있는 기능이 내장된 관계형 데이터베이스입니다.
  • 웹/게임 서버 없이도 완전한 애플리케이션을 개발할 수 있습니다.
  • C#, Rust 등 다양한 언어를 지원합니다.
  • 마이크로서비스, Docker, VM, 쿠버네티스 없이 단일 바이너리로 배포할 수 있습니다.

🏗️ SpacetimeDB 아키텍처

  • SpacetimeDB는 블록체인과 무관하며, 스마트 계약과 유사한 구조를 가지고 있습니다.
  • 예시: BitCraft Online의 전체 백엔드를 하나의 SpacetimeDB로 운영

최적화 대상:

  • 초저지연
  • 초고속
  • 실시간 애플리케이션 (게임, 채팅, 협업 도구 등)

기술 요소:

  • 모든 상태는 메모리에 유지
  • 커밋 로그로 복구 가능
  • 자동 상태 미러링 기능 내장

🪞 상태 미러링

  • 클라이언트는 SQL 쿼리로 관심 있는 정보를 지정하고, 실시간 업데이트를 수신
  • 상태는 읽기 전용 미러이며, 변경은 리듀서를 통해서만 가능

🧩 언어 및 SDK 지원

📦 모듈 라이브러리

💻 클라이언트 SDK


🎮 Unity 연동


🔑 주요 개념 정리

✅ 호스트 (Host)

  • SpacetimeDB 서버 실행 환경
  • 자체 실행 또는 SpacetimeDB 클라우드 사용 가능

✅ 데이터베이스

  • 호스트에서 실행되는 애플리케이션
  • 모듈로 구성된 테이블과 리듀서를 포함함

✅ 테이블 예시 (C#)

[SpacetimeDB.Table(Name = "players", Public = true)]
public partial struct Player {
    [SpacetimeDB.PrimaryKey]
    uint playerId;
    string name;
    uint age;
    Identity user;
}

✅ 리듀서 예시 (Rust)

#[spacetimedb::reducer]
pub fn set_player_name(ctx: &spacetimedb::ReducerContext, id: u64, name: String) -> Result<(), String> {
   // 처리 로직
}

👥 클라이언트


🆔 신원 (Identity)

  • OpenID Connect 기반 글로벌 사용자 식별자
  • JWT의 발급자(issuer)와 주체(subject)를 기반으로 생성됨

🔗 연결 ID (ConnectionId)

  • 클라이언트의 각 연결을 고유하게 식별하는 ID

⚡ 에너지 (Energy)

  • SpacetimeDB 호스트에서 데이터 저장 및 처리 비용을 지불하는 단위

❓ 자주 묻는 질문 (FAQ)

Q. SpacetimeDB란?

→ 실시간 게임도 실행할 만큼 빠른 데이터베이스 기반 클라우드 플랫폼입니다.

Q. 어떻게 사용하나요?

→ CLI 설치 → 언어 선택 → 모듈 작성 → WebAssembly로 컴파일 → 클라우드 업로드 → 리듀서 호출 및 상태 구독

Q. 설치 방법은?

→ CLI 설치 후, 클라우드에 애플리케이션 업로드

Q. 새 데이터베이스 만들기?

→ 빠른 시작 가이드 참고: https://docs.spacetimedb.com/getting-started/introduction

Q. Unity 게임 연동은?

→ Unity 튜토리얼 가이드 참고: https://docs.spacetimedb.com/unity/overview

TI Tech Lab 이주석연구원

Source

Avatar

theinnovators

Add comment