This has become a little pet peeve of mine and it’s a bit of a rant. So be warned and exit now :).
I’m getting tired of people who are walking around saying that it’s so nice with document databases because you don’t need a schema. ”You can just insert whatever…”
My issue with this is that I feel they can never have maintained a solution like that.
The schema is always there but if it’s not in the database it’s in the code. I read somewhere that it can be called a on-read-schema (in opposite of a on-write-schema) which I think sums it up nicely.
Example
I have a document database and I’m storing the full address in a field. Then we decide to split it up in street address, zip and city. I can directly start inserting it in that format but when I read the posts I need to put some logic in place to handle this (a schema that is).
if (entry.full_address && entry.full_address.lenght > 0) {
street = getStreetFromFullAddress(entry.full_address)
zip_code = getZipFromFullAddress(entry.full_address)
city = getCityFromFullAddress(entry.full_address)
} else {
street = entry.street
zip_code = entry.zip
city = entry.city
}
That said. I think document databases are awesome, at certain things and less good at others. Use the right tool for the job man and for the right reasons!