For those interested in distributed sqlite, you may also want to look into ‘dqlite’, another raft-based distributed sqlite project. It was developed to support LXD’s clustering features, and is in use in that context.
I haven’t used it myself, but I used to work with those guys, which is how I know about it. I know they initially looked at rqlite, but decided they needed to roll their own. I think the reason was related to the first limitation listed in the rqlite README: “Only SQL statements that are deterministic are safe to use with rqlite, because statements are committed to the Raft log before they are sent to each node.”.
The lead dev, Free, gave a detailed talk at FOSDEM last month about it.
Rqlite has an open issue about that, solving it will involve parsing incoming SQL statements, executing any time, rand, etc functions once, and modifying the committed statement to use their values. MySQL has been doing that for ages in its statement-based replication afaik, so it’s a solved problem that “just” needs some legwork.
Very interesting! Did anyone here run rqlite in production and have some insights to share?
Ditto. Just started playing around with sqlite and they claim to be able to handle “400K to 500K HTTP requests per day, about 15-20% of which are dynamic pages touching the database.”
edit: Great slides!
I clicked through to ask much the same question. Maybe with a slightly finer point on it:
Since it is not a drop-in replacement for sqlite, how does the level of migration effort stack up for moving to this from sqlite, as opposed to moving to some other RDBMS that natively supports replication. With the natural follow-on: how does the performance versus those other RDMBS stack up?