Twelve years of distributed SQLite
- ID
- 39080
- Status
- summarized
- Published
- 24 Oct 2026, 9:16 AM
- Fetched
- 24 Oct 2026, 11:34 PM
- Provider
- Hacker News
- Category
- dev-community
- Original URL
- https://philipotoole.com/twelve-years-of-distributed-sqlite/
- Source URL
- https://hnrss.org/best
Summary
- Score
- 7.5
- Created
- 24 Oct 2026, 11:34 PM
- Tags
- Audience
- developersdatabase_learners
What happened
Philip O'Toole recounts twelve years of rqlite, the project he open-sourced in September 2014 after taking SQLite and putting a Raft log in front of it so every write replicates across a cluster. The first version used the goraft library (the same one InfluxDB and etcd used), replaced in early 2016 with Hashicorp's Raft implementation, which rqlite still uses; the defining choice was making it a CP system where writes go through the leader, a majority must acknowledge, and a partitioned minority refuses writes. He also credits earlier work — Expensify's Paxos-based Bedrock, released 2016, and the Erlang ActorDB — and notes Canonical's dqlite, built so LXD and later MicroK8s could have an embedded replicated store without running etcd, after a call with Mark Shuttleworth about whether rqlite could fit.
Why it matters
If you reach for SQLite in a multi-node setup, this is the design trade-off laid out plainly: rqlite will refuse writes from a partitioned minority rather than accept them, so you get consistency at the cost of write availability during partitions — decide that before you pick it over an eventually-consistent store. It also maps the field you're choosing from: rqlite (Go, Hashicorp Raft), dqlite (C, its own Raft, built for LXD/MicroK8s without etcd), plus Bedrock and ActorDB, in a category O'Toole counts at roughly a dozen projects, some venture-funded and two acquired.
Discussion angle
Ask who in the room has actually run SQLite replicated across nodes, and what broke — then compare rqlite's CP stance (minority refuses writes) against dqlite's embedded-in-the-app approach for LXD/MicroK8s, and when each is the wrong tool.