프로젝트 소개

TiKV은 Rust로 작성된 오픈소스 분산 트랜잭션 키-값 데이터베이스입니다. PingCAP이 MySQL 프로토콜과 호환되는 분산 HTAP 데이터베이스인 TiDB의 스토리지 엔진으로 개발했지만, 독립적으로도 운영할 수 있습니다. 이 시스템은 Raft 합의 알고리즘을 기반으로 하며, 합의 상태는 RocksDB에 저장되어 복제본 간 데이터 일관성을 보장합니다. 아키텍처는 Google의 BigTable, Spanner, Percolator 시스템에서 영감을 받았습니다. TiKV는 Cloud Native Computing Foundation(CNCF)의 졸업 프로젝트입니다. 주요 기능은 다음과 같습니다: - **ACID를 준수하는 분산 트랜잭션**: 외부 일관성 읽기 및 쓰기, 스냅샷 격리, 잠금 의미론(`SELECT ... FOR UPDATE`)을 지원합니다. - **수평적 확장성**: Placement Driver(PD)가 관리하는 자동 샤딩을 통해 100TB 이상의 데이터로 확장할 수 있습니다. - **지리적 복제**: Raft 그룹과 PD를 활용하여 리전 간 데이터 분산을 지원합니다. - **Coprocessor 프레임워크**: HBase와 유사한 분산 컴퓨팅을 제공합니다. - **자동 데이터 마이그레이션** 및 클러스터 관리자 역할을 하는 PD를 통한 로드 밸런싱. 아키텍처는 세 가지 주요 구성 요소로 이루어집니다: 클러스터 조정 및 스케줄링을 담당하는 Placement Driver(PD), 각 노드의 RocksDB 인스턴스에 데이터를 저장하는 TiKV 노드, 그리고 데이터 이동의 기본 단위로서 Raft 그룹 내 여러 노드에 복제되는 Region입니다. 클라이언트 드라이버는 Go, Java, Rust, C에서 사용할 수 있습니다. TiKV는 바이너리, Docker Compose(PD 3개 + TiKV 노드 3개), 또는 프로덕션 유사 클러스터를 위한 TiUP를 통해 배포할 수 있습니다. 이 프로젝트는 Apache 2.0 라이선스로 제공됩니다.