RocksDB is not an
SQL database (although
MyRocks combines RocksDB with
MySQL). Like other
NoSQL and
dbm stores, it has no
relational data model, and it does not support SQL queries. Also, it has no direct support for secondary indexes, however a user may build their own internally using Column Families or externally. Applications use RocksDB as a
library, as it provides no server or
command-line interface.
History
RocksDB was created at
Facebook by Dhruba Borthakur[26][27] in April 2012, as a fork of
LevelDB with the initial stated goal of improving performance for server workloads.[28][29]
Integration
As an embeddable database, RocksDB can be used as a storage engine within a larger
database management system (DBMS). For example,
Rockset uses RocksDB[30] mostly for analytical data processing.
Alternative backend
The following projects have been started to replace or offer alternative storage engines for already-established database systems with RocksDB:
ArangoDB
ArangoDB has added RocksDB to its previous storage engine ("mmfiles").[31] Starting with ArangoDB 3.4, RocksDB will be the default storage engine in ArangoDB.[32]
Cassandra
Cassandra on RocksDB can improve the performance of Apache Cassandra significantly (3-4 times faster in general, 100 times faster in some use-cases).[citation needed] The Instagram team at Facebook developed and open-sourced their code, along with benchmarks of their performance results.[33]
MariaDB
MariaDB can use the MyRocks storage engine (which is forked from RocksDB) since MariaDB 10.2.5 (Alpha status) [34] and stable since MariaDB 10.2.16 in 2018.[35]
MongoDB
The MongoRocks project provides a storage module for
MongoDB where the storage engine is RocksDB.[36][37][38]
A related program is Rocks Strata, a tool written in
Go, which allows managing incremental backups of MongoDB when RocksDB is used as the storage engine.[39]
MySQL
The MyRocks project created a new RocksDB-based storage engine for
MySQL.[40][41] In-depth details about MyRocks were presented at Percona Live 2016.[42]
The UKV[43] project allows users to use RocksDB on par with
LevelDB as the underlying
key-value store. It represents a shared abstraction for
create, read, update and delete (CRUD) operations common to every storage engine. It augments it with structured bindings for several high-level languages, including
Python,
Java, and
Go.
Embedded
The following database systems and applications have chosen to use RocksDB as their embedded storage engine:
Ceph's BlueStore
The
Ceph's BlueStore storage layer uses RocksDB for metadata management in OSD devices.[44]
Apache Flink
Apache Flink uses RocksDB to store checkpoints.[45]
FusionDB
FusionDB[46] uses RocksDB as its storage engine for XML, Key/Value, and JSON.[47]