I have to ask myself this far too often.

I used traditional relational dbs for most of our solutions for about 8-9 years. I now also use mongo, probably for over half our stuff now. It is not an "sql killer" but its much better than a relational db for some tasks, and worse for others. It is about how I can specify semantics, and when, and where, and how the system design evolves over time to meeting shifting requirements, not about mongo itself. People talked about mongo as if somehow it is completely free form and removed the "headache" of having to design their db, like a magic pill, which needless to say it didnt turn out to be (surprise surprise) so now they hate it.

What it really does is allow you flexibility in terms of Where the knowledge of your schema lies and when it needs to be imposed - mongodb merely gives you a syntactic domain and the means of manipulating it, and allows clean separation of the semantics, meaning you can talk about those semantics in the same language as the rest of your system without any bodgey compilation or conversion, so you can store first and interpret later. That is very useful indeed. Magic also the first time you want to modify or understand data (both structure and data) and realise how conceptually easy it has become using JSON as your base matter, rather than with separate syntactic domains for queries, data storage, and semantic model. No "nvarchar(max)" really does miss the point lol, unless you can build indexes on individual elements inside that varchar (no guess not then). Forget about syntax, and focus on semantics, that is what its about.

The benefit (or nightmare) of mongo emerges in the code you're writing outside mongo; the freedom you're given is like a longer piece of rope - you can just as easily end up using that rope to hang yourself. NoSQL is really the point, not the document-oriented structure (which just happens to also be a handy thing sometimes, but not all the time as Diaspora found out). The success (or otherwise) of mongo is tied inexorably to the rise of json, and none of it is totally unique, mongo is just a particular collection of these concepts.

It is imperfect, like everything, even you and I, but still useful (unlike you and I for very much longer).

Standard human society reaction to "new" concept really. Hooray eating cabbage solves all humanity's problems, we love it, all we eat from now on is cabbage! Oh crap it makes us fart and doesnt cure cancer, we hate it!

/r/ProgrammerHumor Thread Parent Link - i.imgur.com