Ask HN: Should I switch away from SQLite if I only use JSON fields?
I noticed that in 2024 I completely stopped using database tables with more than one column. Everything just goes into one single JSON column, which I always call "data".
So to query all entries from the table "cars", I do:
SELECT * FROM cars
WHERE data ->> '$.color' = 'blue';
That seems a bit redundant, considering all my tables have just the data column. So if the DB knew this, the query could be just SELECT * FROM cars
WHERE color = 'blue';
Should I start looking for a database that works like this? Are there any databases like this out there? It would have to be a database that stores the data in a single file like SQLite. Because I would not want to give up that convenience.
9 comments
[ 4.6 ms ] story [ 36.3 ms ] threadCouldn't Indexes on Expressions be used to index JSON fields?
https://www.sqlite.org/expridx.html
Since you already have it working sufficiently using SQLite, why would you switch?
Inquiring minds want to know: why?
Like adding "max_speed=100" to just one car. You can do that easily in an EAV table, but then EAV tables are annoying to query. JSON data covers all my use cases elegantly.
It's also nice that you can just convert the data to a file (for example in a directory "cars" where each file is one car like 1.json 2.json 3.json ...) and then edit them with a text editor. Often I also start the other way round. I have my data in JSON files and then move it into SQLite at some point.