- rel:: [[Databases]] [[kvstore]] [[lsm trees]] ## Reference - [docs](https://github.com/facebook/rocksdb/wiki) - [How RocksDB Works](https://artem.krylysov.com/blog/2023/04/19/how-rocksdb-works/) by [[Artem Krylysov]] ## Tuning - [Setup Options and Basic Tuning](https://github.com/facebook/rocksdb/wiki/Setup-Options-and-Basic-Tuning) - [RocksDB Tuning Guide](https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide) - use [jemalloc](http://jemalloc.net/), memory usage - for GNU Make, make sure jemalloc is installed - for cmake set `WITH_JEMALLOC=1` - [RocksDB Secondary Cache](x-devonthink-item://FC33C30C-A2A5-43BC-B957-457064B4AAC0) - [[Ribbon Filters#RocksDB]] ## Use Cases - [[RocksDB _Blob Range Cache_.pdf]] - [[Improving Point-Lookup Using Data Block Hash Index]] - [BlobDB for storing large objects](x-devonthink-item://599862C8-5CCC-41DC-B89E-AAF122FAD122) ## Building ### [[MacOS]] ```bash brew install lz4 zstd snappy ``` ### [[Debian]] [[Linux]] ```bash apt install build-essential libsnappy-dev libzstd1-dev liblz4-dev ``` ### Common ```bash git clone git@github.com:facebook/rocksdb.git cd rocksdb # depending on your version of clang and jemalloc, you'll get some fun warnings DISABLE_WARNING_AS_ERROR=1 make -j4 shared_lib && make install-shared ```