Struct fdb::database::FdbDatabase
source · pub struct FdbDatabase { /* private fields */ }
Expand description
A mutable, lexicographically ordered mapping from binary keys to binary values.
FdbTransaction
s are used to manipulate data within a single
FdbDatabase
- multiple concurrent FdbTransaction
s on a
FdbDatabase
enforce ACID properties.
The simplest correct programs using FDB will make use of the
run
and read
methods. run
will call commit
after
the user code has been executed.
A handle to FDB database. All reads and writes to the database are transactional.
A FdbDatabase
can be created using open_database
function.
Implementations§
source§impl FdbDatabase
impl FdbDatabase
sourcepub fn create_transaction(&self) -> FdbResult<FdbTransaction>
pub fn create_transaction(&self) -> FdbResult<FdbTransaction>
Creates a FdbTransaction
that operates on this
FdbDatabase
.
sourcepub async fn get_boundary_keys(
&self,
begin: impl Into<Key>,
end: impl Into<Key>,
limit: i32,
read_version: i64
) -> FdbResult<Vec<Key>>
pub async fn get_boundary_keys( &self, begin: impl Into<Key>, end: impl Into<Key>, limit: i32, read_version: i64 ) -> FdbResult<Vec<Key>>
Returns an array of Key
s k
such that begin <= k < end
and k
is located at the start of contiguous range stored on
a single server.
If limit
is non-zero, only the first limit
number of keys
will be returned. In large databases, the number of boundary
keys may be large. In these cases, a non-zero limit
should
be used, along with multiple calls to get_boundary_keys
.
If read_version
is non-zero, the boundary keys as of
read_version
will be returned.
This method is not transactional.
sourcepub fn open_tenant(
&self,
tenant_name: impl Into<Tenant>
) -> FdbResult<FdbTenant>
pub fn open_tenant( &self, tenant_name: impl Into<Tenant> ) -> FdbResult<FdbTenant>
Opens an existing tenant to be used for running transactions.
Note: Opening a tenant does not check its existence in the cluster.
sourcepub async fn run<T, F, Fut>(&self, f: F) -> FdbResult<T>where
F: FnMut(FdbTransaction) -> Fut,
Fut: Future<Output = FdbResult<T>>,
pub async fn run<T, F, Fut>(&self, f: F) -> FdbResult<T>where F: FnMut(FdbTransaction) -> Fut, Fut: Future<Output = FdbResult<T>>,
Runs a closure in the context that takes a FdbTransaction
.
Note
The closure FnMut: FnMut(FdbTransaction) -> Fut
will run
multiple times (retry) when certain errors are
encountered. Therefore the closure should be prepared to be
called more than once. This consideration means that the
closure should use caution when modifying state.
sourcepub async fn read<T, F, Fut>(&self, f: F) -> FdbResult<T>where
F: FnMut(FdbReadTransaction) -> Fut,
Fut: Future<Output = FdbResult<T>>,
pub async fn read<T, F, Fut>(&self, f: F) -> FdbResult<T>where F: FnMut(FdbReadTransaction) -> Fut, Fut: Future<Output = FdbResult<T>>,
Runs a closure in the context that takes a
FdbReadTransaction
.
Note
The closure F: FnMut(FdbReadTransaction) -> Fut
will run
multiple times (retry) when certain errors are
encountered. Therefore the closure should be prepared to be
called more than once. This consideration means that the
closure should use caution when modifying state.
sourcepub fn set_option(&self, option: DatabaseOption) -> FdbResult<()>
pub fn set_option(&self, option: DatabaseOption) -> FdbResult<()>
Set options on a FdbDatabase
.
Trait Implementations§
source§impl Clone for FdbDatabase
impl Clone for FdbDatabase
source§fn clone(&self) -> FdbDatabase
fn clone(&self) -> FdbDatabase
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more