본문 바로가기

개발

RocksDB?

 

 

 

facebook/rocksdb

A library that provides an embeddable, persistent key-value store for fast storage. - facebook/rocksdb

github.com

RocksDB를 Wikipedia에서 찾아보면 첫 줄에, 'RocksDB는 key-value 데이터를 위한 고성능 임베디드 데이터베이스이다.' 라고 되어있다.

 

RocksDB는 Google에서 개발한 LevelDB를 fork하여 Facebook에서 개발한 오픈소스 프로젝트이다.

 

크게 개선된 점은,

 

  • CPU 멀티 코어의 활용
  • (SSD 같은) 빠른 스토리지의 효율적인 사용

정도로 볼 수 있을 거 같다.

 

다음은 RocksDB Github에 정리되어 있는 LevelDB에는 없지만 RocksDB에는 있는 기능들을 볼 수 있다.

 

https://github.com/facebook/rocksdb/wiki/Features-Not-in-LevelDB

 

기본적으로 전신인 LevelDB를 따라서 C++로 개발되었지만, 많은 써드파티 언어 바인딩을 지원한다.

 

현재, facebook, yahoo, linkedin과 같은 기업에서 사용중이며 특히 batch로 읽고, 쓰는 작업에 유리하기 때문에 블록체인 진영에서도 사용중인 것으로 보인다.

 

지원하는 언어 목록은 다음에서 확인할 수 있다.

 

https://en.wikipedia.org/wiki/RocksDB#Third-party_language_bindings

 

특히, 이번에 프로젝트에서 사용하려고 하는 언어는 Python이기 때문에, Python binding에 대해 링크를 남긴다.

 

 

https://pyrocksdb.readthedocs.io/en/v0.4/index.html

 

https://python-rocksdb.readthedocs.io/en/latest/index.html

 

두 링크의 차이는 아직 모르겠다.

 

하나는 pip으로 설치할 수 있는 guide를 제공하고 있는데 나의 경우에는 뭔가 세팅이 잘못 되었는지 pip으로 설치가 잘되지 않았다.

 

가이드 자체는 거의 유사하므로 차이점만 비교하면서 둘 다 참고하면 될 거 같다.