> There's no separate database server. You open the database file through SQLite's C API.

> Every request spawns a fresh process.

How does it work when multiple concurrent requests are possible? Does SQLite allow simultaneous write access from multiple processes?

SQLite does allow write access from mulitple processes - file locks (fcntl) are used to ensure at any given moment only one of processes modifies the database (or WAL if WAL is enabled).

SQLite can handle multiple concurrent requests if it's set to WAL mode. Reading is all non-blocking/concurrent but writing is still synchronous. You should also set the "busy timeout" or else your blocked writes will timeout immediately.

In Wal mode you can have multiple readers. Writers block, but because there is no network traffic, the writers finish very quickly, so in practice you don't usually wait that long.

Users who send concurrent requests will be summarily banned and their data deleted. It's the only way to be sure.

SQLite is a database. The main idea of a database is to support concurrent reads/writes although databases differ in how much concurrency they allow

The answer is more complicated for SQLite: https://sqlite.org/isolation.html

> There can only be a single writer at a time to an SQLite database. There can be multiple database connections open at the same time, and all of those database connections can write to the database file, but they have to take turns.

However, it can also be configured in WAL mode where the single writer is applying WALs while the applications append to the log.

The main idea of a database is to support storing data in a structured and queryable way. Concurrency came later.