4 ms·
There's one more big distinction, rqlite's replication is command based [0] where as dqlite is/was WAL frame-based -- so basically one ships the command and the
by hardwaresofton 7y ago
There's one more big distinction, rqlite's replication is command based [0] where as dqlite is/was WAL frame-based -- so basically one ships the command and the other ships WAL frames. This distinction means that non-deterministic commands (ex. `RANDOM()`) will work differently.
It looks like dqlite's documentation has changed -- for some reason frames are no longer mentioned anywhere[2]. So maybe this isn't the case any more, but this was once the biggest differentiator for me.
[0]: https://github.com/rqlite/rqlite/#limitations https://github.com/rqlite/rqlite/#limitations
[1]: https://webcache.googleusercontent.com/search?q=cache:p1XBghg1YZEJ:https://github.com/CanonicalLtd/go-dqlite/blob/master/README.md+&cd=1&hl=en&ct=clnk&gl=us https://webcache.googleusercontent.com/search?q=cache:p1XBgh...
[2]: https://github.com/canonical/dqlite/commit/35ea7cd56e93a36c5e640f1d33dbe024c4c4fa29#diff-04c6e90faac2675aa89e2176d2eec7d8 https://github.com/canonical/dqlite/commit/35ea7cd56e93a36c5...
- rlpb 7y ago> dqlite is/was WAL frame-based...maybe this isn't the case any more According to https://github.com/canonical/dqlite/blob/master/doc/faq.md https://github.com/canonical/dqlite/blob/master/doc/faq.md this is still the case.
- hardwaresofton 7y agoAhhhh thank you -- that information just got pushed into the FAQ -- I was thinking "surely they didn't just remove this information" but didn't look hard enough at all. Direct link: https://github.com/canonical/dqlite/blob/master/doc/faq.md#how-does-dqlite-compare-to-rqlite https://github.com/canonical/dqlite/blob/master/doc/faq.md#h...
- sansnomme 7y agoCan you give an example of how the specific differences may occur?
- rntksi 7y agoIf you do command-based replication, an insert or update that uses RANDOM() would have to be handled differently, lest you have differing values due to each member of the cluster evaluating and producing different values. (Anything that is an impure function basically will have that problem)