Hacker News new | ask | show | jobs
by talkingtab 736 days ago
For niche uses of database I am sure this is true. But if you are not in that niche, then Postgresql is usually a much better choice. For example Firefox uses SQLite, because it wants to store lots of application specific data. It is good for that.

Personally, I find the tooling, documentation, familiarity and quality of Postgresql makes it my choice even in situations where SQLite might work.

6 comments

If I'm not mistaken, Apple's CoreStorage is based on SQLite, so pretty much every Apple device for the last years (or decade, probably) is constantly using tens (or more) SQLite databases, per OS. That includes Macs, Phones, Watches, AppleTV etc. That has got to be more than 3 billion devices (since there are at least 2 billion of the phones in active use).

SQLite is also quite often a CI/CD default when building and testing software where you might want to do some tests without starting an entire RDBMS server.

But I suppose it's different if we think in terms of networked databases, or multiuser.

It's also heavily used on Android, so that's some 3bn devices (based on active users numbers from earlier this year). Plus it's in Firefox, Chrome, and so on.
It's probably on all Electron apps as well, and considering some of the parts of Android and Chromium are used on Smart TVs, head units in cars and game consoles, that's probably at least another 1bn.

Suffice to say SQLite is probably at least 6bn active usages in size.

I think the headline statistic negates the claim that these are "niche" uses of database.
At some point, such local usages were sufficiently non-niche that the temp file extension was changed from "sqlite" to "etilqs" to stem the flood of angry emails about local application databases taking up too much disk space.

(cf. Daniel Stenberg getting angry emails because everybody and their dog embeds libcurl, sometimes multiple times in the same app)

Here's the commit from 18 years ago explaining that change: https://github.com/sqlite/sqlite/commit/fd288f3549a1ab9a309a...

    ** 2006-10-31:  The default prefix used to be "sqlite_".  But then
    ** Mcafee started using SQLite in their anti-virus product and it
    ** started putting files with the "sqlite" name in the c:/temp folder.
    ** This annoyed many windows users.  Those users would then do a 
    ** Google search for "sqlite", find the telephone numbers of the
    ** developers and call to wake them up at night and complain.
    ** For this reason, the default name prefix is changed to be "sqlite" 
    ** spelled backwards.  So the temp files are still identified, but
    ** anybody smart enough to figure out the code is also likely smart
    ** enough to know that calling the developer will not help get rid
    ** of the file.
The most frequent use of it is local storage of application data. Postgres is overkill for that.
The article is about number of installations, instances across all types of devices
I'd guess most programs ever written are single-process programs with no need for the benefits postgres provides over sqlite. Postgres doesn't even have analogous functionality for eg an in-memory sql instance!
It most definitely does and I’m serving several read-only production databases from memory. It is insanely fast if you do it right.

https://www.postgresql.org/docs/current/pgprewarm.html