Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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

[1]: https://webcache.googleusercontent.com/search?q=cache:p1XBgh...

[2]: https://github.com/canonical/dqlite/commit/35ea7cd56e93a36c5...



> 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 this is still the case.


Ahhhh 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#h...


Can you give an example of how the specific differences may occur?


If 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)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: