3 releases (stable)

1.1.0 Oct 1, 2024
1.0.0 Sep 20, 2024
1.0.0-pre.2 Sep 14, 2024
1.0.0-pre.1 Jun 11, 2024
0.0.1 Mar 12, 2024

#314 in Database implementations

Download history 10/week @ 2024-07-25 3/week @ 2024-08-01 275/week @ 2024-09-12 479/week @ 2024-09-19 389/week @ 2024-09-26 176/week @ 2024-10-03 161/week @ 2024-10-10 405/week @ 2024-10-17

1,221 downloads per month
Used in 3 crates (via lsm-tree)

MIT/Apache

94KB
2K SLoC

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/

Dependencies

~3–12MB
~137K SLoC