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으로 설치가 잘되지 않았다.
가이드 자체는 거의 유사하므로 차이점만 비교하면서 둘 다 참고하면 될 거 같다.