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
impl Database
Sourcepub fn snapshot(&self) -> Snapshot
pub fn snapshot(&self) -> Snapshot
Opens a cross-keyspace snapshot.
§Caution
Note that for serializable semantics you need to use a transactional database instead.
Sourcepub fn builder(path: impl AsRef<Path>) -> DatabaseBuilder<Self>
pub fn builder(path: impl AsRef<Path>) -> DatabaseBuilder<Self>
Creates a new database builder to create or open a database at path.
Sourcepub fn batch(&self) -> WriteBatch
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);Sourcepub fn journal_count(&self) -> usize
pub fn journal_count(&self) -> usize
Sourcepub fn disk_space(&self) -> Result<u64>
pub fn disk_space(&self) -> Result<u64>
Sourcepub fn persist(&self, mode: PersistMode) -> Result<()>
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.
Sourcepub fn delete_keyspace(&self, handle: Keyspace) -> Result<()>
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.
Sourcepub fn keyspace(
&self,
name: &str,
create_options: impl FnOnce() -> KeyspaceCreateOptions,
) -> Result<Keyspace>
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.
Sourcepub fn keyspace_count(&self) -> usize
pub fn keyspace_count(&self) -> usize
Returns the number of keyspaces.
Sourcepub fn list_keyspace_names(&self) -> Vec<StrView>
pub fn list_keyspace_names(&self) -> Vec<StrView>
Gets a list of all keyspace names in the database.
Sourcepub fn keyspace_exists(&self, name: &str) -> bool
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"));