| Crates.io | seerdb |
| lib.rs | seerdb |
| version | 0.0.10 |
| created_at | 2025-11-17 18:46:28.679321+00 |
| updated_at | 2025-12-10 07:48:36.227023+00 |
| description | Research-grade storage engine with learned data structures |
| homepage | |
| repository | https://github.com/omendb/seerdb |
| max_upload_size | |
| id | 1937326 |
| size | 1,662,930 |
Research-grade LSM storage engine with learned data structures.
Embedded key-value storage integrating learned indexes (ALEX), key-value separation (WiscKey), and workload-aware compaction from recent systems research.
[dependencies]
seerdb = "0.0.4"
Requires nightly Rust:
rustup override set nightly
use seerdb::{DB, DBOptions};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let db = DB::open(DBOptions::default())?;
// Basic operations
db.put(b"key", b"value")?;
let val = db.get(b"key")?;
db.delete(b"key")?;
// Batch writes (atomic)
let mut batch = db.batch();
batch.put(b"user:1", b"alice");
batch.put(b"user:2", b"bob");
batch.commit()?;
// Range scan
for result in db.prefix(b"user:")? {
let (key, value) = result?;
println!("{:?} = {:?}", key, value);
}
// Point-in-time snapshot
let snapshot = db.snapshot();
db.put(b"key", b"new_value")?;
assert_eq!(snapshot.get(b"key")?, val); // snapshot sees old state
Ok(())
}
seerdb is a 7-level LSM tree with:
ArcSwapRun benchmarks with:
cargo bench # All benchmarks
cargo bench --bench ycsb_benchmark # YCSB workloads
cargo bench --bench mixed_workload # Read/write mix
cargo test --lib # Unit tests (213 tests)
cargo test # All tests including integration
cargo test --features failpoints # Crash/recovery tests