Do You Even Need a Database?

April 15, 2026
Elderly woman sorting paperwork in an office setting with organized files.
Photo by Centre for Ageing Better on Pexels

Big idea: files are databases, too

Jay, writing on the DB Pro blog, makes a blunt point: every database is just files. SQLite is a single file. Postgres is a directory of files with a process in front. So the real question is not "files or database?" but "your files or the database's files?" It’s a little heretical — and refreshingly practical. For many early-stage apps, the simplest approach might be perfectly fine.

What they tested

The team built a tiny HTTP service (POST /users, GET /users/:id) backed by three newline-delimited JSON files and implemented three read strategies: read-and-scan the file on every request (O(n)); load the whole file into memory as a hashmap and append to a file on writes; and a disk-oriented strategy that binary-searches records on disk. They implemented versions in Go, Bun (TypeScript), and Rust, and hammered them with wrk to measure real-world behavior rather than theory.

Benchmarks and what they mean

It has been reported that the in-memory + append approach produced surprisingly high throughput — figures mentioned include roughly 25,000 requests per second in their runs — but those numbers come with caveats about dataset size, record shape, and caching. The headline: for many read-heavy, key-by-id workloads, a lightweight file-plus-index strategy can compete with a full database at tiny- to modest-scale. Of course, raw speed is only part of the story. Recovery, concurrency, transactions, complex queries, multi-table joins, access controls, backups and operational tooling are not free. Trade-offs, always.

So when do you reach for a database?

If you need transactions across multiple entities, advanced indexing, complex analytics, multi-user concurrency guarantees, or the operational guarantees of a managed system, a real database is usually the right call. But if you’re an early-stage project or a single-service internal tool with simple access patterns, rolling your own file-backed store can be fast, simple, and delightful — and a lot cheaper to operate. The takeaway? Don’t default to a heavyweight database because it feels safe. Ask: do I actually need those guarantees today? If not, files might do the job — and that’s oddly liberating.

Sources: dbpro.app, Hacker News