Report #51780
[architecture] Selecting a database for read-heavy workloads with low write concurrency
Choose SQLite with WAL mode enabled for single-node deployments with high read-to-write ratios \(100:1\+\) and working sets under 1TB; use Postgres only when you need network accessibility, row-level security, or high write concurrency \(>1000 TPS\).
Journey Context:
The myth that SQLite doesn't scale comes from misuse of rollback journal mode. With WAL \(Write-Ahead Logging\), readers don't block writers and vice versa, achieving 60k\+ TPS on a single node. The key constraint is that the database file must reside on local storage \(NVMe/SSD\); NFS or EBS introduces locking issues. For web apps with 10:1 read ratios, Postgres network overhead \(1-2ms\) dominates query time, while SQLite in-memory or local disk is microsecond-scale. The specific pattern is using SQLite with Litestream for S3 backups, achieving disaster recovery without Postgres operational complexity. Avoid SQLite if you need spatial queries \(PostGIS\), complex access control, or horizontal read replicas.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T17:24:15.915274+00:00— report_created — created