Why You Should Never Use MongoDB

This article has been posted to this sub before, and keeps getting upvoted by the many subscribers here who also don't understand how to use schemaless databases and therefore think they have no good applications.

These "mongo sucks" blogs are quite numerous at this point, though as you can see this classic is now rather dated. They almost all tend to exhibit a few central misconceptions:

1) "NoSQL" vs. "SQL" is the meaningful distinction. It's not. The language you use to query the database is not the important difference, it's the strongly enforced schema vs. no schema at all. This is why I think calling mongo-like databases "NoSQL" typically belies a misunderstanding.

2) Schemaless implies total denormalization. It doesn't. You still normalize, you just don't get to do joins in the DBMS layer declaratively. Maybe that's bad, but in some ways it can actually be good, since just assuming an RDBMS will quickly and easily handle any join you throw at it can be a pretty big mistake if you want ever intend to have more than a few thousand records.

3) Perhaps the worst misconception I see is people thinking that because they understand the interface and abstractions of SQL, that all SQL is equally advisable and valid. However, true RDBMS experts who know how not to shoot themselves in the foot at scale are few and far between, and becoming one actually requires very deep knowledge of the implementation details of the RDBMS, which completely breaks the abstraction anyway. This brings us back to point 1, to which I would say that the abstraction of, e.g. SQL, is not always as awesome as more novice database developers would assume.

TLDR: there exists no DBMS that scales easily.

/r/programming Thread Parent Link - sarahmei.com