Hacker News new | comments | show | ask | jobs | submit login
Show HN: Rqlite v4.0 – With node-to-node encryption (github.com)
101 points by otoolep 10 months ago | hide | past | web | favorite | 22 comments

Not to be confused with ActorDB, a distributed SQLite-based database for highly-sharded data. These two systems are similar in that they are both new SQL systems on top of SQLite, but they seem to differ greatly in use-case


Does actordb subsume the functionality of rqlite?

As in, can I tell actordb 'replicate this actor to all nodes' and then will it basically be the same as rqlite, but with page level replication?

Honest question: why would I want a distributed scale-out RDBMS based on SQLite when there are others based on more performant server-based solutions (see Citus for PostgreSQL, Galera for MySQL, etc)

My understanding/recollection of SQLite is that it has significant performance issues with high concurrency. Great for a database on a pocket device, not the best choice for a horizontal scale-out high-concurrency system. At what point do I need horizontal scalability, but not care about concurrency on any one node?

Again, honest question - I'm not doubting the project or its value, I just don't get it.

I think you're misunderstanding the goals of the project. It's not to create a horizontally scalable DB. Write perflrmance will not scale horizontally at all with this database.

The goal is to create something more like an etcd that can hold structured data.


From the README:


rqlite gives you the functionality of a rock solid, fault-tolerant, replicated relational database, but with very easy installation, deployment, and operation. With it you've got a lightweight and reliable distributed relational data store. Think etcd or Consul, but with relational data modelling also available.

You could use rqlite as part of a larger system, as a central store for some critical relational data, without having to run a heavier solution like MySQL.


rqlite replicates SQLite for fault-tolerance. It does not replicate it for performance. In fact performance is reduced somewhat due to the network round-trips.

Congrats on the release! A bit unrelated, but the README says Windows is an officially supported platform, and I've seen this be the case on many Go projects. I know very little about the Windows platform, can you comment on how painless supporting Windows is really with Go? Do you have e.g. CI runs on Windows? With most of the compiled stuff I worked on Windows was mostly an afterthought and always yes-it-should-run-but. Can I trust Go to spit out binaries that work, or do I have to avoid certain stdlib features? What about e.g. fork?

I know very little about the Windows platform

As someone who started in the 90ies this makes me smile.

Year of the linux desktop or not: something has changed. (Quite aware that the bauerd might be using something else.)

He could be a Mac user for all we know.

Yes, I tried to mention that.

My point is the Windows monopoly is almost broken and I think everyone including Windows users benefit from that.

> the Windows monopoly is almost broken

Oh, how I wish that were true.

In some areas, yes, but there so many line-of-business applications that are only available for Windows that even if Microsoft stopped developing Windows, people would continue to use it for a very long time.

I am not at all a fan of Steven Ballmer, but he got it right - if you get the developers to flock to your platform, you win. Microsoft did that in the desktop space, Apple did it in the mobile space.

>> the Windows monopoly is almost broken

> Oh, how I wish that were true.

Windows lost mobile. They lost pads. More people than ever are using Macs. More people than ever are using Linux and various nixes. Linux, Macs and other nixes are considered cooler than Windows.

Windows lost servers, although Microsoft seems to have won a good chunk of developer mindshare with Azure - running mostly (AFAIK) Linux.

Yes, a lot of legacy systems still use Windows but it seems less and less need Windows every year.

Except from Manic time and Microsoft Office I cannot think of any software that I personally would need Windows for at the moment.

Netbeans and Maven run better in Neon. Same goes for Node and a lot of other software I care about AFAIK.

Even CSGO seems to work better on Linux for weeks (until next bad update, I think last waa when sound was messed up probably back in March.)

Not related to this project, but have done projects in Go. In terms of CI runs, AppVeyor[0] is the most popular one, it allows a similar setup to Travis and has most of the functionality too.

Build compatability is also great with Go. The only issues I've run into so far are graphical applications which often require different libraries for different platforms. Nothing I've done that's not graphical has ever had compatability issues (except file stat).

[0] https://www.appveyor.com/

Yes, the project employs Appveyor to ensure that the project can be built on Windows at all times.



Is there a way to create an index without blocking other connections trying to insert/update/select?

rqlite has the same limitations as SQLite in this regard.


Looks interesting. I assume this inherits the write lock limitations from SQLite?

Yes it does.

Can this be used as a "drop-in" replacement for sqlite or do I have to modify my application for it?

For Python at least, there's a "normal" driver that is pretty much a drop-in. Am curious as to how it will work in practice myself, since I usually rely on an ORM these days.

You can find various client libraries here: https://github.com/rqlite

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