's Avatar

@fjallrs

Snazzy Rust KV store @ https://github.com/sponsors/fjall-rs

110
Followers
36
Following
150
Posts
01.10.2024
Joined
Posts Following

Latest posts by @fjallrs

Never used but @papra.app maybe?

09.02.2026 01:29 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Even found a second (minor) bug by coincidence

06.01.2026 03:08 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Release 3.0.1 ยท fjall-rs/fjall [fix] Edge case that could result in the second memtable being dropped before being flushed [fix] Custom filter policy not being applied

the sheer speed from initial bug report to @fjallrs.bsky.social getting a fix fully released is just wild.

06.01.2026 02:26 ๐Ÿ‘ 6 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Changelog: github.com/fjall-rs/fja...

V2->V3 migration: github.com/fjall-rs/mig...

02.01.2026 15:47 ๐Ÿ‘ 5 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Releasing Fjall 3.0 A year in the making

A strange moment, but - I just released 3.0.0.

fjall-rs.github.io/post/fjall-3/

What has started as a rewrite of the block format has become almost a full rewrite, interrupted by a bachelor's thesis, faulty hardware and a couple of weeks of sickness - but I think the end product is pretty good.

02.01.2026 15:45 ๐Ÿ‘ 20 ๐Ÿ” 6 ๐Ÿ’ฌ 3 ๐Ÿ“Œ 3
Post image Initial curve was bulk ingestion

Initial curve was bulk ingestion

Love it when SQLite just stops working but allocates hundreds of GBs of disk space.

24.12.2025 14:52 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Carl Sverre (SQLSync) - Why Physical Replication Still Matters
Carl Sverre (SQLSync) - Why Physical Replication Still Matters YouTube video by Local-First Conf

Check out my talk on physical replication and Graft that I delivered at the recent @syncconf.bsky.social in SF. youtu.be/QoKzDyH2MEA?...

09.12.2025 03:35 ๐Ÿ‘ 5 ๐Ÿ” 3 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Restarting, the drive works again - strange!

07.12.2025 22:04 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

So for the last 3 (!!!) days I was repro'ing a weird perf regression where read I/O would randomly spike. First I thought it was the block cache implementation, or compaction. But today I just got a "Input/output error". First I thought XFS died, but nope, even smartctl gets I/O error now, great.

07.12.2025 13:58 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Well... looks like my Kingston disk just died...?!

07.12.2025 13:30 ๐Ÿ‘ 2 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Maria Somerville - Projections (Official Video)
Maria Somerville - Projections (Official Video) YouTube video by Maria Somerville

This year's winter album... goes to Maria Somerville

youtu.be/k9qEKyQ7jc4

02.12.2025 01:47 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

I have prepared a preliminary changelog, too. This all has been a bit of work, you could say.

github.com/fjall-rs/fja...

25.11.2025 19:16 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
crates.io: Rust Package Registry

RC 1 is out! I forgot to post about RC 0, but here we are.
At this point API and disk format are unlikely to further change - now it's all about stabilization for the final release...

crates.io/crates/fjall...

25.11.2025 19:12 ๐Ÿ‘ 10 ๐Ÿ” 2 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I rewrote the entire write buffer, and journal backpressure system to be a more robust queue + messaging system. Also, now no more threads are started and stopped in the background on the fly. There is a single thread worker pool now (adjustable, at least 1), and that's it.

13.11.2025 18:43 ๐Ÿ‘ 5 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
crates.io: Rust Package Registry

v3 pre.6 is out - probably the penultimate prerelease before going into release candidate(s). At this point, all major architectural reworks are done, and just some APIs need some changes. Followed by a final cleanup and stabilization phase.

crates.io/crates/fjall...

13.11.2025 18:42 ๐Ÿ‘ 10 ๐Ÿ” 2 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 1
Post image

I didn't know what I was in for

13.11.2025 14:01 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

And because less data is written to disk, it frees up availabe IOPS and increases SSD endurance.

08.11.2025 14:59 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

With key-value separation, blobs are written at least twice (journal + blob file). So if a blob is compressible (let's say by 40%), we will still incur a write amp of 1.6x.

Journal compression uses more CPU, but because less data is transferred to OS and disk, it can actually be faster.

08.11.2025 14:59 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Post image Post image Post image

3.0.0 pre.5 is out and brings journal compression support.

Here's 16K JSON blobs being written:

08.11.2025 14:56 ๐Ÿ‘ 7 ๐Ÿ” 2 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Post image Post image

Yesterday or so I ran a benchmark over night, and v3 scales much better for extremely large (100+ GB) databases

28.10.2025 22:19 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
crates.io: Rust Package Registry

v3 pre-release 2 is out!

Still not file format -or API stable, but most importantly this release marks lsm-tree being *feature complete*.

crates.io/crates/fjall...

28.10.2025 22:15 ๐Ÿ‘ 5 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Well, it was a faulty RAM stick everybody

26.10.2025 12:24 ๐Ÿ‘ 6 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

Thanks ๐Ÿ˜ญ

26.10.2025 12:10 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

So I have now tried btrfs, xfs, ext4 on two diff. SSDs, updating to Ubuntu 24; and I'm still getting corruptions... at this point I don't really know what to do.

This is not code specific (RocksDB is also affected), yet I don't understand how my OS and all apps just seem to continue to work fine...

25.10.2025 16:22 ๐Ÿ‘ 5 ๐Ÿ” 2 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Without having numbers (right now), LMDB will probably read absurdly fast, while not so much space- or write efficient.
Most, if not all data, fits into RAM here. Would be interesting to benchmark 100s of GBs.

But I found redb to be slower (sometimes much slower) than LMDB, pretty much always.

11.10.2025 14:22 ๐Ÿ‘ 2 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Post image Post image Post image

And here's another read-heavy bench with 4K values, 5% sync random updates and 95% Zipfian reads.

ReDB uses 4x more disk space, and writes 6x slower. Interestingly, it's also ~5x slower in point reads - I think ReDB is not handling large values well; haven't read too much into its implementation.

11.10.2025 14:14 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Synchronous writes (fsync) I might add

09.10.2025 17:22 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image Post image Post image Post image

95% Zipfian reads, 5% random updates on a Kingston PLP SSD with 16K JSON blobs - sled DNF! (OOM)

fjall uses LZ4 compression

09.10.2025 17:20 ๐Ÿ‘ 5 ๐Ÿ” 0 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0

constellation runs on a bare metal server with 4 dedicated CPU cores, 16GiB memory, 1TiB fast NVMe SSD attached, and 500mbit unmetered network connection.

08.10.2025 13:46 ๐Ÿ‘ 45 ๐Ÿ” 3 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0

**slightly slower in reading

05.10.2025 22:44 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0