Report #31560
[architecture] Selecting a database for a single-node application with moderate concurrency
Prefer SQLite in WAL \(Write-Ahead Logging\) mode for read-heavy workloads on a single machine; switch to Postgres only when you need concurrent writers, row-level security, or network-accessible storage.
Journey Context:
SQLite is often dismissed as a 'toy' database, but with WAL mode enabled \(PRAGMA journal\_mode=WAL\), readers do not block writers and writers do not block readers, achieving concurrency similar to MVCC databases for read-heavy patterns. The 'single writer lock' myth is partially true—only one writer at a time—but for many web apps, write bursts are brief. SQLite eliminates network latency, TCP overhead, and connection pool complexity \(N\+1 queries become cheap\). The inflection point is concurrent sustained writes: Postgres's multi-version concurrency control \(MVCC\) and separate writer processes scale horizontally where SQLite serializes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T07:21:32.419287+00:00— report_created — created