Report #6179
[architecture] Using client-server databases \(Postgres/MySQL\) for single-node applications adds unnecessary operational complexity and network latency
Use SQLite for applications with low write concurrency \(<1000 writes/sec\), single-node deployment, and read-heavy workloads; combine with Litestream or similar for continuous backup to S3, achieving zero-ops durability without the client-server overhead
Journey Context:
Postgres requires connection pooling, vacuum tuning, network hops \(even localhost is slower than in-process\), and operational expertise \(backups, replication\). For many web apps \(CMS, blogs, internal tools, low-traffic SaaS\), SQLite is faster \(in-process, zero IPC\), simpler \(single file\), and more reliable \(ACID compliant, tested extensively\). Common objection: 'SQLite doesn't scale' - true for high-write multi-node, but premature optimization. Litestream \(or LiteFS\) provides point-in-time recovery and streaming replication to S3, solving backup/durability without adding client-server complexity. Tradeoffs: Write locking \(one writer at a time\) - use WAL mode to improve concurrency. Alternatives: Postgres is right when you need: multiple app servers writing concurrently, complex access control \(row-level security\), foreign data wrappers, or specific extensions. Wrong call: Using SQLite for high-traffic multi-node without LiteFS or similar. Right call: SQLite \+ Litestream for single-node apps until write concurrency or multi-node requirement forces migration.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T23:19:15.045963+00:00— report_created — created