Skip to main content

Database

Struct Database 

Source
pub struct Database(/* private fields */);
Expand description

A database is a single logical database which can house multiple keyspaces

In your application, you should create a single database and keep it around for as long as needed (as long as you are using its keyspaces).

Implementations§

Source§

impl Database

Source

pub fn snapshot(&self) -> Snapshot

Opens a cross-keyspace snapshot.

§Caution

Note that for serializable semantics you need to use a transactional database instead.

Source

pub fn builder(path: impl AsRef<Path>) -> DatabaseBuilder<Self>

Creates a new database builder to create or open a database at path.

Source

pub fn batch(&self) -> WriteBatch

Initializes a new atomic write batch.

Items may be written to multiple keyspaces, which will be be updated atomically when the batch is committed.

§Examples
let mut batch = db.batch();

assert_eq!(tree.len()?, 0);
batch.insert(&tree, "1", "abc");
batch.insert(&tree, "3", "abc");
batch.insert(&tree, "5", "abc");

assert_eq!(tree.len()?, 0);

batch.commit()?;
assert_eq!(tree.len()?, 3);
Source

pub fn journal_count(&self) -> usize

Returns the amount of journals on disk.

§Examples
assert_eq!(1, db.journal_count());
Source

pub fn disk_space(&self) -> Result<u64>

Returns the disk space usage of the entire database.

§Examples
assert!(db.disk_space()? > 0);
Source

pub fn persist(&self, mode: PersistMode) -> Result<()>

Flushes the active journal. The durability depends on the PersistMode used.

Persisting only affects durability, NOT consistency! Even without flushing data is crash-safe.

§Examples
let db = Database::builder(folder).open()?;
let items = db.keyspace("my_items", KeyspaceCreateOptions::default)?;

items.insert("a", "hello")?;

db.persist(PersistMode::SyncAll)?;
§Errors

Returns error, if an IO error occurred.

Source

pub fn open(config: Config) -> Result<Self>

Opens a database in the given directory.

§Errors

Returns error, if an IO error occurred.

Source

pub fn delete_keyspace(&self, handle: Keyspace) -> Result<()>

Destroys the keyspace, removing all data associated with it.

The keyspace folder will not be deleted until all references to it are dropped, so calling this is safe, even if the keyspace is still accessed in another thread.

§Errors

Will return Err if an IO error occurs.

Source

pub fn keyspace( &self, name: &str, create_options: impl FnOnce() -> KeyspaceCreateOptions, ) -> Result<Keyspace>

Creates or opens a keyspace.

If the keyspace does not yet exist, it will be created configured with create_options. Otherwise simply a handle to the existing keyspace will be returned.

Keyspace names can be up to 255 characters long and can not be empty.

§Errors

Returns error, if an IO error occurred.

§Panics

Panics if the keyspace name is invalid.

Source

pub fn keyspace_count(&self) -> usize

Returns the number of keyspaces.

Source

pub fn list_keyspace_names(&self) -> Vec<StrView>

Gets a list of all keyspace names in the database.

Source

pub fn keyspace_exists(&self, name: &str) -> bool

Returns true if the keyspace with the given name exists.

§Examples
assert!(!db.keyspace_exists("default"));
db.keyspace("default", KeyspaceCreateOptions::default)?;
assert!(db.keyspace_exists("default"));

Trait Implementations§

Source§

impl Clone for Database

Source§

fn clone(&self) -> Database

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Deref for Database

Source§

type Target = DatabaseInner

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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 T
where 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.