Fjall 3.0 is a major release of the Rust-based LSM-tree storage engine featuring a completely revamped block format with sparse indexing, prefix truncation, and optional hash indexes. Key improvements include versioning for safer concurrent operations, integrated key-value separation with automatic garbage collection, partitioned filters and indexes for better memory efficiency, and fluid per-level configuration. The release introduces breaking API changes including renamed terminology (Keyspace→Database, Partition→Keyspace), new iterator guards for lazy blob loading, and improved transaction APIs. Performance gains include 2-100x faster uncached block reads, reduced memory usage for large datasets, and better compaction efficiency. The disk format is designed for longevity with forward compatibility, checksumming by default, and migration tools from v2.

31m read timeFrom fjall-rs.github.io
Post cover image
Table of contents
Short LSM-tree primerRevamping the block formatVersioningKey-value separation, reduxSFA: Simple file archiveReworked messaging & backpressurePartitioned filtersNew iterators APIRevamped transaction APIsChecksummingChanging the keyspace-partition terminologyLess tombstonesCaching blob file descriptorsJournal compressionUnpinning filters & indexesFluid configurationGoodbye MinizLess strict keyspace namesDatabase lockingMSRVV2->V3 migrationLooking back and looking aheadOpen SourceBenchmarksDiscordInterested in LSM-trees and Rust?

Sort: