Live data from Hacker News

Dqlite – High-Availability SQLite

dqlite.io

71–80 of 120 posts

Re: Dqlite – High-Availability SQLite

#71

What is the difference between this and rqlite? https://github.com/rqlite/rqlite

From the FAQ[1] The main differences from rqlite are: - Embeddable in any language that can interoperate with C - Full support for transactions - No need for statements to be deterministic (e.g. you can use time()) - Frame-based replication instead of statement-based replication [1] https://github.com/canonical/dqlite/blob/master/doc/faq.md

rqlite creator here.

More fundamentally, as mentioned above, Dqlite is a library, whereas rqlite is a RDBMS (albeit a pretty simple and lightweight one).

Re: Dqlite – High-Availability SQLite

#72

What is the difference between this and rqlite? https://github.com/rqlite/rqlite

From the FAQ[1] The main differences from rqlite are: - Embeddable in any language that can interoperate with C - Full support for transactions - No need for statements to be deterministic (e.g. you can use time()) - Frame-based replication instead of statement-based replication [1] https://github.com/canonical/dqlite/blob/master/doc/faq.md

If it’s used like a library where’s the data stored? Sorry if this is obvious

Re: Dqlite – High-Availability SQLite

#73
post #59

Interesting nugget about golang from their FAQ: https://github.com/canonical/dqlite/blob/master/doc/faq.md Why C? The first prototype implementation of dqlite was in Go, leveraging the hashicorp/raft implementation of the Raft algorithm. The project was later rewritten entirely in C because of performance problems due to the way Go interoperates with C: Go considers a function call into C that lasts more than ~20 mic…

I don't want to flame, but I did find it curious they went with C rather than Rust. In my experience the transition is straightforward and the string handling (particularly with unicode encodings) is way better (in addition to the normal ownership benefits), and the result (an easily linkable library exposing a C ABI) is roughly the same.

Yes, and one library will be 100 MiB, the other 1.

Re: Dqlite – High-Availability SQLite

#74

Earlier quoted context omitted.

I wouldn't paint Canonical with that generalization. It's not unheard of that they have dropped projects, but I wouldn't say it's common. But looks like their primary use is LXD, which doesn't seem to be going anywhere...

But the main point made by the parent is entirely correct: the biggest issue isn’t that of implementing a consensus protocol: the biggest issue is the reconfiguration of the cluster, management of the dead/live nodes, addition of extra nodes for replacement, copying of the data before reconfiguration. All of that needs tooling.

Indeed. I was reading the dqlite page thinking "where is the monitoring endpoint to tell if the cluster is healthy or degraded?" Too often that seems like an afterthought if it's thought of at all.

I have a teeny, tiny cluster using MySQL+galera as a multi-master cluster, but it took a while to iterate to monitoring that tells me when one node is unhealthy and getting the correct repair and restart procedures.

Re: Dqlite – High-Availability SQLite

#75

I really like the design of this website. It's simple, information-rich, fast, and doesn't contain a ridiculous number of images or dynamic components. It's a shame that I can only say this for a select few websites these days.

Yet it's still loaded with hundreds of KB of custom fonts, because the designers would rather I look at a blank page for a couple seconds than gaze upon their design with a typeface that isn't exactly the same one they have on their computer.

My resolution, window size, color settings, text zoom, font rendering, etc, are almost certainly different, too, but at least they've made the page more than twice as slow by forcing the correct font.

Re: Dqlite – High-Availability SQLite

#76

This is developed by LXD team for it's cluster. It's used by us in production as a part of LXD cluster. Initially there were some issues but now it can support thousands of nodes in a cluster easily in our regression tests. It's good they made it as a separate project can be used independent of LXD containers.

[deleted]

Re: Dqlite – High-Availability SQLite

#77

Earlier quoted context omitted.

But the main point made by the parent is entirely correct: the biggest issue isn’t that of implementing a consensus protocol: the biggest issue is the reconfiguration of the cluster, management of the dead/live nodes, addition of extra nodes for replacement, copying of the data before reconfiguration. All of that needs tooling.

Indeed. I was reading the dqlite page thinking "where is the monitoring endpoint to tell if the cluster is healthy or degraded?" Too often that seems like an afterthought if it's thought of at all. I have a teeny, tiny cluster using MySQL+galera as a multi-master cluster, but it took a while to iterate to monitoring that tells me when one node is unhealthy and getting the correct repair and restart procedures.

Totally.

FWIW, I built all the functionality into rqlite from the very start, for exactly those reasons. In the real world a database must be operated.

https://github.com/rqlite/rqlite/blob/master/DOC/DIAGNOSTICS...

https://github.com/rqlite/rqlite/blob/master/DOC/CLUSTER_MGM...

Re: Dqlite – High-Availability SQLite

#78
post #66

Earlier quoted context omitted.

Depends on how fast is your disk, what file system and kernel you use, and how low is your network latency. Difficult to predict. But it's basically as fast as it can get given 1) hardware constraints 2) raft consensus. If you want light-speed insert/delete, you could probably don't use the disk at all: as long as a majority of your nodes don't die, you won't lose any data. You can also go somewhere in between and sa…

Do all nodes participate as full RAFT nodes? Or can you have read-only nodes?

Aren't non-leader RAFT nodes already read-only?

Re: Dqlite – High-Availability SQLite

#79

Earlier quoted context omitted.

I wouldn't paint Canonical with that generalization. It's not unheard of that they have dropped projects, but I wouldn't say it's common. But looks like their primary use is LXD, which doesn't seem to be going anywhere...

But the main point made by the parent is entirely correct: the biggest issue isn’t that of implementing a consensus protocol: the biggest issue is the reconfiguration of the cluster, management of the dead/live nodes, addition of extra nodes for replacement, copying of the data before reconfiguration. All of that needs tooling.

Needs a Kubernetes operator for sure.

Re: Dqlite – High-Availability SQLite

#80

Earlier quoted context omitted.

I wouldn't paint Canonical with that generalization. It's not unheard of that they have dropped projects, but I wouldn't say it's common. But looks like their primary use is LXD, which doesn't seem to be going anywhere...

It doesn't really matter who wrote it, it's a trope of corporate software development. A small team makes project X to support project Y. They go through the usual dev + production + maintenance cycle, which takes 2-3 years typically, sometimes 5, after which the team is disbanded/reorganized, and no new dev work happens on the old projects. The project is effectively abandoned at that point, unless it happens to hav…

Hence it’s being released and if/when people fork it it will/ could live forever.
Post reply on HN