OpenCypher 호환 쿼리와 Raft 기반 일관성을 제공하는 분산형 수평 확장 오픈소스 그래프 데이터베이스입니다.
erikgrinaker/toydb
분산 SQL 시스템의 작동 방식을 보여 주기 위해 Rust로 만든 교육용 분산 SQL 데이터베이스로, Raft 합의, MVCC 트랜잭션, SQL 인터페이스를 제공합니다.
- 스타
- 7,301
- 포크
- 625
- 열린 이슈
- 0
- 마지막 커밋
- 지난달
어떤 프로젝트인가요?
toyDB는 분산 SQL 시스템의 작동 방식을 설명하기 위해 Rust로 처음부터 만든 분산 SQL 데이터베이스입니다. Raft 합의를 사용해 클러스터 전체에 상태를 복제하고, 선형화 가능한 상태 머신 복제를 구현하며, MVCC 기반 스냅샷 격리를 지원하는 ACID 트랜잭션을 제공합니다.
스토리지 계층은 플러그인 방식으로 구성할 수 있으며, BitCask 백엔드와 인메모리 백엔드를 지원합니다. 키/값 저장소 위에는 반복자 기반 쿼리 엔진이 있어 휴리스틱 최적화를 적용하고 시간 이동 읽기를 지원하며, 조인, 집계, 트랜잭션을 지원하는 SQL 인터페이스도 제공합니다. 명령줄 클라이언트인 toysql로 노드에 연결할 수 있고, EXPLAIN으로 쿼리 계획을 확인할 수 있습니다.
이 프로젝트는 성능, 확장성, 가용성보다 단순성과 정확성을 우선하므로 코드를 읽고 이해하기 쉽게 작성했습니다. 테스트는 대부분 Goldenscript 기반 시나리오 테스트이며, 저장소에는 아키텍처 가이드와 워크로드 벤치마크 도구도 포함되어 있습니다.
핵심 기능
- 01클러스터 전체에서 선형화 가능한 복제를 지원하는 Raft 합의
- 02MVCC 스냅샷 격리를 지원하는 ACID 트랜잭션
- 03BitCask 및 인메모리 엔진을 선택할 수 있는 플러그인형 스토리지
- 04조인, 집계, 트랜잭션을 지원하는 SQL
- 05휴리스틱 최적화 후 쿼리 계획을 보여 주는 EXPLAIN 출력
활용 사례
- 분산 SQL 데이터베이스의 내부 구조를 학습
- 읽기 쉬운 Rust 코드베이스를 통해 Raft 합의와 MVCC 트랜잭션 살펴보기
- 로컬 머신에서 소규모 멀티노드 SQL 클러스터를 실험
빠른 시작
- 1
Rust 컴파일러를 설치합니다(Rust 설치 페이지 참고).
- 2
로컬에서 5개 노드 클러스터를 시작합니다.
./cluster/run.sh - 3
명령줄 클라이언트를 빌드하고 실행하여 노드 1에 연결합니다.
cargo run --release --bin toysql
사용 전 알아둘 점
- 성능, 확장성 또는 가용성을 명시적으로 최적화하지 않았습니다.
- fsync와 쓰기 일괄 처리 기능의 부재로 쓰기 성능이 매우 낮습니다.
- 프로덕션 사용이 아닌 교육용 프로젝트로 개발되었습니다.
포함된 컬렉션
토픽
자주 묻는 질문
- toydb은(는) 무엇인가요?
- 분산 SQL 시스템의 작동 방식을 보여 주기 위해 Rust로 만든 교육용 분산 SQL 데이터베이스로, Raft 합의, MVCC 트랜잭션, SQL 인터페이스를 제공합니다. toyDB는 분산 SQL 시스템의 작동 방식을 설명하기 위해 Rust로 처음부터 만든 분산 SQL 데이터베이스입니다. Raft 합의를 사용해 클러스터 전체에 상태를 복제하고, 선형화 가능한 상태 머신 복제를 구현하며, MVCC 기반 스냅샷 격리를 지원하는 ACID 트랜잭션을 제공합니다.
- toydb은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- toydb은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- toydb은(는) 아직 유지보수되고 있나요?
- 6개월 이내 업데이트. toydb의 마지막 커밋은 2026년 10월 2일입니다.
- toydb은(는) 어디에 사용할 수 있나요?
- 분산 SQL 데이터베이스의 내부 구조를 학습 읽기 쉬운 Rust 코드베이스를 통해 Raft 합의와 MVCC 트랜잭션 살펴보기 로컬 머신에서 소규모 멀티노드 SQL 클러스터를 실험
- toydb는 어떻게 설치하나요?
- Rust 컴파일러를 설치합니다(Rust 설치 페이지 참고). 로컬에서 5개 노드 클러스터를 시작합니다.: ./cluster/run.sh 명령줄 클라이언트를 빌드하고 실행하여 노드 1에 연결합니다.: cargo run --release --bin toysql
- toydb은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/erikgrinaker/toydb
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
Raft 합의와 gRPC API를 기반으로 분산 시스템의 핵심 데이터를 저장하는 분산형 고신뢰 키-값 저장소입니다.
강한 일관성을 제공하는 키-값 저장소를 기반으로 하고 PostgreSQL wire protocol과 호환되는 클라우드 네이티브 분산 SQL 데이터베이스입니다.
SQLite 기반의 경량 분산 관계형 데이터베이스로, Raft 합의 알고리즘을 통해 노드 간 데이터를 복제하고 장애에 대응합니다.
네이티브 GraphQL 쿼리 인터페이스와 ACID 트랜잭션을 제공하는 수평 확장형 분산 그래프 데이터베이스입니다.
IoT, 커넥티드 카 및 산업용 IoT 워크로드를 위한 SQL 기반 오픈소스 고성능 시계열 데이터베이스입니다.