프로젝트 소개
sled는 Rust로 작성된 임베디드 데이터베이스로, 저자는 베타 소프트웨어라고 설명합니다. API는 스레드 안전한 BTreeMap<[u8], [u8]>과 유사하므로 기본적인 삽입, 조회, 범위, 제거, 비교-교체(compare-and-swap) 연산이 Rust 개발자에게 친숙하게 느껴집니다.
README에 나열된 주요 기능으로는 여러 키스페이스에 걸쳐 여러 키를 원자적으로 읽고 쓰는 직렬화 가능한 ACID 트랜잭션, 완전히 원자적인 단일 키 연산, 제로카피 읽기, 쓰기 배치, 키 접두사 변경에 대한 구독, 다중 키스페이스, 병합 연산자, 정방향 및 역방향 범위 반복자, 크래시 세이프한 단조 ID 생성기가 있습니다. 선택적 zstd 압축은 기본적으로 비활성화된 빌드 기능 뒤에 제공됩니다.
구현은 락프리 로그 위의 락프리 페이지캐시 위의 락프리 트리로 설명되며, 플래시에 최적화된 로그 구조 저장 설계를 사용합니다. 공유 접두사를 가진 긴 키의 저장 비용을 줄이기 위해 접두사 인코딩 및 접미사 잘라내기 같은 B-트리 기법을 사용합니다. README는 LSM 트리 유사 쓰기 성능과 전통적인 B+ 트리 유사 읽기 성능을 주장하며, 내구성 기본값은 500ms마다 fsync이며 flush_every_ms 또는 수동 flush/flush_async 호출로 구성할 수 있다고 설명합니다.
주목할 만한 주의사항: 트랜잭션은 낙관적이므로 트랜잭션 클로저는 멱등성이 없는 한 외부 상태나 IO를 피해야 합니다. sled는 여러 개의 열린 인스턴스를 지원하지 않으므로 프로세스 수명 동안 열린 상태로 유지해야 합니다. 숫자 키는 올바른 사전식 순서를 위해 빅엔디언으로 저장해야 합니다. 그리고 디스크 형식은 1.0.0 이전에 변경될 예정이므로 수동 마이그레이션이 필요합니다. README는 또한 신뢰성이 최우선 제약 조건일 때는 SQLite, 저장 공간 가격 대비 성능이 중요할 때는 RocksDB, 쓰기가 드문 다중 프로세스 워크로드에는 LMDB가 더 적합하다고 명시합니다. 최소 지원 Rust 버전은 1.62입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.