Harman Patil (Editor)

RocksDB

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer(s)
  
Written in
  
C++

Development status
  
production

Initial release
  
May 2012; 4 years ago (2012-05)

Stable release
  
5.0.1 / January 7, 2017; 2 months ago (2017-01-07)

Operating system
  
Linux, OS X, FreeBSD, Windows

RocksDB is a high performance embedded database for key-value data. It is a fork of LevelDB which was then optimized to exploit many central processing unit (CPU) cores, and make efficient use of fast storage, such as solid-state drives (SSD), for input/output (I/O) bound workloads. It is based on a log-structured merge-tree (LSM tree) data structure. It is written in C++ and provides official application programming interface (API) language bindings for C++, C, and Java; alongside many 3rd-party language bindings. RocksDB is open-source software, released under a BSD 3-clause license.

Contents

RocksDB is used in production systems at various web-scale enterprises including Facebook, Yahoo!, and LinkedIn.

Features

RocksDB, like LevelDB, stores keys and values in arbitrary byte arrays, and data is sorted byte-wise by key or by providing a custom comparator.

RocksDB provides all of the features of LevelDB, plus:

  • Column Families
  • Bloom Filters
  • Transactions
  • Time to Live (TTL) support
  • Universal Compaction
  • Merge Operators
  • Statistics Collection
  • Geo-spatial
  • 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 does not provide a server or command-line interface.

    History

    RocksDB was begun at Facebook by Dhruba Borthakur in April 2012, as a fork of LevelDB with the initial stated goal of improving performance for server workloads.

    Integration

    As an embeddable database, RocksDB can be used as a storage engine within a larger database management system (DBMS). For example, CockroachDB uses RocksDB as its storage engine.

    Alternative Backend

    The following projects have been started to replace or offer an alternative storage engines for already-established database systems with RocksDB:

    MongoDB

    The MongoRocks project provides a storage module for MongoDB where the storage engine is RocksDB.

    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.

    MySQL

    The MyRocks project creates a new RocksDB based storage engine for MySQL. In-depth details about MyRocks were presented at Percona Live 2016.

    TiDB

    The TiDB NewSQL distributed database which is marketed as a compatible alternative to MySQL, has a number of pluggable backends including RocksDB.

    Embedded

    The following database systems have chosen to use RocksDB as their embedded storage engine:

    Dgraph

    The Dgraph project uses RocksDB as the storage engine for the Dgraph NoSQLGraph Database.

    SSDB

    The ssdb-rocks project uses RocksDB as the storage engine for the SSDB NoSQL Database.

    3rd-party Language Bindings

    3rd-party programming language bindings available for RocksDB, include:

  • C# -
    https://github.com/warrenfalk/rocksdb-sharp

    rocksdb-sharp

    .net bindings for the rocksdb by facebook

    Last updated: 2024-04-29T09:24:36Z

  • Go -
    https://github.com/tecbot/gorocksdb

    gorocksdb

    gorocksdb is a Go wrapper for RocksDB

    Last updated: 2024-03-18T23:21:58Z

  • Haskell - https://hackage.haskell.org/package/rocksdb-haskell
  • Node.js - https://npmjs.org/package/rocksdb
  • Erlang -
    https://github.com/leo-project/erocksdb

    erocksdb

    Erlang bindings to RocksDB datastore

    Last updated: 2019-06-24T11:44:44Z

  • Objective-C, and Swift -
    https://github.com/iabudiab/ObjectiveRocks

    ObjectiveRocks

    An Objective-C wrapper for RocksDB - A Persistent Key-Value Store for Flash and RAM Storage.

    Last updated: 2020-02-02T20:20:36Z

  • Perl - https://metacpan.org/pod/RocksDB
  • Python -
    https://github.com/stephan-hof/pyrocksdb

    pyrocksdb

    Python bindings for RocksDB

    Last updated: 2021-08-16T20:57:53Z

  • PHP -
    https://github.com/Photonios/rocksdb-php

    rocksdb-php

    A PHP extension for Facebook's RocksDB

    Last updated: 2018-08-18T07:59:44Z

  • Ruby - http://rubygems.org/gems/rocksdb-ruby
  • Rust -
  • References

    RocksDB Wikipedia


    Similar Topics