Is it possible to use a RAFT implementation to distribute ESQLite (NIF driver) between 3 nodes?

That is really nice of approaching things. I have to check this with my employer too, because my contract, understandably, prevents me from working for other companies. But because this is open-source software, and the adaptions will be open-source as well, this could easily be an exception.

We however don’t use esqlite ourselves. It was implemented as a proof of concept to learn if we could use it instead of postgres to ease installing zotonic by reducing the number of external services needed to get going.

@mmzeeman Glad to hear that. I will open a ticket on GitHub for this new feature.
Let me know when you’ll be ready to work on it :grinning:

I don’t have an answer yet.

I’ve been researching some replication algorithms and bumped into Viewstamped Replication. (see. https://pmg.csail.mit.edu/papers/vr-revisited.pdf). It looks more practical than Raft and Paxos, because there is no need to have stable storage at the protocol level, and switching the primary is deterministic. Like Raft it can be used to replicate the state of arbitrary state-machines. In itself it already looks like a great addition to the beam.

2 Likes

Thanks for sharing the article. Whenever you’re ready to work on it. No rush.
I’ve created an enhancement feature on GitHub.

Yes, it would definitely possible with Ra :slight_smile:

Sorry for the delay to get back to you!

1 Like

Thanks for confirming this can be done in Erlang+RA.

nw

@mmzeeman are you aware of SQLite’s Session Extension feature?

1 Like

Hmm. Interesting… Unfortunately I don’t have time to look into it.

FYI There is now a sqlite utility which can do database replication. See: Database Remote-Copy Tool For SQLite

2 Likes

@mmzeeman Thanks for sharing. Still not a RAFT implementation.