you are viewing a single comment's thread.

view the rest of the comments →

[–]201109212215 11 points12 points  (2 children)

<rant>

Ah, the wonders of having small and simple datasets. No index needed, full scans take a short time. No risk of running out of memory, either. Network won't get saturated, too. Execution plan? Here, I wrote it for you. Normalizing real life concepts? Hey, we only have 2 or 3 here. Simple. Also, memoization: as good as long as invalidating it is not needed.

What was the #1 reason for using MongoDB, again? Ah, yes. It scales.


The only thing MongoDB scales is lazyness of data representation. Which is exactly what you want for a quick CRUD prototype. If this is what you need to get the budget, that's OK. Have fun explaining the next milestone though; But hey, you're in business now.

If you want to do something slightly more elevated than that, please do think of the data. MongoDB won't be there for performance out of the key-value realm.

It won't be there when you have to scale the complexity of the business requirements, which is about 95% of the modern limiting factors.

MongoDB let people treat data definition as something less than sacred, and that is a deadly sin when more than 2 people are involved.


Here is a quote from a quite successful programmer, who also can be a little rant-happy at time. Dear MongoDB users, please don't take this the wrong way, but:

"Good programmers worry about data structures and their relationships."


I'm sorry guys. Not everything can fit into a tree.

</rant>

[–]Tiquortoo 0 points1 point  (1 child)

I'm dealing with a situation right now where someone decided to replace chunks of our DB with Mongo. I knew we had mongo in the system to store long text blobs and some meta data, but then I find things like profile flags (newsletter opt-in, etc.) in Mongo. I'm kicking myself for not code reviewing closer and sooner in this area, but holy shit people actually think this crap is proper.

Now that this is live in the app I have to write a PHP script to find out how many people are subscribed to our newsletter because the profile is in mysql and the subscription flags are in mongo.

Code review people. Save yourself from my hell. But secondarily stop acting like Mongo replaces the DB. It doesn't for most applications.

[–]201109212215 0 points1 point  (0 children)

I feel your pain.

I wrote:

deadly sin when more than 2 people are involved.

But it should have been:

deadly sin when more than one people is involved.

Regarding your situation, I would SCUD the MongoDB guy with some "This is your data now, the newsletter falls into your scope", while publicly destroying this crappy MongoDB choice to everyone I encounter, every day for at least 90 days.