23 comments

  • piterrro9 hours ago
    Having used D1 in production - it&#x27;s not very reliable. There was a comment on HN from one of D1 devs [1] saying that D1 is a sql wrapper on top of durable objects that mimicks sqlite distributed like nature.<p>&gt; I&#x27;ll let you in on a sort of dirty secret: It&#x27;s almost always better to use Durable Objects storage, rather than D1. Even if you only want a single global database, it&#x27;s better to implement that as a singleton Durable Object, than by using D1. Because that&#x27;s all D1 itself actually is: a singleton Durable Object that exposes an API to its SQLite database. It&#x27;s just a wrapper.<p>[1] <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=48611834">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=48611834</a>
    • ruther4d4 hours ago
      D1 also gives read replication and point in time recovery, but my biggest issue with it is you can’t create D1 dbs dynamically like you can with durable objects so things like tenancy are harder
    • unconscionable7 hours ago
      Completely. D1 flaky as hell!
  • vikrantrathore6 hours ago
    Its funny, when I was reading part time parliament paper (paxos) and while learning zig and odin language created a pure paxos library and then the first application for that library was to build a multi-master sqlite. The two approaches I took are very different in case of zig I build zaxonlite (<a href="https:&#x2F;&#x2F;github.com&#x2F;insanai&#x2F;zaxonlite" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;insanai&#x2F;zaxonlite</a>) and have a benchmark on it that includes rqlite. It uses WAL replication as strategy. The second attempt I tried in odin is sqlodin (<a href="https:&#x2F;&#x2F;github.com&#x2F;insanai&#x2F;sqlodin" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;insanai&#x2F;sqlodin</a>), in this the system does not use WAL but run sql query on each node, as result subset of sql query in sqlite are not supported.
    • thadt2 hours ago
      Wow, a 155 page book for a relatively new project is interesting - what was your workflow for that? It looks mostly generated - is it used in its entirety as context to a top-level agent when working on new features, or are you directing it to just take relevant subsections? Why the PDF output (it does look nice)?
  • mmnfrdmcx4 hours ago
    As someone who loved sqlite and the simplicity, the truth is that with agents I am finding it is extremely easy to manage postgres and it is realyl nice having all the SQL features of postgres -- sqlite is quite limiting in a lot of SQL. So if you are considering remote sqlite and all that, feels a better time than ever to just use a database server. Of course, sqlite is amazing for local tools etc.
  • AgentME4 hours ago
    The comparisons between various projects, including between rqlite and Litestream, were interesting. (rqlite uses a consensus algorithm between nodes to keep them synced and allow changing the primary node, while Litestream just syncs itself to S3 so another node could take over with the data from there.)<p>I fully expected the article to get into D1 shortly and mention how that&#x27;s about the same relationship between Cloudflare Durable Objects (which D1 is based on) and celld, an open source reimplementation of Cloudflare Durable Objects which writes to S3. But then the article treats D1 with a very sudden snarky disinterest, and then the final section feels very awkwardly defensive of rqlite and defeatist.
  • Kinrany9 hours ago
    Is there a project that does all of these together?<p>- embeddable like sqlite<p>- clustered like dqlite<p>- has a standalone node like rqlite<p>- can be backed up to S3 like litesteeam<p>- optionally AP like cr-sqlite alongside CP
    • punnerud8 hours ago
      <a href="https:&#x2F;&#x2F;github.com&#x2F;punnerud&#x2F;mpedb" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;punnerud&#x2F;mpedb</a> is not there yet, focused on sync between sqlite3, Postgresql and Oracle. Shown that concurrent writes to sqlite3 is possible at the speed of Postgresql (My own project)
    • thriftwy5 hours ago
      This sounds a lot like Apache Ignite 2.x, though it does not have SQLite&#x27;s level of polish.
      • Kinrany3 hours ago
        It&#x27;s never going to be embeddable, no?
        • thriftwy2 hours ago
          It is a set of Java dependencies so a full data-bearing Ignite node will happily be an in-process part of your Java monolithic app or microservice. It has likewise bindings for .Net and some other languages but not so seamless as in case of JVM.
  • klamann7 hours ago
    If you don&#x27;t get any joy out of writing about your personal experiences in your own voice, why bother writing about them at all?
    • formerly_proven5 hours ago
      Kinda grating to have the story of your project told in default Claudese, to be honest.
    • phrotoma4 hours ago
      I get zero LLM vibes from this blog post.
      • AgentME3 hours ago
        It&#x27;s loaded with it to my eyes. (Pangram also agrees and flags the whole post as AI generated.)<p><pre><code> # 2014: rqlite The need was concrete. # Before 2014, and alongside it Two things deserve mention for honesty’s sake. </code></pre> (the above line is extremely typical of Claude Opus 4.8 and 5.0)<p><pre><code> [...] and the main difference is of one of packaging: # What the twelve years show Three things, I think. The core was right. [...] Nobody has found a reason to stop doing it. The design space has three corners, and they appeared in order. </code></pre> (What order? The corners of this design space, which aren&#x27;t spelled out until the following sentence, don&#x27;t have any other natural ordering. This type of misapplied flourish feels very typical of LLMs.)
        • bomewish1 hour ago
          Yeah it felt like claudeslop to me too — and such a strange choice. Maybe dude dictated it and said Claude to write it up. Save some time. Even so.
      • klamann1 hour ago
        I envy you. For better or worse, Claude is the author I&#x27;ve read the most in this year. There&#x27;s a handful of human authors I know well enough so that I would recognize a text that was written by them. With LLMs, it&#x27;s much easier than with humans, since the current generation of LLMs seems utterly incapable of changing their style.
      • dizhn3 hours ago
        There are a bunch but in my opinion not conclusive.
  • gizzlon6 hours ago
    I&#x27;ve been looking for a reason to use rqlite, but so far sqlite + litestream have been safe enough (some dataloss acceptable in extreme cases)<p>My understanding is that rqlite gives you &quot;stored in more than place&quot; guarantees, which is nice if you need it. Much slower than a 1 node db though.
  • chasil11 hours ago
    I have never examined this in any detail before. It looks far easier than the mass majority of clustered database architectures.<p><a href="https:&#x2F;&#x2F;rqlite.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;rqlite.io&#x2F;</a>
    • qaq10 hours ago
      using it for control layer pretty happy so far
      • gizzlon6 hours ago
        can you query the local rqlite, or do you always have to go to the leader?
        • jasonjayr27 minutes ago
          Last time I looked into it, you <i>CAN</i> bypass the rqlite raft layer, and hit the local sqlite directly, but you are not guaranteed consistency. Depending on your use case, that may be okay.
        • pizzafeelsright5 hours ago
          docs - Queries, by default, are also serviced by the cluster Leader.<p>it is great, fun, easy.
      • lukaslalinsky5 hours ago
        How long have you been using it? I&#x27;ve always been disappointed with similar systems, etcd including.
  • joostdecock8 hours ago
    We use rqlite in production, it&#x27;s the database we chose for (the control plane of) an open source observability solution we&#x27;re building (morio.it).<p>Just came here to say two things:<p>- rqlite is amazing and warmly recommend - Philip is an exceptionally dedicated, kind, and helpful maintainer<p>5 stars, no notes. Thank you Philip, I&#x27;m eternally grateful for all your great work.
  • brooksbp10 hours ago
    Was a fun read until the end where the author made damn sure that history records who drew the blueprint.
    • pbowyer7 hours ago
      Seems fair to me. The VC-backed SQLite services have been shouting about their services as if they came up with the idea, and this only balances that out.<p>He&#x27;s right that histories start too late, and I&#x27;d like to see more posts like this that trace the history back further than the last 5 years. Like for databases, a lot can go back 20+ years and it&#x27;s good to read how the idea came about (independently from many people), how it developed over time and why.
    • Scaevolus8 hours ago
      &quot;Honesty&quot; is what crossed the threshold for me. It&#x27;s pretty weird to spend 12 years on something and not bother to write the thousand word history yourself.
  • jwr5 hours ago
    So, has this been Jepsen-tested yet?<p>Because if it hasn&#x27;t, it&#x27;s likely there are problems lurking.
    • tmsln2 hours ago
      <a href="https:&#x2F;&#x2F;philipotoole.com&#x2F;testing-rqlite-read-consistency&#x2F;" rel="nofollow">https:&#x2F;&#x2F;philipotoole.com&#x2F;testing-rqlite-read-consistency&#x2F;</a>
    • maxkaya5 hours ago
      [flagged]
  • tra310 hours ago
    I know that latest rails suggests SQLite as one of the production options. I don’t get how it’d work with concurrent access though. Time to look into it.
    • nchmy2 hours ago
      Because sqlite is extremely fast. Most projects won&#x27;t hit its limits
    • npn10 hours ago
      Wal or wal2 can help you with that.
    • bendangelo9 hours ago
      Can use one sqlite per tenant or look into the new multi writer lib on github.
      • ImJasonH4 hours ago
        This one? <a href="https:&#x2F;&#x2F;github.com&#x2F;sqliteai&#x2F;sqlite-multiwriter" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sqliteai&#x2F;sqlite-multiwriter</a>
  • bfren8 hours ago
    I maintain one of the client libraries for rqlite - I’ve found it an excellent concept really well implemented. One of my favourite bits is it gives you back json making Dapper-like mapping super easy in .NET and I suspect other languages.
  • feverzsj11 hours ago
    There is also hctree from sqlite.
  • esafak12 hours ago
    Very timely for me. I run dqlite in a small cluster and I&#x27;m looking to move off it to something more robust. What&#x27;s recommended in this regime?
    • oblio11 hours ago
      What kind of issues did you run into?
      • esafak11 hours ago
        Loads of &#x27;500 database locked&#x27; errors. <a href="https:&#x2F;&#x2F;github.com&#x2F;canonical&#x2F;dqlite&#x2F;issues&#x2F;908" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;canonical&#x2F;dqlite&#x2F;issues&#x2F;908</a>
  • a3nz3g11 hours ago
    Like the idea of distributed SQLite, but do we have benchmark? What use cases it has advantage?
  • Jeeetendra13 minutes ago
    [flagged]
  • usefulbasis59 minutes ago
    [flagged]
  • arbor-group1 hour ago
    [flagged]
  • toccter2 hours ago
    [flagged]
  • latencyharbor10 hours ago
    [flagged]
  • ravivarmat7 hours ago
    [flagged]