Trait kvdb::KeyValueDB
source · 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 { ... }
fn has_key(&self, col: u32, key: &[u8]) -> Result<bool> { ... }
fn has_prefix(&self, col: u32, prefix: &[u8]) -> bool { ... }
}
Expand description
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§
sourcefn get_by_prefix(&self, col: u32, prefix: &[u8]) -> Option<Box<[u8]>>
fn get_by_prefix(&self, col: u32, prefix: &[u8]) -> Option<Box<[u8]>>
Get the first value matching the given prefix.
sourcefn write(&self, transaction: DBTransaction) -> Result<()>
fn write(&self, transaction: DBTransaction) -> Result<()>
Write a transaction of changes to the backing store.
sourcefn iter<'a>(
&'a self,
col: u32
) -> Box<dyn Iterator<Item = (Box<[u8]>, Box<[u8]>)> + 'a>
fn iter<'a>(
&'a self,
col: u32
) -> Box<dyn Iterator<Item = (Box<[u8]>, Box<[u8]>)> + 'a>
Iterate over the data for a given column.
Provided Methods§
sourcefn transaction(&self) -> DBTransaction
fn transaction(&self) -> DBTransaction
Helper to create a new transaction.
sourcefn io_stats(&self, _kind: IoStatsKind) -> IoStats
fn io_stats(&self, _kind: IoStatsKind) -> IoStats
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).
sourcefn has_key(&self, col: u32, key: &[u8]) -> Result<bool>
fn has_key(&self, col: u32, key: &[u8]) -> Result<bool>
Check for the existence of a value by key.
sourcefn has_prefix(&self, col: u32, prefix: &[u8]) -> bool
fn has_prefix(&self, col: u32, prefix: &[u8]) -> bool
Check for the existence of a value by prefix.