Expand description
GhalaDb is a key value datastore that implements keys and values separation inspired by the WiscKey paper.
GhalaDb implements a SSD-conscious data layout by decoupling the storage of keys from values. An in-memory tree stores the keys along with pointers to the values, while the values are stored in a separate log file. This significantly reduces write amplification during ingestion, while facilitating faster data loading.
Since GhalaDb keeps all its keys and data pointers in memory, it is suitable for applications that have small-sized keys.
!! GhalaDb is experimental software and might not be suitable for your use case.
ⓘ
use ghaladb::{GhalaDb, GhalaDbResult};
fn main() -> GhalaDbResult<()> {
let mut db = GhalaDb::new("/tmp/ghaladb", None)?;
let key = "king".to_owned();
let val = "queen".to_owned();
db.put(&key, &val)?;
assert_eq!(db.get(&key)?.unwrap(), val);
Ok(())
}
Structs§
- Database Configuration
- An LSM key value store with keys and values separation.
Enums§
- A list specifying various GhalaDb errors.
Type Aliases§
- A result type that captures the GhalaDbError in its error channel.