Mongo is nice product and occupies unique niche on the market, but I
wouldn't use it for mission-critical production data.
I use Mongo a lot to store and analyze some auxiliary, expendable data, and
it works well. It's nice in small deployments and in prototyping, but the
issues are real, serious, and - the most grave accusation - they probably
never going to be fixed!
Let me elaborate.
1. Mongo will use unbeliveable amounts of disk space and memory. When we
replaced our postgresdb, that was running happily for years alongside other
apps on some server in the corner of the data-centre, it was all fine
initially, but after 100M or so documents we had to migrate it to new box
with hundreds TB of disk and tenths GB of RAM. Hidden, unexpected cost.
And I don't think this is going to be fixed, because of the products
architecture - it is simplistic. It uses the same data format (BSON)
everywhere: from client driver, through the network communication, db
internals all the way down to the disk. Sure, it makes things simpler and
sometimes faster, but it makes replacing and redeveloping product
components impossible; you can not add compression to the on-disk or on-the
wire format when you are mapping the data directly into memory and use as
your internal data structure.
2. Mongo is haunted with gazillion of tiny problems which you may miss or
ignore during the evaluation phase. You may fall in love with all the nice
features, and then wake up dying a dead by thousand cuts; These issues are:
inconsistent API, difficulties with running server-side code, terrible
performance and concurrency issues (2.2 improves things only slightly),
problems with compiling and using C++ driver, reliability issues etc.
And I don't thing they are going to be fixed anytime soon as well. If you
inspect Mongo's source code, you'll understand; It's poor craftsmanship all
over. It's so bad that you would have to don protective goggles to save
your eyeballs from imminent cancer. The code is really that bad. And I
can't see any major architectural improvements coming into new versions;
only new features and bug fixes.
The sad thing is that 10GEN management doesn't seem to be concerned about
it. I've been attending one if the recent Mongo conferences and seen a
"tour of the source code" by one of the directors. He was showing off the
code proudly. Younger attendees were delighted, more experienced ones
(including me) couldn't believe their eyes. Seriously.
Mongo is nice and useful toy, but don't make your business depend on it.
You need to remember that despite being open-source project, it's a
commercial product with significant marketing budget. Take everything you
read with grain of salt (including my rant here :) ) and test mongo
thoroughly in all scenarios, under heavy load etc before using it.
On Tuesday, 25 September 2012 15:51:43 UTC+1, grant li wrote:
> We are a team trying to use mongoDB. But we found this article saying
> several severe issues they encountered when using Mongo. They eventually
> turned away from Mongo.
> Can someone explain if these drawbacks are true? What can be done for
> each of the drawbacks? Is mongo reliable?