Fly.io Buys Litestream

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

Our great sponsors
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • SonarQube - Static code analysis for 29 languages.
  • Mergify - Updating dependencies is time-consuming.
  • dqlite

    Embeddable, replicated and fault tolerant SQL engine.

    https://dqlite.io/

    I’m sure there’s more, those are just the ones I remember.

  • Prisma

    Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB

    Note that the popular Node.js ORM Prisma does not support WAL.

    https://github.com/prisma/prisma/issues/3303

  • InfluxDB

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

  • exqlite

    An SQLite3 driver for Elixir

    > Is support for SQLite in the Elixir ecosystem, particularly Ecto, good enough for this?

    Why yes it is. I maintain the `exqlite` and `ecto_sqlite3` libraries and it was just integrated in with `kino_db` which is used by `livebook`.

    https://github.com/elixir-sqlite/exqlite

  • litestream-base

    A base Docker image for adding Litestream to apps

    Litestream does a couple of things. It started as a way to continuously back sqlite files up to s3. Then Ben added read replicas – you can configure Litestream to replicate from a "primary" litestream server. It's still limited to a single writer, but there's no s3 in play. You get async replication to other VMs: https://github.com/fly-apps/litestream-base

    We have a feature for redirecting HTTP requests that perform writes to a single VM. This makes Litestream + replicas workable for most fullstack apps: https://fly.io/blog/globally-distributed-postgres/

    It's not a perfect setup, though. You have to take the writer down to do a deploy. The next big Litestream release should solve that, and is part of what's teased in the post.

  • chiselstore

    SQLite + Little Raft = 🚀

  • Phoenix

    Peace of mind from prototype to production

    It already has it [1]. Native litestream that RPC's to the primary sounds interesting though!

    [1] https://github.com/phoenixframework/phoenix/pull/4268

  • better-sqlite3

    The fastest and simplest library for SQLite3 in Node.js.

    Best option for SQlite with node is this.

    https://github.com/JoshuaWise/better-sqlite3

    He's all over the issues section, and seems very knowledgeable about how SQLite works.

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • rapid-cg

    Rapid Application Development Code Generators

    I agree with this article! I even went so far as to write a Prisma-like SQL client generator that uses better-sqlite3 under the hood, so you get the nice API of Prisma and the synchronous performance of better-sqlite3. I’ve been using it for a few small projects, but I just released it at 1.0 yesterday.

    https://github.com/CGamesPlay/rapid-cg

  • actordb

    ActorDB distributed SQL database

  • litestream

    Streaming replication for SQLite.

  • rqlite

    The lightweight, distributed relational database built on SQLite

  • Bedrock

    Rock solid distributed database specializing in active/active automatic failover and WAN replication (by Expensify)

  • sqlite_fdw

    SQLite Foreign Data Wrapper for PostgreSQL

    I've not done this but it's intriguing; potentially a best-of-all-worlds solution.

    I think "proper" automatic replication is not possible given the mismatch between Postgres and SQLite - not everything in Postgres maps to a thing that is possible in Postgres.

    That said, there are a variety of ways to get data out of Postgres, and a variety of ways to get things into SQLite.

    You could periodically export CSVs or whatever from Postgres and periodically import them into SQLite.

    Or you could do a more realtime sync by using a Postgres foreign data wrapper like this one: https://github.com/pgspider/sqlite_fdw which would let you write directly to SQLite. Combine that with database triggers on the Postgres side of things and you've got something pretty close to realtime replication.

    Those sorts of solutions wouldn't be as robust as "real" replication, but could be very useful for a lot of scenarios. You could have Postgres importing gobs of data, and "replicating" it over to your reporting server which uses SQLite as a data source.

  • honeysql

    Turn Clojure data structures into SQL

    I've used it from Clojure, via HoneySQL, so no ORM, no danger of SQL injection. It was really wonderful!

    https://github.com/seancorfield/honeysql

    I used it to quickly iterate on the development of migration SQL scripts for a MySQL DB, which was running in production on RDS.

    I might have switched to H2 DB later, because that was more compatible with MariaDB, but I could use the same Clojure code, representing the SQL queries, because HoneySQL can emit different syntaxes.

  • Mergify

    Updating dependencies is time-consuming.. Solutions like Dependabot or Renovate update but don't merge dependencies. You need to do it manually while it could be fully automated! Add a Merge Queue to your workflow and stop caring about PR management & merging. Try Mergify for free.

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