Crates.io | stack-db |
lib.rs | stack-db |
version | 0.3.5 |
source | src |
created_at | 2024-03-03 00:04:34.050211 |
updated_at | 2024-09-23 11:46:58.677531 |
description | A (basically) infinitely stacking & extendable CoW database that has both readonly safety and incredible write speeds at the same time. |
homepage | |
repository | https://github.com/kalscium/stack-db |
max_upload_size | |
id | 1160115 |
size | 42,737 |
A (basically) infinitely stacking & extendable CoW database that has both readonly safety and incredible write speeds at the same time.
Here is a basic in-memory database that only deals with binary indexes and data (that uses the allocators provided by the library)
use stack_db::prelude::*;
let allocator = SkdbMemAlloc; // or `SkdbDiskAlloc::new()`
let mut database = StackDB::new(allocator).unwrap();
// writing
database.write(256, b"hello, ").unwrap();
database.write(256+7, b"world").unwrap();
// reading
assert_eq!(&*database.read(256..268).unwrap(), b"hello, world");
// flush to save all changes
database.flush().unwrap();
// over-writting
database.write(256, b"H").unwrap();
database.write(256+7, b"W").unwrap();
database.write(268, b"!").unwrap();
// flush again
database.flush().unwrap();
// reading
assert_eq!(&*database.read(256..269).unwrap(), b"Hello, World!");
// rebase to save space
database.rebase(256).unwrap(); // rebase with a 256 byte buffer