You’re Having noSQL Problems, I Feel Bad for You Son
The CTO of 10gen responded in the comments and pointed out that this scenario seems highly unlikely at worst and at best is seriously hyperbolised.
The list of posts in the fallout of this totally anonymous and unverified āMongoGateā go on and on, hereās the ones I could find quickly:
- Mongoās fine
- Why the hate?
- Failing with Mongo
- Mongo 2.0 should have been 1.0
- Letās have a serious noSQL discussion
- and of course, the blatant trollingā¦
Some people have rushed to the defence of noSQL, saying things like, āRTFMā and āno SQL involves trade-offs that need to be understood.ā In fairness, Iāll admit these are little comfort to people complaining of noSQLās lack of ACID. However Iām going to avoid the whole technological debate in favor of some generalizing and hand waving.
First, no technology is a panacea, and Iām still confused why as a community we feel the need to construct strawmen out of anything that becomes remotely popular in order to tear it down for not being one. Itās childish, itās stupid and anyone capable of rational thought can see right through it.
Second, technology wars on the whole are just stupid. Technologies donāt often truly compete directly against each other, instead they simply shift the landscape causing (some) people to make their decisions differently. Iām going to make up some number on the spot here, but Iād wager a guess that that vast majority, so 80%, of people involved in one side or another of a technology war havenāt actually used the technology they argue against. Doubly true (try not to do the math here) for those on the side of whichever is the older technology. Letās face it there arenāt many developers out there who havenāt used SQL in the past.
Bottom line, the signal to noise ratio of technology flame wars is so low as to be completely worthless as a discussion. Donāt pit SQL against noSQL, or even MySQL against MongoDB. Tell me why youāve used what and what is amazing about it. As an example I had lunch with someone from Heroku who works on their Postgres team who, while starting the conversation with ādonāt use MongoDBā, went on to tell me about some seriously awesome new features of Postgres. I honestly had no idea that while Iām having a grand time playing with noSQL dbās some SQL dbās are getting pretty cool and modern too.
That said, Iāll be sticking with MongoDB for what Iām doing right now. Itās going to take some more serious discussion than that of a simple flame war to deter me from using it. Itās simple, fast, fits with mental models of querying and reading data for web sites easily. I still find the ability to easily create embedded relationship and tree structures within a document useful a lot of the time. It also suits the design of aggregate roots and fits with CQRS concepts like keeping āreadā models separate from āwriteā models (an approach which addresses many of the issues people from the SQL camp constantly harp on against noSQL).
Bottom line, if there is something fundamentally flawed with MongoDB, I have yet to see it but Iāll admit to not having had to deal with any serious scaling scenarios. Most of the complaints Iāve seen have come from environments dealing with very large volumes of data and/or high transaction rates. These are scenarios where plain-old-SQL certainly has itās problems too, the reality is scaling is still a hard problem. Iāll argue that this is almost always CQRS territory for many, many reasons Iām not going to go into in this post. Bottom line, if you havenāt begun having the discussion about separating writes from reads, storing and publishing domain events to decouple the architectures, and issues like eventual consistency, then no offense, but you likely arenāt qualified to talk about the choice of persistence technology and itās effect on the scalability.
Itās all too easy to blame the tools instead of the architecture and infrastructure design. Obviously, CQRS by itself isnāt a panacea either, but it does provides patterns and a language around creating scalable domains that has the added benefit of being completely technology agnostic. It applies just as easily to a SQL only as it does to a noSQL, or hybrid environment. Though my gut tells me there are distinct advantages to having noSQL in the mix here, and that it makes more sense once weāve moved beyond requiring the database to be only safety net.
So if youāre having noSQL problems, I feel bad for you son. Iāve got 99 problems but maintaining a schema aināt one.
Reference: You’re Having noSQL Problems, I Feel Bad for You Son from our NCG partner Chris Nicola at the lucisferre blog.

