CharlesW
10 hours ago
Pocketbase is already the poor man's BaaS, and is minimalist compared to the two others mentioned.
> Data stored in human-readable CSVs
The choice to not use a database when two near-perfect tiny candidates exist, and furthermore to choose the notorious CSV format for storing data, is absolutely mystifying. One can use their Wasm builds if platform-specific binaries offend.
SOLAR_FIELDS
4 hours ago
I just deployed a wasm built SQLite with FTS5 enabled and it’s insane what it is capable of. It’s basically elasticsearch entirely on the client. It’s not entirely as robust as ES but it’s like 80% of the way there, and I repeat, it runs on the client side on your phone or any other SQLite supported device
loeber
9 hours ago
In 2025, pretending that a CSV can be a reasonable alternative to a database because it is "smaller" is just wild. Totally unconscionable.
r0fl
8 hours ago
I use CSV files to run multiple sites with 40,000+ pages each. Close to 1mil pages total
Super fast
Can’t hack me because those CSV files are stored elsewhere and only pulled on build
Free, ultra fast, no latency. Every alternative I’ve tried is slower and eventually costs money.
CSV files stored on GitHub/vercel/netlify/cloudflare pages can scale to millions of rows for free if divided properly
vineyardmike
8 hours ago
Can't argue with what works, but...
All these benefits also apply to SQLite, but SQLite is also typed, indexed, and works with tons of tools and libraries.
It can even be stored as a static file on various serving options mentioned above. Even better, it can be served on a per-page basis, so you can download just the index to the client, who can query for specific chunks of the database, further reducing the bandwidth required to serve.
deepsun
5 hours ago
Just to be pedantic, SQLite is not really typed. I'd call them type-hints, like in Python. Their (bad IMHO) arguments for it: https://www.sqlite.org/flextypegood.html
newlisp
4 hours ago
dragonwriter
3 hours ago
A sibling comment posted a blind link whose contents address this, but (for the benefit of people who aren't likely to follow such links), recent versions of SQLite support STRICT tables which are rigidly typed, if you have a meed tor that instead of the default loose type affinity system.
edmundsauto
5 hours ago
Don’t you think it’s better in this dimension than CSV though? It seems to me like it’s a strictly better improvement than the other option discussed.
ezekiel68
3 hours ago
TBH this is why I've never messed with SQLite.
If I want to bother with a SQL database, I at least want the benefit of the physical layer compressing data to the declared types and PostgreSQL scales down surprisingly well to lower-resource (by 2025 standards) environments.
MobiusHorizons
2 hours ago
How exactly do you anticipate using Postgres on client? Or are you ignoring the problem statement and saying it’s better to run a backend?
throwaway032023
38 minutes ago
user
3 hours ago
Drew_
7 hours ago
It sounds like you use CSVs to build static websites, not store or update any dynamic data. That's not even remotely comparable.
AbraKdabra
6 hours ago
So... SQLite with less features basically.
akudha
8 hours ago
Is this a static website? If yes, what do you use to build?
ncruces
8 hours ago
In 2020 Tailscale used a JSON file.
CharlesW
8 hours ago
If you continue reading, you'll see that they were forced to ditch JSON for a proper key-value database.
ncruces
7 hours ago
I know. Now see how far JSON got them.
So why wouldn't you just use a text format to persist a personal website a handful of people might use?
I created one of the SQLite drivers, but why would you bring in a dependency that might not be available in a decade unless you really need it? (SQLite will be there in 2035, but maybe not the current Go drivers)
deepsun
5 hours ago
It's self-restriction, like driving a car not using the rear view mirror. Or using "while" loops always instead of "for" loops.
It's great for an extra challenge. Or for writing good literature.
moritzwarhier
4 hours ago
You didn't really answer the dependency argument though.
Until the data for a static website becomes large enough to make JSON parsing a bottleneck, where is the problem?
I know, it's not generally suitable to store data for quick access of arbitrary pieces without parsing the whole file.
But if you use it at build time anyway (that's how I read the argument), it's pretty likely that you never will reach this bottleneck that makes you require any DBMS. Your site is static, you don't need to serve any database requests.
There is also huge overhead in powering static websites by a full-blown DBMS, in the worst case serving predictable requests without caching.
So many websites are powered by MySQL while essentially being static... and there are often unnecessarily complicated layers of caching to allow that.
But I'm not arguing against these layers per se (the end result is the same), it's just that, if your ecosystem is already built on JSON as data storage, it might be completely unneeded to pull in another dependency.
Not the same as restricting syntax within one programming language.
nullishdomain
8 hours ago
Not so sure about this. At scale, sure, but how many apps are out there that perform basic CRUD for a few thousand records max and don't need the various benefits and guarantees a DB provides?
sieabahlpark
an hour ago
[dead]
skeeter2020
10 hours ago
I agree on both your main points. It's not like PB has a bunch of cruft and fat to trim. The BD of the project is very aggressive in constraining scope, which is one of the reasons it's so good. The CSV-thing feels like an academic exercise. The fact I can't open an SQLite database in my text editor is a little thin, considering many tools are lighter weight than text editors, and "reading" a database (any format) is seldom the goal. You probably want to query it so the first thing you need to do here is import the CSV into DuckDB and write a bunch of queries with "WHERE active=1"
bravesoul2
3 hours ago
For local use cases this could be useful. Run locally. Do your thing. Edit with Excel or tool of choice.
Also one less dependency.
zffr
9 hours ago
What’s the other candidate besides pocketbase?
CharlesW
8 hours ago
Apologies to anyone who found this unclear — the two near-perfect tiny candidate databases are SQLite and DuckDB.
zffr
8 hours ago
My understanding is that SQLite is OLTP and duckdb is OLAP. Duckdb is column based so not a great fit for a traditional backend db
jonny_eh
9 hours ago
Firebase, Supabase, Pocketbase