HNHacker News
TopNewBestAskShowJobs

otoolep

5,065 karma · joined April 3, 2014

Software Engineer based in Pittsburgh, PA. Engineering Manager at Google, building large-scale data systems. Creator of rqlite[1], the lightweight, distributed database built on SQLite.

https://www.philipotoole.com

[1] https://www.rqlite.io

submissionscomments
otoolep··on Building rqlite 9.0: Cutting disk usage by half
Oh, I also presented some performance numbers in a presentation to a CMU a couple of years back. A little out-of-date, but gives a order-of-magnitude sense. https://youtu.be/JLlIAWjvHxM?t=2690

The biggest performance improvement since is due to the introduction of Queued Writes. See https://rqlite.io/docs/api/queued-writes/

otoolep··on Building rqlite 9.0: Cutting disk usage by half
rqlite creator here.

That's correct, there is a write-performance hit for the reasons you say. All Raft systems will take the same hit, and SQLite is intrinsically single-writer -- nothing about rqlite changes that[2]. That said, there are approaches to increasing write-performance substantially. See [1] for much more information.

Write-performance is not the only thing to consider though (assuming one has sufficient performance in that dimension). Ease of deployment and operation are also important, and that's an area in which rqlite excels[3] (at least I think so, but I'm biased).

[1] https://rqlite.io/docs/guides/performance/

[2] https://rqlite.io/docs/faq/#rqlite-is-distributed-does-that-...

[3] https://rqlite.io/docs/faq/#why-would-i-use-this-versus-some...

otoolep··on Building rqlite 9.0: Cutting disk usage by half
rqlite creator here.

One notable production user is Replicated: https://www.philipotoole.com/replicated-postgres-to-rqlite/

otoolep··on Eight years of organizing tech meetups (2023)
Thanks again to @eatonphil, for the opportunity to talk at Hacker Nights. Online meetings, like the ones Phil organized, were really important between 2020 and 2022.
otoolep··on Jepsen: Datomic Pro 1.0.7075
rqlite creator here. There was a Jepsen-style analysis done with rqlite[1] 2 years ago:

https://www.philipotoole.com/testing-rqlite-read-consistency...

The report itself: https://github.com/wildarch/jepsen.rqlite/blob/main/doc/blog...

[1] https://www.rqlite.io

otoolep··on Building a highly-available search engine using SQLite
rqlite creator here, happy to answer any questions.
otoolep··on Building a highly-available search engine using SQLite
rqlite creator here, happy to answer any questions.
otoolep··on A distributed systems reading list
Oh, and more background here: https://www.philipotoole.com/building-a-distributed-key-valu...
otoolep··on A distributed systems reading list
FWIW, I built hraftd[1] many years ago to make it easy to play with a simple distributed system, but one that uses a production-grade implementation of Raft[2]. You can spin up a cluster in seconds on a single machine, kill nodes, watch a new Leader get elected, and so on.

It's written in Go, so it'll help if you are familiar with Go. But the code is not difficult to understand even if you don't.

[1] https://github.com/otoolep/hraftd

[2] https://github.com/hashicorp/raft

otoolep··on Ask HN: Are you using SQLite and Litestream in production?
rqlite[1] author here, happy to answer any questions.

[1] https://www.rqlite.io

otoolep··on Show HN: CursusDB – A new scalable distributed document oriented database
rqlite creator here. Wishing you success with your new project.

Before we jump into what is encrypted, and what is not, what are the threat vectors we are actually concerned about?

With rqlite all traffic between the nodes can be encrypted, as can be the HTTP API. Yes, the data at rest is not, but there are many ways to protect that[1]. One way would be to use an encrypted file system, perhaps.

Encrypted data-at-rest is a valid request, but what use cases would it address?

[1] https://rqlite.io/docs/guides/security/

otoolep··on Marmot: Multi-writer distributed SQLite based on NATS
That's a (very) simple way to describe what rqlite mostly does (and similar systems, many of which are listed below), though it depends on how "quickly" you want it. If you want speed, it's hard to do it fast -- though accepting a small possibility of data loss will get you much faster performance. rqlite also offers that, via Queued Writes[1].

[1] https://rqlite.io/docs/api/queued-writes/

otoolep··on Marmot: Multi-writer distributed SQLite based on NATS
rqlite[1] creator here, happy to answer any questions.

[1] https://www.rqlite.io

otoolep··on Rqlite 8.0
It started off as an experiment almost 10 years ago[1], to see if it was possible -- and it turned out it was. AFAIK rqlite was the first time SQLite was combined with Raft, though many similar systems followed, created by other developers e.g. dqlite.

Over time rqlite has became a much more substantial database than it originally was, with a focus on ease-of-deployment and ease-of-operation. I have written a fair amount about how the design and implementation has evolved over the years[2], which may be of interest.

[1] https://www.philipotoole.com/replicating-sqlite-using-raft-c...

[2] https://rqlite.io/docs/design/

otoolep··on Rqlite 8.0
rqlite[1] creator here, happy to answer any questions about rqlite, this latest release, and how it works.

[1] https://rqlite.io

otoolep··on MondayDB: A new in-house data engine from monday.com
When I say "thousands coming and going" I'm talking about trying to run rqlite on, say, a network of cellphones. When people ask me about this, it usually means they have the wrong mental model of what rqlite is.

However, running it on Kubernetes should work quite well. Check out the documentation at https://rqlite.io/docs/guides/kubernetes/

>If a node dies due to, say, hardware failure, when it rejoins is it seen as a slightly out-of-date existing node since it’s part of statefulset? If so, assuming quorum is maintained, this is probably a lot easier than I was making it out to be.

Assuming I follow you, yes, this should work fine -- and exactly as you expect. I suggest you try it out, and if you don't understand what you're seeing file a ticket on GitHub, or join the rqlite Slack[1].

[1] https://rqlite.slack.com/

otoolep··on MondayDB: A new in-house data engine from monday.com
rqlite[1] creator here, happy to answer any questions.

[1] https://www.rqlite.io

otoolep··on I'm all-in on server-side SQLite (2022)
Litestream adds reliability to a system using SQLite by periodically backing-up the SQLite database to something like AWS S3. If you lose the node running your SQLite database, you must restore it from your backup.

rqlite, in contrast, adds reliability and high-availability via clustering. This means that any application talking to rqlite shouldn’t notice if a node fails because other nodes in the cluster automatically take over. But rqlite is not a drop-in replacement for SQLite.

https://rqlite.io/docs/faq/#how-is-it-different-than-litestr...

otoolep··on I'm all-in on server-side SQLite (2022)
Thanks Ben!

rqlite[1] creator, happy to answer questions too.

[1] https://www.rqlite.io

otoolep··on SQLedge: Replicate Postgres to SQLite on the Edge
No, rqlite doesn't support that kind of access. No reason it couldn't, but it currently only exposes a HTTP API.

https://rqlite.io/docs/faq/#is-it-a-drop-in-replacement-for-...

otoolep··on SQLedge: Replicate Postgres to SQLite on the Edge
rqlite[1] creator here, happy to answer any questions.

[1] https://www.rqlite.io

otoolep··on So, you want to deploy on the edge?
rqlite[1] creator here, happy to answer any questions. rqlite also supports read-only nodes, which can also help with reads at the "edge". It probably wouldn't scale to 100s of nodes, but it is an option.

"rqlite supports adding read-only nodes. You can use this feature to add read scalability to the cluster if you need a high volume of reads, or want to distribute copies of the data nearer to clients – but don’t want those nodes counted towards the quorum. These types of nodes are also known as non-voting nodes."

[1] https://rqlite.io/

[2] https://rqlite.io/docs/clustering/read-only-nodes/

otoolep··on Mycelite: SQLite extension to synchronize changes across SQLite instances
rqlite creator here. rqlite is not simply a SQLite replication technology[1], so probably won't meet your needs. Maybe litestream.

[1] https://rqlite.io/docs/faq/#can-i-use-rqlite-to-replicate-my...

otoolep··on Building a new database management system in academia (2017)
I started rqlite[1] in 2014[2], FWIW. While I didn't build the storage engine, or the consensus system, I've built the entire "management" part of the RDBMS from scratch. I'm almost 10 years at it, and there is still plenty to do.

[1] https://www.rqlite.io

[2] https://www.philipotoole.com/9-years-of-open-source-database...

otoolep··on Ask HN: Those with success using GPT-4 for programming – what are you doing?
I can't believe they are only charging me $20/month for access to GPT-4. I'd pay more for it.
otoolep··on Ask HN: Those with success using GPT-4 for programming – what are you doing?
I brought up the web UI, and said something like this: "Here is a Go source file, see any problems, issues, or suggested bug fixes? <paste the Go code>"

Simple as that. Of course, sometimes I got the "message too big" error. So I pasted bits of the sources files, choosing pieces I thought were reasonably self-contained. I also fed much of my unit tests through it, asking "see any missing test cases?" While some of the answers were not that helpful, digesting the feedback from GPT-4 made me think more about my code, and make some changes for the better.

otoolep··on Ask HN: Those with success using GPT-4 for programming – what are you doing?
I'm the creator of rqlite[1], an open-source distributed database written in Go.

It's saving me time (sometimes 2x speed up on certain, well-specified, tasks), and I enjoy using it. I wrote a blog post with some details on how it has helped me code the database: https://www.philipotoole.com/what-did-gpt-4-find-wrong-with-...

That said, the most recent release of GPT-4 seems a little more buggy[2].

[1] https://www.rqlite.io

[2] https://news.ycombinator.com/item?id=35970711

otoolep··on D1: Improvements to performance and scalability
I've been doing it for almost 10 years. :-)

https://www.philipotoole.com/9-years-of-open-source-database...

otoolep··on Latest Chat-GPT4 release (May 12th 2023) sure is buggy
As in, the two files in that directory that start with "sum". This is one example, it's also found bugs in my code. See the blog post linked in the original post for more examples.
otoolep··on Latest Chat-GPT4 release (May 12th 2023) sure is buggy
Yes, it's saved me hours of time -- with certain narrow tasks. For example, it generated these files for me:

https://github.com/rqlite/rqlite/blob/master/auto/backup/sum*

It took a few minutes, might have taken me 1+ hour of some research, and mechanically typing it all in.

← PreviousPage 3 of 11Next →