Generic value log implementation for key-value separated storage, inspired by RocksDB's BlobDB [1] and implemented in safe, stable Rust.
This crate is intended as a building block for key-value separated storage. You probably want to use https://github.com/fjall-rs/fjall instead.
Features
- Thread-safe API
- 100% safe & stable Rust
- Supports generic KV-index structures (LSM-tree, ...)
- Built-in per-blob compression (LZ4, Miniz) (optional)
- In-memory blob cache for hot data - can be shared between multiple value logs to cap memory usage
- On-line garbage collection
Keys are limited to 65536 bytes, values are limited to 2^32 bytes.
Feature flags
lz4
Allows using LZ4 compression, powered by lz4_flex.
Disabled by default.
miniz
Allows using DEFLATE/zlib compression, powered by miniz_oxide.
Disabled by default.
serde
Enables serde derives.
Disabled by default.
Stable disk format
The disk format is stable as of 1.0.0. Future breaking changes will result in a major version bump and a migration path.
License
All source code is licensed under MIT OR Apache-2.0.
All contributions are to be licensed as MIT OR Apache-2.0.