Trait kvdb::KeyValueDB[][src]

pub trait KeyValueDB: Sync + Send + MallocSizeOf {
    fn get(&self, col: u32, key: &[u8]) -> Result<Option<DBValue>>;
fn get_by_prefix(&self, col: u32, prefix: &[u8]) -> Option<Box<[u8]>>;
fn write(&self, transaction: DBTransaction) -> Result<()>;
fn iter<'a>(
        &'a self,
        col: u32
    ) -> Box<dyn Iterator<Item = (Box<[u8]>, Box<[u8]>)> + 'a>;
fn iter_with_prefix<'a>(
        &'a self,
        col: u32,
        prefix: &'a [u8]
    ) -> Box<dyn Iterator<Item = (Box<[u8]>, Box<[u8]>)> + 'a>;
fn restore(&self, new_db: &str) -> Result<()>; fn transaction(&self) -> DBTransaction { ... }
fn io_stats(&self, _kind: IoStatsKind) -> IoStats { ... } }

Generic key-value database.

The KeyValueDB deals with “column families”, which can be thought of as distinct stores within a database. Keys written in one column family will not be accessible from any other. The number of column families must be specified at initialization, with a differing interface for each database.

The API laid out here, along with the Sync bound implies interior synchronization for implementation.

Required methods

fn get(&self, col: u32, key: &[u8]) -> Result<Option<DBValue>>[src]

Get a value by key.

fn get_by_prefix(&self, col: u32, prefix: &[u8]) -> Option<Box<[u8]>>[src]

Get the first value matching the given prefix.

fn write(&self, transaction: DBTransaction) -> Result<()>[src]

Write a transaction of changes to the backing store.

fn iter<'a>(
    &'a self,
    col: u32
) -> Box<dyn Iterator<Item = (Box<[u8]>, Box<[u8]>)> + 'a>
[src]

Iterate over the data for a given column.

fn iter_with_prefix<'a>(
    &'a self,
    col: u32,
    prefix: &'a [u8]
) -> Box<dyn Iterator<Item = (Box<[u8]>, Box<[u8]>)> + 'a>
[src]

Iterate over the data for a given column, returning all key/value pairs where the key starts with the given prefix.

fn restore(&self, new_db: &str) -> Result<()>[src]

Attempt to replace this database with a new one located at the given path.

Loading content...

Provided methods

fn transaction(&self) -> DBTransaction[src]

Helper to create a new transaction.

fn io_stats(&self, _kind: IoStatsKind) -> IoStats[src]

Query statistics.

Not all kvdb implementations are able or expected to implement this, so by default, empty statistics is returned. Also, not all kvdb implementation can return every statistic or configured to do so (some statistics gathering may impede the performance and might be off by default).

Loading content...

Implementors

Loading content...