Frankensqlite: Rust reimplementation for concurrent writers
DatabaseComments
I recall several Rust-based DB projects from a few years back that claimed to replace the C core but ended up as specialized niche tools. Is Frankensqlite targeting full binary compatibility with existing .sqlite files?
This is similar to the shift toward LSM trees in other engines. You get better write concurrency, but you usually pay for it with read amplification and more frequent compaction cycles.
I must disagree with the comparison to LSM trees. Frankensqlite appears to be modifying the concurrency control mechanism of the B-Tree itself, which avoids the compaction overhead typical of LSM architectures.
Suppose the information-theoretic durability introduces a non-trivial recovery window during crashes. Would that trade-off be worth the concurrency boost in an environment where absolute data integrity is the primary requirement?
The OP missed the biggest implication here. If this works, we can finally stop pretending that local-first apps require a complex sync engine just to handle concurrent local edits.
In the legacy systems I manage for the county, we hit the SQLite writer bottleneck mostly when using shared network mounts. A rewrite that handles concurrency better could actually make those old file-share setups viable again.
rust's ownership model naturally prevents the race conditions that make c-based locking so fragile.