HNHacker News
TopNewBestAskShowJobs

otoolep

5,064 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 First Impressions of Claude Fable
Blog post author here (I did not post the link above to HN). I also wrote a short follow-up blog post at https://philipotoole.com/proving-to-fable-i-maintain-the-rep...
otoolep··on Show HN: rqlite – the fault-tolerant DB built on SQLite – v10.0 released
You can learn about some known use cases here: https://rqlite.io/docs/features/#common-use-cases

One application that comes up over and over again -- wanting relational modeling, along with HA, but with low operational costs. People sometimes start with Postgres, then need to set up HA, and find it's a lot of work. They realize that their data set requirements are not huge, don't need fancy features, so start to think Postgres is overkill. That's what Replicated found.

otoolep··on Leviathan (1651)
I grew up in Ireland, moved to the USA as an adult. European government is clearly Hobbes in model, the US Lockean.

In Europe the individual has almost no legal reason to use force, and force by individuals is considered illegitimate. The "Sovereign" has all the coercive power in European states. In the US, however, a certain amount of legitimate force explicitly remains with the individual i.e. the 2nd amendment. (I am not making a value judgement here).

Of course, Europe has government with the consent of the governed, so is Lockean in that sense. But the balance of force between the "Sovereign" and the people in Europe is all Hobbes. You only notice it when you move to the US and compare it to Europe.

Europe had centuries of religious and civil war. It's not surprising Hobbes won out.

otoolep··on Many Small Queries Are Efficient in SQLite
rqlite creator here, happy to answer any questions.

As for reliability - it's a fault-tolerant, highly available system. Reliability is the reason it exists. :-) If you're asking about quality and test coverage, you might like to check out these resources:

- https://rqlite.io/docs/design/

- https://rqlite.io/docs/design/#blog-posts

- https://philipotoole.com/how-is-rqlite-tested/

otoolep··on Common misunderstandings about large software companies
>First of all, does anyone believe that highly scrutinized and bureaucratic functions are general high quality services?

This is the only part of your response that doesn't quite sit right with me. There could be many "highly scrutinized and bureaucratic functions" out there that are working very well, you just don't notice because they work so well. There could be a selection-effect here.

Quality is a big deal for me[1]. But I think you're defining "quality" too narrowly in this context. "Quality" could also mean "allows everyone, at scale, reliably, to do what they need to do." The US Tax Filing system (and its associated software) meets that goal.

[1] https://philipotoole.com/always-thinking-of-the-next-guy/

otoolep··on Common misunderstandings about large software companies
Blog post author here, thanks for your thoughtful comment. You raise some interesting things to think about.
otoolep··on Rqlite: Distributed Database Built on SQLite
OK, well, you could try client-side batching too, if you can. That will also improve performance substantially.

Otherwise, if you try with more modern networks and disks, let me know what you see.

otoolep··on Rqlite: Distributed Database Built on SQLite
Yes, fast networks matter.

I did introduce Queued Writes[1] since that talk, allowing you to trade off performance versus immediate durability. It may interest you -- network is much less of a factor then, and you should get a 10-100x increase in throughput.

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

otoolep··on Rqlite: Distributed Database Built on SQLite
rqlite creator here.

Yes I do have practical experience to share, I wrote a blog post on rqlite and FTS5: https://philipotoole.com/building-a-highly-available-search-...

Will it allow you to reach the same scale in terms of data set size that Elasticsearch supports? Almost certainly no, but it might be enough depending on your use case.

otoolep··on Rqlite: Distributed Database Built on SQLite
rqlite creator here. I have performed a fair amount of performance testing, some of which I outlined in a talk to the CMU Database Group a few years ago. Details:

- https://www.philipotoole.com/2021-rqlite-cmu-tech-talk - see slide 33.

- There is also a recording that goes with the talk: https://www.youtube.com/watch?v=JLlIAWjvHxM

You can also read about Performance in the docs at: https://rqlite.io/docs/guides/performance/

An important thing to note: this testing was done 4+ years ago, on moderately-powerful hardware for the time. With higher-end, more modern hardware you may get even better results.

otoolep··on Rqlite: Distributed Database Built on SQLite
rqlite[1] creator here, happy to answer any questions.

https://rqlite.io

otoolep··on 100k TPS over a billion rows: the unreasonable effectiveness of SQLite
rqlite creator here, happy to answer any questions.
otoolep··on 100k TPS over a billion rows: the unreasonable effectiveness of SQLite
rqlite[1] creator here.

Nit: dqlite is a library, it is not a network-exposed database like rqlite is. Sure, it requires connecting to other nodes over the network, but local access is via in-process. In contrast one connects with rqlite over the network - HTTP specifically.

[1] https://rqlite.io

otoolep··on Making web testing pleasant in Scheme: Schematra 0.4
rqlite[1] creator here. Thanks for the shout-out in your blog post.

https://rqlite.io

otoolep··on Corrosion
rqlite creator here. Right there on the rqlite homepage[1] are listed two production users: replicated.com[2] and textgroove.com are both using it.

[1] https://rqlite.io/

[2] https://www.replicated.com/blog/app-manager-with-rqlite

otoolep··on Why Is SQLite Coded In C
rqlite[1] author here. Just to be clear, rqlite is not SQLite but rewritten in Go. rqlite uses the vanilla C code, and calls it from Go[2]. I consider that an important advantage over other approaches -- rqlite gets all the benefits of rock-solid[3] SQLite. As result there are no questions about the quality of the database engine.

[1] https://rqlite.io

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

[3] https://www.sqlite.org/testing.html

otoolep··on My development team costs $41.73 a month
>There is a new continuum. "Team" is just a convenient word to emphasize that "Tools" are moving significantly in the "Teams" direction.

Exactly.

otoolep··on My development team costs $41.73 a month
Post author here. Few things.

You are right that when someone (a human) submits a PR it didn't cost me anything (short of my time to review it). But those folks are not a team, not someone I could rely on or direct. Open-source projects -- successful ones -- often turn into a company, and then hire a dev team. We all know this.

I have no plans to commercialize rqlite, and I certainly couldn't afford a team of human developers. But I've got Copilot (and Gemini when I use it) now. So, in a sense, I now do have a team. And it's allowed me to fix bugs and add small features I wouldn't have bothered to in the past. It's definitely faster (20 mins to fire up my computer, write the code, push the PR vs. 5 mins to create the GitHub issue, assign to Copilot, review, and merge).

Case in point: I'm currently adding change-data-capture to rqlite. Development is going faster, but it's also more erratic because I'm reviewing more, and coding less. It reminds me of when I've been a TL of a software team.

otoolep··on My development team costs $41.73 a month
I wonder the same thing myself, wouldn't surprise me if it's heavily subsidized. So much compute being given away for free.
otoolep··on My development team costs $41.73 a month
Also, I don't value Copilot at $41.73. What actually happens is that GitHub charges me $41.73. I value it at way more. The consumer surplus here is substantial, IMHO.
otoolep··on My development team costs $41.73 a month
Blog post author here.

From my perspective I didn't have a development team before. I have one now. I guess I am a member of that team now. But I hadn't thought of it like that -- another strange dimension to working Copilot (and its ilk).

otoolep··on Consistency over Availability: How rqlite Handles the CAP theorem
rqlite creator here -- it's on my list to examine, not clear to me if it would add much beyond what is offered today. But it might.
otoolep··on Consistency over Availability: How rqlite Handles the CAP theorem
rqlite creator here.

What you're describing sounds like "none", but adding the "limit read staleness" requirement. That is described in the docs.

https://rqlite.io/docs/api/read-consistency/#limiting-read-s...

otoolep··on Writing toy software is a joy
rqlite[1] creator here, happy to answer any questions.

If you're interested in writing Raft-backed databases you might be interested in my talk at GopherCon 2023. It walks through doing exactly that, step by step: https://www.youtube.com/watch?v=8XbxQ1Epi5w

[1] https://rqlite.io

otoolep··on Build It Yourself
Related, but not exactly the same: https://blog.gopheracademy.com/advent-2014/case-against-3pl/
otoolep··on How rqlite is tested
Cheers!
otoolep··on How rqlite is tested
Yeah, the client libraries[1] need work. It's been difficult to keep them in good shape when there is so much to do on the core database itself. Any community input very much appreciated for the client libraries!

https://rqlite.io/docs/api/client-libraries/

otoolep··on How rqlite is tested
This? https://github.com/threefoldfoundation/node-status-bot :-)
otoolep··on How rqlite is tested
>The first test of a class of tests is the hardest, but it's almost always worth adding.

Agreed, this has been my experience too.

otoolep··on How rqlite is tested
I actually touched on this topic somewhat in a recent talk at GopherCon: https://youtu.be/8XbxQ1Epi5w?t=2223

The section of the talk at the timestamp above is titled "Should I use Raft"?

Page 1 of 11Next →