Crate electrs_rocksdb

source ·
Expand description

Rust wrapper for RocksDB.

Examples

use rocksdb::{DB, Options};
// NB: db is automatically closed at end of lifetime
let path = "_path_for_rocksdb_storage";
{
   let db = DB::open_default(path).unwrap();
   db.put(b"my key", b"my value").unwrap();
   match db.get(b"my key") {
       Ok(Some(value)) => println!("retrieved value {}", String::from_utf8(value).unwrap()),
       Ok(None) => println!("value not found"),
       Err(e) => println!("operational problem encountered: {}", e),
   }
   db.delete(b"my key").unwrap();
}
let _ = DB::destroy(&Options::default(), path);

Opening a database and a single column family with custom options:

use rocksdb::{DB, ColumnFamilyDescriptor, Options};

let path = "_path_for_rocksdb_storage_with_cfs";
let mut cf_opts = Options::default();
cf_opts.set_max_write_buffer_number(16);
let cf = ColumnFamilyDescriptor::new("cf1", cf_opts);

let mut db_opts = Options::default();
db_opts.create_missing_column_families(true);
db_opts.create_if_missing(true);
{
    let db = DB::open_cf_descriptors(&db_opts, path, vec![cf]).unwrap();
}
let _ = DB::destroy(&db_opts, path);

Re-exports

Modules

Structs

  • For configuring block-based file storage.
  • A specialized opaque type used to represent a column family by the MultiThreaded mode. Clone (and Copy) is derived to behave like &ColumnFamily (this is used for single-threaded mode). Clone/Copy is safe because this lifetime is bound to DB like iterators/snapshots. On top of it, this is as cheap and small as &ColumnFamily because this only has a single pointer-wide field.
  • An opaque type used to represent a column family. Returned from some functions, and used in others
  • A descriptor for a RocksDB column family.
  • Configuration of cuckoo-based storage.
  • A helper type to implement some common methods for DBWithThreadMode and OptimisticTransactionDB.
  • An iterator over a database or column family, with specifiable ranges and direction.
  • Represents a path where sst files can be put into
  • Wrapper around RocksDB PinnableSlice struct.
  • An iterator over a database or column family, with specifiable ranges and direction.
  • Iterates the batches of writes since a given sequence number.
  • An Env is an interface used by the rocksdb implementation to access operating system functionality like the filesystem etc. Callers may wish to provide a custom Env object when opening a database to get fine gain control; e.g., to rate limit file system operations.
  • A simple wrapper round a string, used for errors reported from ffi calls.
  • Optionally wait for the memtable flush to be performed.
  • For configuring external files ingestion.
  • The metadata that describes a SST file
  • Actual marker type for the marker trait ThreadMode, which holds a collection of column families wrapped in a RwLock to be mutated concurrently. The other mode is SingleThreaded.
  • Database-wide options around performance and behavior.
  • Used with DBOptions::set_plain_table_factory. See official wiki for more information.
  • Representation of a range of keys starting with given prefix.
  • Actual marker type for the marker trait ThreadMode, which holds a collection of column families without synchronization primitive, providing no overhead for the single-threaded column family alternations. The other mode is MultiThreaded.
  • A SliceTransform is a generic pluggable way of transforming one string to another. Its primary use-case is in configuring rocksdb to store prefix blooms by setting prefix_extractor in ColumnFamilyOptions.
  • A consistent view of the database at the point of creation.
  • SstFileWriter is used to create sst files that can be added to database later All keys in files generated by SstFileWriter will have sequence number = 0.
  • RocksDB Transaction.
  • RocksDB TransactionDB.
  • An atomic batch of write operations.
  • Optionally disable WAL or sync for this write.

Enums

Constants

Traits

Type Aliases