ankur-anand/unisondb
A streaming multimodal database for Edge AI, and Edge Computing.
UnisonDB – 엣지 AI를 위한 로그 기반 실시간 데이터베이스
무엇인가요 – UnisonDB는 Go로 작성된 오픈소스 다중 모델 데이터베이스로, 쓰기 전용 로그(WAL)를 주 데이터 소스로 간주합니다. 모든 쓰기 작업은 B+ 트리 저장소에 영구 저장되며 동시에 gRPC 또는 객체 스토어 기반 복제를 통해 무제한의 복제본으로 즉시 스트리밍됩니다. 이 설계는 데이터를 계산과 가까이 유지하고, 수천 개의 노드에 밀리초 이내로 전파해야 하는 엣지 우선 워크로드를 대상으로 합니다.
핵심 아이디어
- 로그 기반: WAL(구현은 WALFS 서브시스템)은 메모리 매핑되고 세그먼트화되어 실시간으로 읽을 수 있습니다. 복제본은 로그를 직접 따라가므로 저장된 데이터와 복제 스트림이 동일합니다.
- Raft 기반 쓰기: 선택적 쿼럼 쓰기로 주 노드에 강한 일관성과 내구성을 제공합니다.
- Blob 팬아웃: WAL 세그먼트를 S3/MinIO/GCS/Azure에 한 번 업로드하면, 무제한의 엣지 리더가 이를 풀링할 수 있어 각 복제본에 지속적인 gRPC 연결이 필요하지 않습니다.
- 다중 모델 API: 키-값, 와이드 컬럼, 대용량 객체(LOB) 접근 패턴이 단일 HTTP/JSON 인터페이스를 통해 모두 지원됩니다.
- Zero-mq 알림: 사이드카 프로세스가 반응형 애플리케이션을 위해 밀리초 미만의 지연으로 변경 이벤트를 전송합니다.
AI/엣지 컴퓨팅에서의 중요성
- 엣지에서의 AI 추론 파이프라인은 모델 버전, 특징 캐시, 센서 읽기값과 같은 상태를 필요로 하며, 이는 쿼리 가능하고 즉시 다른 장치로 브로드캐스트되어야 합니다.
- 전통적인 스택은 데이터베이스 + 메시지 브로커(Kafka, Pub/Sub, CDC)를 결합하여 운영 복잡성과 지연을 증가시킵니다. UnisonDB는 이 두 계층을 하나의 엔진으로 통합합니다.
- 복제 모델은 10,000개 이상의 노드를 수초 내에 확장 가능하여 IoT 장치 펌 fleet, 자율 로봇, 분산 추론 서비스에 적합합니다.
주요 기능 (리포지토리에 기재됨)
| 기능 | 제공하는 기능 |
|---|---|
| 고가용성 쓰기 | 주 노드에서 Raft 쿼럼, ISR 스타일 복제 |
| 스트리밍 복제 | WAL을 gRPC 또는 객체 스토어 기반 팬아웃 |
| Blob 팬아웃 | S3/MinIO 등에 불변 WAL 세그먼트 게시; 무제한 리더 |
| 다중 모델 스토리지 | 키-값, 와이드 컬럼, 대용량 객체 |
| 실시간 알림 | ZeroMQ 사이드카, 밀리초 미만 지연 |
| 내구성 있는 B+ 트리 엔진 | BoltDB 또는 LMDB 백엔드를 통한 ACID 준수 저장 |
| 네임스페이스 격리 | 논리적 네임스페이스를 통한 멀티테넌트 지원 |
성능 요약 (README에서)
- 처리량: Apple M2 Pro에서 1KB 값에 대해 초당 60k–80k
SET작업을 수행하며, 10,000개 이상의 노드로 전파. - 지연: 밀리초 미만의 변경 알림; 두 홉 토폴로지에서 복제 지연은 수백 밀리초 수준.
- 벤치마크: Redis 호환 벤치마크에서
GET및SET작업 모두 BadgerDB, BoltDB, LMDB와 경쟁 가능.
빠른 시작
git clone https://github.com/ankur-anand/unisondb && cd unisondb
go build -o unisondb ./cmd/unisondb
./unisondb server --config config.toml # 주 서버 시작
curl -X PUT http://localhost:4000/api/v1/default/kv/mykey \
-H "Content-Type: application/json" \
-d '{"value":"bXl2YWx1ZQ=="}'
문서 및 생태계
- 시작 가이드, 구성 참조, 아키텍처 개요, HTTP API 문서, 백업/복원, 배포 토폴로지 등은 모두
unisondb.io에서 호스팅됩니다. - 플러그인 가능한 스토리지 백엔드: BoltDB (단일 파일) 또는 LMDB (메모리 매핑)를 B+ 트리 계층에 사용 가능.
- MinIO를 통한 예제 복제 (
cmd/examples/blobstore-minio).
상태 – 알파 단계; 활성 CI(고 테스트, 커버리지), GitHub 위키에 오픈 로드맵 존재.
누가 사용할 수 있나요
- 공유되고 일관된 상태가 필요한 엣지 장치에 AI 추론 모델을 배포하는 팀.
- 별도의 메시지 브로커 없이 내구성 있는 저장소와 실시간 이벤트 스트림이 필요한 애플리케이션.
- 분산 센서 네트워크, 로봇 펌, 또는 상태 변경의 저지연 팬아웃이 중요한 모든 시스템.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트