Struct kvdb_rocksdb::Database

source ·
pub struct Database { /* private fields */ }
Expand description

Key-Value database.

Implementations§

source§

impl Database

source

pub fn open<P: AsRef<Path>>( config: &DatabaseConfig, path: P ) -> Result<Database>

Open database file.

Safety

The number of config.columns must not be zero.

source

pub fn transaction(&self) -> DBTransaction

Helper to create new transaction for this database.

source

pub fn write(&self, tr: DBTransaction) -> Result<()>

Commit transaction to database.

source

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

Get value by key.

source

pub fn get_by_prefix(&self, col: u32, prefix: &[u8]) -> Result<Option<DBValue>>

Get value by partial key. Prefix size should match configured prefix size.

source

pub fn iter<'a>( &'a self, col: u32 ) -> impl Iterator<Item = Result<DBKeyValue>> + 'a

Iterator over the data in the given database column index. Will hold a lock until the iterator is dropped preventing the database from being closed.

source

pub fn num_columns(&self) -> u32

The number of column families in the db.

source

pub fn num_keys(&self, col: u32) -> Result<u64>

The number of keys in a column (estimated).

source

pub fn remove_last_column(&mut self) -> Result<()>

Remove the last column family in the database. The deletion is definitive.

source

pub fn add_column(&mut self) -> Result<()>

Add a new column family to the DB.

source

pub fn get_statistics(&self) -> HashMap<String, RocksDbStatsValue>

Get RocksDB statistics.

source

pub fn try_catch_up_with_primary(&self) -> Result<()>

Try to catch up a secondary instance with the primary by reading as much from the logs as possible.

Guaranteed to have changes up to the the time that try_catch_up_with_primary is called if it finishes succesfully.

Blocks until the MANIFEST file and any state changes in the corresponding Write-Ahead-Logs are applied to the secondary instance. If the manifest files are very large this method could take a long time.

If Write-Ahead-Logs have been purged by the primary instance before the secondary is able to open them, the secondary will not be caught up until this function is called again and new Write-Ahead-Logs are identified.

If called while the primary is writing, the catch-up may fail.

If the secondary is unable to catch up because of missing logs, this method fails silently and no error is returned.

Calling this as primary will return an error.

Trait Implementations§

source§

impl KeyValueDB for Database

source§

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

Get a value by key.
source§

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

Get the first value matching the given prefix.
source§

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

Write a transaction of changes to the backing store.
source§

fn iter<'a>( &'a self, col: u32 ) -> Box<dyn Iterator<Item = Result<DBKeyValue>> + 'a>

Iterate over the data for a given column.
source§

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

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

fn io_stats(&self, kind: IoStatsKind) -> IoStats

Query statistics. Read more
source§

fn transaction(&self) -> DBTransaction

Helper to create a new transaction.
source§

fn has_key(&self, col: u32, key: &[u8]) -> Result<bool, Error>

Check for the existence of a value by key.
source§

fn has_prefix(&self, col: u32, prefix: &[u8]) -> Result<bool, Error>

Check for the existence of a value by prefix.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.