RocksDB is a storage engine with key/value interface, where keys and values are arbitrary byte streams. It is a C++ library. It was developed at Facebook based on LevelDB and provides backwards-compatible support for LevelDB APIs.
RocksDB supports various storage hardware, with fast flash as the initial focus. It uses a Log Structured Database Engine for storage, is written entirely in C++, and has a Java wrapper called RocksJava. See RocksJava Basics.
RocksDB can adapt to a variety of production environments, including pure memory, Flash, hard disks or remote storage. Where RocksDB cannot automatically adapt, highly flexible configuration settings are provided to allow users to tune it for them. It supports various compression algorithms and good tools for production support and debugging.
- Designed for application servers wanting to store up to a few terabytes of data on local or remote storage systems.
- Optimized for storing small to medium size key-values on fast storage — flash devices or in-memory
- It works well on processors with many cores
RocksDB introduces dozens of new major features. See the list of features not in LevelDB.
For a complete Table of Contents, see the sidebar to the right. Most readers will want to start with the Overview and the Basic Operations section of the Developer’s Guide. Get your initial options set-up following Setup Options and Basic Tuning. Also check RocksDB FAQ. There is also a RocksDB Tuning Guide for advanced RocksDB users.
RocksDB releases are done in github. For Java users, Maven Artifacts are also updated. See RocksDB Release Methodology.
You are welcome to send pull requests to contribute to RocksDB code base! Check RocksDB-Contribution-Guide for guideline.
Follow RocksDB Troubleshooting Guide for the guidelines.
- Check out our blog at rocksdb.org/blog