/value-log

Value log implementation for key-value separated storage in safe Rust

Primary LanguageRustApache License 2.0Apache-2.0

CI docs.rs Crates.io MSRV dependency status

Generic value log implementation for key-value separated storage, inspired by RocksDB's BlobDB [1] and Titan [2] 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, ...)
  • Generic per-blob compression (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

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.

Footnotes

[1] https://github.com/facebook/rocksdb/wiki/BlobDB

[2] https://docs.pingcap.com/tidb/stable/titan-overview/