728x90
반응형

개요
RocksDB는 Facebook에서 LevelDB를 기반으로 개발한 고성능 임베디드(embedded) 키-값(key-value) 저장 엔진입니다. 디스크 기반의 LSM(Log-Structured Merge) 트리 구조를 사용하여 높은 쓰기 성능과 낮은 지연(latency)을 보장하며, 대규모 스토리지 시스템과 성능 민감한 애플리케이션에 최적화되어 있습니다.
1. 개념 및 정의
| 항목 | 설명 |
| 정의 | LSM 트리 기반의 고성능 키-값 저장 엔진 |
| 목적 | 쓰기 집약적인 워크로드의 저장 효율성 극대화 |
| 필요성 | 대용량 데이터를 빠르고 안정적으로 처리하는 엔진 필요 |
RocksDB는 로컬 스토리지에서 높은 IOPS를 제공하며 다양한 NoSQL 시스템의 백엔드로 채택되고 있습니다.
2. 특징
| 특징 | 설명 | 비교 |
| LSM 기반 구조 | 쓰기 버퍼 → SST 파일로 병합 | B-Tree 기반보다 쓰기 성능 우수 |
| Column Family 지원 | 논리적 데이터 구분 가능 | 관계형 DB의 테이블과 유사 |
| 임베디드 사용 | 서버 없이 라이브러리 형태로 삽입 | RocksDB vs Redis: 분산 여부 차이 |
특히 SSD에 최적화되어 있어 고성능 하드웨어에서 효율적
3. 구성 요소
| 구성 요소 | 설명 | 예시 |
| MemTable | 메모리상의 쓰기 버퍼 | 쓰기 시 우선 저장되는 영역 |
| SSTable | 디스크 상의 정렬된 불변 테이블 파일 | Level 0~n 으로 계층화 저장 |
| WAL (Write-Ahead Log) | 장애 복구용 로그 | MemTable flush 전 데이터 기록 |
쓰기: WAL → MemTable → Flush → SSTable 순으로 처리됨
4. 기술 요소
| 기술 | 설명 | 사용 예 |
| Compaction | SST 파일 병합 및 정리 | 디스크 공간 재사용 및 검색 성능 향상 |
| Bloom Filter | 키 존재 여부 빠르게 확인 | false positive 기반 성능 최적화 |
| Compression | LZ4, ZSTD 등으로 저장 공간 절약 | 저장 효율 및 IO 최적화 |
RocksDB는 세밀한 튜닝이 가능한 옵션들을 풍부하게 제공함
5. 장점 및 이점
| 장점 | 설명 | 효과 |
| 고성능 쓰기 처리 | LSM 구조 및 WAL 기반 빠른 쓰기 | 대규모 로그 처리에 적합 |
| 낮은 지연 시간 | 임베디드 구조로 IO latency 감소 | 실시간 애플리케이션 대응 |
| 유연한 구성 | 옵션 기반 최적화 가능 | 다양한 워크로드 대응 가능 |
페타바이트(PB) 규모의 데이터 처리에도 활용 가능
6. 주요 활용 사례 및 고려사항
| 사례 | 설명 | 참고사항 |
| Meta(Facebook) | 메시지 저장 및 피드 시스템에서 사용 | 복잡한 읽기/쓰기 병행 최적화 |
| Apache Kafka Streams | 상태 저장소로 사용 | RocksDB + changelog 구조 |
| TiKV (PingCAP) | 분산 트랜잭션 Key-Value 저장소 | 분산 환경에서 높은 성능 유지 |
Compaction 설정, 파일 핸들 수 제한 등 성능 튜닝 필요
7. 결론
RocksDB는 고성능이 요구되는 시스템에서 필수적인 저장 엔진으로, 쓰기 집약형 워크로드와 대용량 데이터 환경에서 강력한 성능을 발휘합니다. 다양한 시스템에 임베딩할 수 있어 NoSQL, 스트리밍, 블록체인 등 폭넓은 분야에서 활용되고 있으며, 커스터마이징 가능한 아키텍처로 확장성과 효율성을 동시에 갖추고 있습니다.
728x90
반응형
'Topic' 카테고리의 다른 글
| Protobuf(Protocol Buffers) (0) | 2026.01.28 |
|---|---|
| Apache Avro (0) | 2026.01.28 |
| CRUSH(Controlled Replication Under Scalable Hashing) (0) | 2026.01.27 |
| EPaxos(Egalitarian Paxos) (0) | 2026.01.26 |
| Tail-based Sampling (0) | 2026.01.26 |