Just released v1 of Fjall, a safe-Rust KV storage engine

50 points DruckerReparateur

https://github.com/fjall-rs/fjall

Fjall is an embeddable LSM-based forbid-unsafe Rust key-value storage engine. Its goal is to be a reliable & predictable but performant general purpose KV storage engine, for both smaller, but especially larger-than-RAM data sets. I have just released version 1, which stabilizes its data format for all future 1.x.x versions.

Its design is heavily influenced by LevelDB/RocksDB’s architecture and generally yields similar performance. It has similar features, like:

  • Range and prefix searches with forwards and backwards iteration
  • Data partitions (”Column Families” in RocksDB-speak)
  • Cross-partition atomic write batches
  • MVCC & Snapshot reading
  • Adjustable durability guarantees
  • Size-tiered (write-optimized), Levelled (read-optimized) and FIFO compaction (for ephemeral data)

Compared to other Rust storage engines (e.g. Persy, ReDB, …), Fjall has better write and space amplification across the board while still having competitive read performance. It also has very low startup times (\0.1s for 1 billion keys) and very short compile times (\3s on my machine, compared to \~90s for RocksDB).

AMA here, on GitHub (star the repo ❤️, https://github.com/fjall-rs/fjall/discussions) or on Discord (https://discord.com/invite/HvYGp4NFFk)

You can find and run Fjall and other Rust storage engines in my Rust storage engine benchmark: https://github.com/marvin-j97/rust-storage-bench

I have also made a bunch (more coming soon) of examples demonstrating some practical usage: https://github.com/fjall-rs/fjall/tree/main/examples

https://preview.redd.it/2gbybwtix01d1.png?width=1158&format=png&auto=webp&s=52c10545f596abe75a5975a6f9952bffb34455dc