That is a really big schema choice imposed on developers and the root cause of for instance why it took years to be able to create good indexes on inner fields, and they still can't do it efficiently.
The same can be said for simple key value stores.
True schemaless databases are much rarer and provide developers orders of magnitude increases in terms of flexibility, expression and speed.
Unfortunately these kinds of databases are not readily available to a broad audience. It's also the case that for the majority of jobs and developers SQL based stores are still a very good choice unless you need to deal with huge amounts of data from disparate sources without bringing down the system.
Don't get me wrong, I'd probably pick a traditional RDBMS over MongoDB for most projects, but the object-relational impedance mismatch is a real problem.
I don't think so. You could say exactly the same thing about maintaining tests for your code. Explicit schemas and constraints (and the effort that goes along with maintaining them) are very much like having tests for your data. They both help ensure that your code actually works when it needs to.
All these are trade-offs and everyone decides what is more important for them.
It does so for the entire << 1ms it takes to add the necessary metadata.
In either case a lock has to be acquired on the table, which means if there's a longrunning transaction, you can end up blocking for a while...
> Your data has a schema, whether you're explicit about it or not,
Partially true, but not accurate. Often the items in a data set have similar schemas, but not exact the same one.
Data has schema by definition otherwise you wouldn't be able to reason about it.
Seems like a recipe for disaster to me, but well... A database isn't a "storage format". It's most often the single source of truth for a set of information.
Not being fully sure what data you expect from that source of truth and yet being able to query it is really dangerous. What if you start to update this data after having nullified things you didn't understand ?
I recognize some people do try to use schemaless databases in the way you're describing, and I agree that's weird and dangerous.