← Back to context

Comment by pseudohadamard

14 days ago

I don't know enough about the scale of Tailscale's operations to comment strongly on this, but if they're fairly significant shouldn't that have read "is exactly how MariaDB is meant to be used" or "exactly how Postgres is meant to be used"? SQLite has a "lite" in the name for a reason, but it's often pushed into places where it's being asked to do things it was never really designed for.

> SQLite has a "lite" in the name for a reason

I would not think of SQLite as "lite" anything. It's SQL In The Executable.

It has a better security and data-durability track record than both Postgres and MySQL, and often beats them in the sorts of things applications do with databases:

https://sqlite.org/speed.html

> it's often pushed into places where it's being asked to do things it was never really designed for

https://sqlite.org/whentouse.html

https://sqlite.org/hirely.html

Seems like it absolutely is "designed" for this use case.

> SQLite has a "lite" in the name for a reason

It"s actually SQL "ite" as in rocks, minerals and fossils. Their version control system is called "Fossil".

This particular bug doesn’t seem to arise from SQLite’s “lite” nature. It’s a TOCTOU inside the DB when applying WAL segments in a checkpoint, which is a pattern used in extremely similar ways by Postgres and MySQL. They don’t seem to have similar bugs, but I don’t think there’s any reason to believe that this is due to their being client/server rather than coordinated-file databases.