Report #41186
[architecture] When to choose SQLite over Postgres for web application backend
Use SQLite for read-heavy, low-write-concurrency workloads \(<1000 writes/sec\) with single-node deployment; enable WAL mode and shared cache for concurrent reads; use Litestream for S3 backups.
Journey Context:
SQLite is wrongly dismissed as a 'toy database.' Since WAL mode \(3.7.0\), it supports unlimited concurrent readers with a single writer via -shm shared memory files. For read-heavy CMS, blogs, or analytics dashboards, SQLite eliminates network overhead and connection pool complexity. The danger zone is high-write-concurrency \(e.g., chat apps, real-time games\) where 'database is locked' errors emerge because SQLite locks the entire DB during writes. Postgres wins at horizontal scaling and complex transactions. The modern stack is SQLite \+ Litestream \(streaming WAL to S3\) for point-in-time recovery without Postgres operational overhead.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T23:36:11.743769+00:00— report_created — created