3 releases (1 unstable)

1.0.0-pre.1 Jun 11, 2024
0.0.1 Mar 12, 2024

#343 in Database implementations

MIT/Apache

78KB
1.5K SLoC

CI docs.rs Crates.io MSRV

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.

Footnotes

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

Dependencies

~4–13MB
~157K SLoC