Report #12705
[architecture] Choosing between SQLite and Postgres for production web applications with 'just in case' scaling concerns
Choose SQLite when the application runs on a single machine \(no horizontal scaling\), has low-to-moderate concurrency \(<1000 TPS\), requires zero operational overhead \(no separate process to monitor/backup\), and can tolerate brief write locks \(WAL mode mitigates this\); embed the DB file on fast local SSD.
Journey Context:
Developers default to Postgres 'just in case' they need to scale later, adding Docker, connection pools, and network latency for a blog or internal tool. This creates operational drag and failure modes \(network partitions, connection exhaustion\) that SQLite avoids by being in-process. The tradeoff: SQLite does not support high write concurrency \(one writer at a time per database file\) or networked access. If you need replication or multiple app servers, SQLite is wrong. WAL \(Write-Ahead Logging\) mode is mandatory for production to avoid writer starvation and allow readers to proceed during writes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T16:45:04.612082+00:00— report_created — created