SQLite the only database you will ever need in most cases

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • ONLYOFFICE ONLYOFFICE Docs — document collaboration in your environment
  • CodiumAI - TestGPT | Generating meaningful tests for busy devs
  • SonarLint - Clean code begins in your IDE with SonarLint
  • InfluxDB - Access the most powerful time series database as a service
  • litestream

    Streaming replication for SQLite.

    Also worth mentioning Fly.io's work on LiteStream [1] and LiteFS [2] giving SQLite important S3 DR/reliability & multi-node replication and scalability opens SQLite up to even more use-cases.

    We're making use of this ourselves in https://blazordiffusion.com which runs entirely on SQLite, using Litestream to replicate it to Cloudflare's R2 object storage which is running on a single Hetzner US Cloud VM at €13 /mo.

    As we believe SQLite + Litestream is a very cost effective solution that can support a large number of App's data requirements we've added first-class support to add SQLite + Litestream support in our Project templates [3] which uses GitHub Actions to run Docker compose App deployments along with setting up Litestream replication to AWS S3, Azure Blob Storage and SFTP in a sidecar container that also includes support running DB Migrations on Server with Rollback on failure. If anyone's looking to do something similar, the GitHub Actions that enable this are being maintained at [4].

    [1] https://litestream.io

    [2] https://fly.io/blog/introducing-litefs/

    [3] https://docs.servicestack.net/ormlite/litestream

    [4] https://github.com/ServiceStack/mix/tree/master/actions

  • cheapo_website

    An experiment in production SQLite on render.com and fly.io

    Thank you for the thoughtful response.

    I was looking at https://github.com/irskep/cheapo_website from commenter irskep above, and they make a nice point that render.com has automatic daily backups, solving 4)

    However, in another comment they mention "You can't(?) run migrations from another process" and that "people don't talk about the completely ordinary need to run migrations on a database".

    I guess this is also the piece that I'm missing. How do I run migrations? Do I deploy a new version with the migration and temporarily take down the server? I'm glad to do that.

    I guess I'm also walking through this because---as I said---I'd love just to switch to SQLite but I'm still not sure how many simple non-esoteric gotchas will pop up.

  • ONLYOFFICE

    ONLYOFFICE Docs — document collaboration in your environment. Powerful document editing and collaboration in your app or environment. Ultimate security, API and 30+ ready connectors, SaaS or on-premises

  • rqlite

    The lightweight, distributed relational database built on SQLite

    This project comes to mind https://github.com/rqlite/rqlite but I've never used it, and I'm not sure if it would count as "pure sqlite" like the op advocated anymore.

  • dqlite

    Embeddable, replicated and fault tolerant SQL engine.

  • mix

    Maintain web mix gists (by ServiceStack)

    Also worth mentioning Fly.io's work on LiteStream [1] and LiteFS [2] giving SQLite important S3 DR/reliability & multi-node replication and scalability opens SQLite up to even more use-cases.

    We're making use of this ourselves in https://blazordiffusion.com which runs entirely on SQLite, using Litestream to replicate it to Cloudflare's R2 object storage which is running on a single Hetzner US Cloud VM at €13 /mo.

    As we believe SQLite + Litestream is a very cost effective solution that can support a large number of App's data requirements we've added first-class support to add SQLite + Litestream support in our Project templates [3] which uses GitHub Actions to run Docker compose App deployments along with setting up Litestream replication to AWS S3, Azure Blob Storage and SFTP in a sidecar container that also includes support running DB Migrations on Server with Rollback on failure. If anyone's looking to do something similar, the GitHub Actions that enable this are being maintained at [4].

    [1] https://litestream.io

    [2] https://fly.io/blog/introducing-litefs/

    [3] https://docs.servicestack.net/ormlite/litestream

    [4] https://github.com/ServiceStack/mix/tree/master/actions

  • litefs-js

    JavaScript utilities for working with LiteFS on Fly.io

    Also worth mentioning Fly.io's work on LiteStream [1] and LiteFS [2] giving SQLite important S3 DR/reliability & multi-node replication and scalability opens SQLite up to even more use-cases.

    We're making use of this ourselves in https://blazordiffusion.com which runs entirely on SQLite, using Litestream to replicate it to Cloudflare's R2 object storage which is running on a single Hetzner US Cloud VM at €13 /mo.

    As we believe SQLite + Litestream is a very cost effective solution that can support a large number of App's data requirements we've added first-class support to add SQLite + Litestream support in our Project templates [3] which uses GitHub Actions to run Docker compose App deployments along with setting up Litestream replication to AWS S3, Azure Blob Storage and SFTP in a sidecar container that also includes support running DB Migrations on Server with Rollback on failure. If anyone's looking to do something similar, the GitHub Actions that enable this are being maintained at [4].

    [1] https://litestream.io

    [2] https://fly.io/blog/introducing-litefs/

    [3] https://docs.servicestack.net/ormlite/litestream

    [4] https://github.com/ServiceStack/mix/tree/master/actions

  • postgresql-embedded

    Embedded PostgreSQL Server

    > In contrast to many other database management systems, SQLite is not a client-server database engine, but you actually very rarely need that. If your application software runs on the same physical machine as the database, which is what most small to medium sized web applications does, then you probably only need SQLite.

    Disagree.

    If you think about it from an attack surface perspective, there are numerous advantages to isolating the database. There are performance, availability, sharding, and columnar options out there also that may better meet the use-case (just to name a few). I have ran Postgres on endpoints when developing with performance akin to SQLite. Further, there are numerous ways in which to increase performance, availability, or to pursue some of the more customized versions of Postgres depending on use-case. One of the times I used Postgres was with Oracle DBAs, and they found the transition pretty simple.

    Various customizations / extensions / versions of PG

    There are security versions e.g. https://www.crunchydata.com/products/hardened-postgres

    Columnar / high performance Parallelized extensions e.g. https://www.citusdata.com/product

    General Purpose / Oracle transitions e.g. https://www.citusdata.com/product

    Yandex even has an embedded Postgres https://github.com/yandex-qatools/postgresql-embedded

    If you'd like to see a full list of features see https://www.postgresql.org/about/featurematrix/

    More than this though, PG has a really excellent community with a large amount of talented folks, available both individually and through OSS oriented companies https://www.postgresql.org/support/professional_support/ and willing to help out on Libera https://www.postgresql.org/about/news/migration-of-postgresq...

  • CodiumAI

    TestGPT | Generating meaningful tests for busy devs. Get non-trivial tests (and trivial, too!) suggested right inside your IDE, so you can code smart, create more value, and stay confident when you push.

  • sqlitebrowser

    Official home of the DB Browser for SQLite (DB4S) project. Previously known as "SQLite Database Browser" and "Database Browser for SQLite". Website at:

    Check out: https://sqlitebrowser.org/

    You may also need the SQLite command-line tools from the SQLite website;

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts