
SurrealDB가 13일 Rust로 작성한 오픈소스 영구 저장 엔진 ‘SurrealKV 1.0’을 공개했다. 회사 공식 블로그에 따르면 SurrealKV는 차기 SurrealDB 4에서 RocksDB를 대신해 유일한 영구 저장 엔진으로 쓰일 예정이다. 소스코드는 아파치 2.0 라이선스로 공개됐다.
SurrealKV는 키와 값을 저장하는 임베디드 엔진으로, 애플리케이션 안에 넣어 독립적으로 사용할 수도 있다. 로그 구조 병합 트리(LSM 트리)에 스냅샷 격리 트랜잭션을 결합했다. 여러 쓰기 작업을 모아 로그에 기록하는 커밋 링과 트리 형태의 메모리 저장 구조를 통해 처리 경로의 경합을 줄이는 설계다.
회사는 저장 장치를 동기화한 뒤 쓰기 완료를 알리는 조건에서 단일 키 조회 성능이 RocksDB의 7.95배였다고 밝혔다. 공개된 수치는 SurrealKV가 초당 680만4864건, RocksDB가 85만5851건이다. 측정에는 32코어 AMD Ryzen Threadripper 9970X, 메모리 128GB, 4TB NVMe SSD가 쓰였으며, 데이터는 키 50만 개, 작업 스레드는 48개, 클라이언트는 128개로 구성했다.
이 결과는 회사가 자체 도구 crud-bench로 수행한 단일 장비의 한 차례 실행값이다. SurrealKV에는 기본값보다 큰 메모리 테이블과 큰 값을 별도로 저장하는 설정을 적용했다. 따라서 발표 수치를 모든 작업이나 운영 환경에 적용할 수 있는 성능 차이로 볼 수는 없다. 회사는 비교 도구와 재현 명령도 공개했다.
동기화를 기다리지 않는 조건에서는 쓰기 성능의 우열이 달라졌다. 회사 자료에서 SurrealKV는 RocksDB보다 생성 작업이 1.88배, 수정이 2.22배, 삭제가 2.41배 느렸다. 이 조건의 최대 메모리 사용량도 SurrealKV가 1.79GiB로 RocksDB의 1.02GiB보다 컸다. 저장 엔진을 선택할 때 읽기 처리량뿐 아니라 쓰기 패턴, 내구성 설정, 메모리 사용량을 함께 살펴야 하는 이유다.
기능 측면에서는 선택적으로 과거 시점의 값을 읽거나 값의 변경 이력을 조회할 수 있다. 보관 기간에 따라 이전 버전을 유지하며, 큰 값을 LSM 트리 밖에 저장해 압축 과정에서 반복 기록을 줄이는 방식도 지원한다. 저장 데이터 암호화에는 AES-256-GCM 또는 XChaCha20-Poly1305를 사용할 수 있다.
기존 사용자는 데이터 변환 방식에 주의해야 한다. 공식 릴리스 노트에 따르면 SurrealKV 0.20·0.21 데이터와 SurrealDB가 RocksDB 8~11로 기록한 데이터는 열 때 새 형식으로 변환된다. RocksDB 데이터는 변환 중 기존 엔진에서 열려 있으면 안 된다. 변환은 한 방향으로만 이뤄지며, 내부에 남는 백업 디렉터리도 이전 버전으로 되돌릴 수 있는 복구 지점은 아니다. 되돌릴 가능성이 있으면 변환 전에 데이터 디렉터리 전체를 별도로 복사하라는 안내다.
진단 도구 skv는 데이터 구조 검사, 체크섬 확인, 오프라인 변환을 제공한다. 다만 지속적인 백그라운드 무결성 검사는 1.0에 구현되지 않았다. 브라우저 파일 저장을 위한 OPFS 기반 구성 요소도 포함됐지만, 핵심 저장 트리에 연결되지 않아 브라우저 영구 저장을 완성된 기능으로 사용할 수는 없다.
출처: SurrealDB 공식 블로그 https://surrealdb.com/blog/we-are-replacing-rocksdb-with-surrealkv-1-0
SurrealKV 1.0.0 공식 릴리스 https://github.com/surrealdb/surrealkv/releases/tag/v1.0.0
SurrealKV 공식 저장소 https://github.com/surrealdb/surrealkv
SurrealDB crud-bench 공식 저장소 https://github.com/surrealdb/crud-bench









