GoatDB - Deno, React를 위한 경량 NoDB

2 days ago 2

  • 경량 배포 환경을 위한 실시간 버전 관리 데이터베이스
  • 프로토타이핑, 셀프 호스팅, 싱글 테넌트(Single-Tenant) 앱 및 백엔드 및 DB가 없는 초경량 멀티 테넌트(Multi-Tenant) 환경에 최적화됨
  • 별도 인프라 불필요 → 전체 DB를 클라이언트에서 실행하며, 서버 인덱싱이 필요 없음
  • 오프라인 우선(Offline-First) 구조 → 서버가 다운되더라도 클라이언트에서 계속 작동하며 복구 가능
  • 엣지 네이티브(Edge-Native) → 대부분의 처리를 클라이언트에서 수행하여 서버 부하 최소화
  • 실시간 동기화 지원 → 자동으로 클라이언트와 서버 상태를 동기화
    • 초기화 할때 peers에 복제본 위치를 설정하여 서버 클러스터를 쉽게 설정 가능
    • 동기화 프로토콜을 이용해 서버간 동기화를 지원하며, 여러 서버를 추가해도 코드 변경 없이 확장 가능함
  • React Hooks 사용
    • GoatDB의 React Hooks완전한 상태 관리 솔루션을 제공하며, 동기적(mutable) 상태 수정이 가능
    • 예를 들어, task.set('done', true)와 같은 변경 사항은 즉시 메모리에 반영되며, GoatDB가 자동으로 차이 계산(diffing), 로컬 저장소 커밋, 서버 동기화, 충돌 해결을 백그라운드에서 처리함
  • 보안 모델
    • 각 노드는 공개/개인 키 쌍을 유지하며, 개인 키는 절대 외부로 노출되지 않음
    • 모든 커밋은 디지털 서명되어, 조작된 변경 사항을 자동으로 거부함
    • 사용자 정의 권한 정책을 통해 데이터 접근 제어 가능
  • 충돌 해결 방식
    • 세 방향 병합(Three-Way Merge) : 변경 사항이 충돌할 경우 자동 병합하여 정리
    • Logoot 방식의 연속 ID 할당 : 데이터 내 삽입/삭제 충돌을 방지하는 고유 식별자 시스템 적용

예제 프로젝트

  • Todo → 셀프 호스팅용 최소한의 모던 투두 리스트
  • EdgeChat → 완전한 브라우저 기반 ChatGPT 스타일 인터페이스
  • Ovvio → 2024년부터 GoatDB를 사용 중인 생산성 도구

Read Entire Article