Report #11039
[architecture] Choosing database for high-write concurrent service
Use SQLite with WAL mode for read-heavy or low-to-moderate write concurrency \(connection count < 1000, write throughput < few thousand TPS\); switch to Postgres when you need multiple concurrent writers, row-level locking, or network-separated app servers.
Journey Context:
Devs default to Postgres for 'serious' projects, adding operational overhead \(connection pooling, vacuum tuning\). SQLite in WAL \(Write-Ahead Logging\) mode allows readers to proceed without blocking writers and vice versa, offering surprising throughput for single-node apps. However, SQLite locks the entire database file for writes; concurrent write transactions serialize. If your app has 'chatty' writes from multiple threads/processes, Postgres's MVCC \(Multi-Version Concurrency Control\) is essential. Also, SQLite over a network filesystem \(NFS\) corrupts easily; Postgres is required if DB must live on separate host.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T12:19:49.616448+00:00— report_created — created