this post was submitted on 27 Jul 2024
850 points (97.9% liked)

Programmer Humor

19817 readers
74 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 7 points 4 months ago (4 children)

I'm no expert in JSON, but don't you lose the ability to filter it before your application receives it all? If you had a reasonable amount of data then in SQL you can add WHERE clause and cut down what you get back so you could end up processing a lot less data than in your JSON example, even with the duplicated top table data. Plus if you're sensible you can ensure you're not bringing back more fields than you need.

[–] mousetail 3 points 4 months ago

It's entirely possible to sort and filter inside JSON data in most SQL dialects. You can even add indexes.

[–] [email protected] 2 points 4 months ago (1 children)

In a traditional SQL database, yeah. In various document-oriented (NoSQL) databases, though, you can do that.

[–] [email protected] 5 points 4 months ago (1 children)

Modern relational databases have support for it too including indexes etc. For example postgres.

[–] mousetail 2 points 4 months ago

Every major SQL database supports json manipulation nowadays. I know MariaDB and MySQL and SQLite at least support it natively.

[–] [email protected] 2 points 4 months ago* (last edited 4 months ago)

If there's commonly used data that would be good for indexing or filtering, you can take a few key values and keep them stored in their own fields.

There are also often functions that can parse structured text like XML or JSON so you can store data in blobs but not actually need to query all the blobs out to a client to use them on the database side and retrieve specific values. Another nice thing about blobs is the data can be somewhat flexible in structure. If i need to add a field to something that is a key/value pair inside a blob, i dont necessarily have to change a bunch of table schemas to get the functionality on the front end that I'm after. Just add a few keys inside the blob.