프로젝트 소개
LevelDB는 Google에서 Sanjay Ghemawat와 Jeff Dean이 개발한 임베디드 키-값 저장 라이브러리입니다. 문자열 키에서 문자열 값으로의 정렬된 매핑을 제공하며, 별도 서비스로 실행되는 대신 애플리케이션에 직접 링크되도록 설계되었습니다.
README에 설명된 주요 기능:
- 키와 값은 임의의 바이트 배열이며, 데이터는 키 기준으로 정렬되어 저장됩니다.
- 호출자는 기본 정렬 순서를 재정의하기 위해 사용자 정의 비교 함수를 제공할 수 있습니다.
- 핵심 연산은 Put(key, value), Get(key), Delete(key)입니다.
- 여러 변경 사항을 하나의 원자적 배치로 적용할 수 있습니다.
- 일관된 데이터 뷰를 위해 일시적인 스냅샷을 생성할 수 있습니다.
- 데이터에 대한 순방향 및 역방향 반복이 지원됩니다.
- 데이터는 Snappy로 자동 압축되며, Zstd도 지원됩니다.
- 파일 시스템 연산과 같은 외부 활동은 가상 인터페이스를 통해 전달되어 OS 상호작용을 사용자화할 수 있습니다.
프로젝트가 명시한 중요한 제한 사항: SQL 데이터베이스가 아니며, 관계형 모델, SQL 쿼리 또는 인덱스 지원이 없습니다. 한 번에 하나의 프로세스(멀티스레드일 수 있음)만 데이터베이스에 접근할 수 있습니다. 내장 클라이언트-서버 지원이 없으므로 이를 필요로 하는 애플리케이션은 라이브러리 주위에 자체 서버를 구현해야 합니다.
저장소는 매우 제한적인 유지보수 상태입니다. 관리자들은 데이터 손실이나 메모리 손상 같은 중대한 버그를 수정하는 패치와 내부적으로 지원되는 LevelDB 클라이언트가 절대적으로 필요로 하는 변경 사항(주로 언어, 표준 라이브러리 또는 OS 업데이트로 인한 깨짐 수정)만 검토하겠다고 밝혔습니다. 기여는 테스트된 플랫폼(POSIX의 Linux 및 macOS, 또는 Windows)을 대상으로 하고, 안정적인 API를 유지하며, 테스트를 포함하고, Google C++ 스타일 가이드를 따라야 합니다. 빌드 구성 변경은 수락될 가능성이 낮습니다. 풀 리퀘스트는 Google 기여자 라이선스 계약에 서명하고 main에 스쿼시/리베이스해야 합니다.
빌드는 기본적으로 CMake를 사용합니다. POSIX에서 일반적인 빠른 시작은 빌드 디렉터리를 만들고, Release 빌드 유형으로 cmake를 실행한 다음 빌드하는 것입니다. Windows에서는 CMake가 Visual Studio 2017 프로젝트/솔루션 파일을 생성할 수 있으며 64비트 대상 옵션이 있고, 솔루션은 명령줄 또는 Visual Studio 내에서 빌드할 수 있습니다.
README에는 포함된 db_bench 프로그램을 사용한 성능 보고서가 있으며, 16바이트 키와 100바이트 값을 가진 100만 개 항목의 데이터베이스를 사용합니다. 쓰기 벤치마크(fillseq, fillsync, fillrandom, overwrite)와 읽기 벤치마크(readrandom, readseq, readreverse)를 보고하며, 결과는 노이즈가 많고 백그라운드 압축이 읽기 성능을 향상시킨다고 언급합니다. 공개 인터페이스는 include/leveldb/*.h에 있으며, db.h가 주요 진입점이고, options.h는 데이터베이스 및 연산별 동작, comparator.h는 사용자 정의 정렬, iterator.h는 반복, write_batch.h는 원자적 업데이트, slice.h와 status.h는 헬퍼, env.h는 OS 추상화, table.h/table_builder.h는 대부분의 클라이언트가 직접 사용하지 않는 하위 수준 모듈입니다. 문서는 소스 트리의 doc/ 아래에 포함되어 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.