- 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
```