Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Or: You could just RTFM and avoid all these issues.

For example: The message warning you that 32bit builds are not safe for storing more than 2GB of data is larger than the download button itself. If don't see this, you should probably be not in charge of storing any data anyways.

Many other issues have been resolved with the 3.0 release or are documented very clearly.



1. There was no such warning for a long, long time.

2. It's a dumb limitation, and an architectural issue as far as I'm concerned.

3. It still doesn't justify silently throwing away data for years.

4. Many of the points on my list remain unaddressed, and likely never will be addressed.

EDIT: Additionally, the typical system administrator doesn't install MongoDB from the 'Downloads' page, but uses a package manager, and thus never sees the warning even if it's there.

Warnings like this belong in all the relevant spots in the documentation, not just on a download page.


That 32bit startup warning has been in place since 2009. It was in the README in 2008 (IIRC, pre-1.0).

https://github.com/mongodb/mongo/commit/b3322b86a014683018ac...

There's plenty in Mongo to complain about, but grousing about the 32-bit limitation just makes you look like you're bad at reading introductory documentation.


This doesn't explain the data loss consequences (remember the client default!), nor was it clearly visible on the download page - you'd have to explicitly look for it.

This was the case until as late as 2014: https://web.archive.org/web/20140704182658/http://www.mongod...

And again, the 'download' page or README is not sufficient for such a warning, nor is a startup message a reliable place to put it (because of initscripts and such). It should have been in all the relevant places in the documentation, instead.


Unacknowleged writes were a bad default. I think everyone with a shred of honesty will happily admit to that.

It was certainly in the documentation, in the blog posts, in the startup logs, and in the README for quite a long time. If you missed it, it's probably because you weren't paying attention. Again, there are plenty of good reasons to dislike MongoDB, but this isn't one of them, and harping on it substantially degrades your credibility.


> It was certainly in the documentation, [...] in the startup logs, and in the README for quite a long time.

All the wrong places, as already stated. These are not the places where developers actually look. I provided some better example locations here: https://twitter.com/joepie91/status/622920351731843072

> [...] in the blog posts [...]

Certainly not there. Go look around for MongoDB tutorials from the timespan where unacknowledged writes were the default, and almost none of them remark on the 32-bits limitation.

> If you missed it, it's probably because you weren't paying attention.

Nonsense. It simply wasn't in the locations where people actually look. You can easily verify that using the Wayback Machine (and in fact, this is still mostly the case today).

> Again, there are plenty of good reasons to dislike MongoDB, but this isn't one of them, and harping on it substantially degrades your credibility.

If pointing out extremely dangerous past negligence from the MongoDB developers "degrades my credibility" in your view, then you have some very strange ways to determine credibility.


> All the wrong places, as already stated. These are not the places where developers actually look.

If you're not reading READMEs, installation notes, and server logs and instead depend on marketing splash pages to highlight the limitations of the technologies you use, you're a bad developer. Sorry.

> Certainly not [in blog posts]

http://blog.mongodb.org/post/137788967/32-bit-limitations

> It simply wasn't in the locations where people actually look. You can easily verify that using the Wayback Machine (and in fact, this is still mostly the case today).

I first started using Mongo in 2010 according to my gitlogs (after it having been on my radar for some time before that), and I very distinctly remember reading about the 32-bit limitation well before I'd ever installed it, because we were also using Varnish at the time, which has similar issues on 32-bit systems because it too uses (or at least, at that time used) memory-mapped files.

The claim that the limitation was not documented well, or was hidden, or was generally unknown at that time is just simply false.


The word 'loss' does not appear on that page. There's a world of difference IMO between a rejected operation (which is what I would assume from that description – that the address space exhaustion would be detected and the database would stop accepting writes) and irreversible data loss.


That's a consequence of their unacknowledged writes default - any write which failed for any reason wouldn't result in a rejection as far as the client is concerned (because the default was to shove the write request into the pipe and then continue without waiting for acknowledgement). As I mentioned earlier, most everyone acknowledges (heh) that as a bad default.

If you were checking getLastError on your writes, you would see the write fail when you ran out of address space.


I guess any substantially-advanced failure mode is bound to be multi-factorial. Makes sense; thanks for the reply.


> Unacknowleged writes were a bad default.

Bad defaults? It was defended as "this is ok because system is distributed" and there was a joke about it helping ace all the silly benchmarks. So it wasn't "oops we forgot to uncomment out the fsync line in the code". It was a deliberate decision.

It was deceptive, and that is why many people hate MongoDB and wouldn't let it get even close to their data -- because have a track record of lying about the capabilities of their system.


Also don't forget that almost every driver ignored the defaults and used acknowledged writes anyway.


If you're on 32-bit systems, you're even more out of luck. With the release of version 3.0, MongoDB dropped commercial support for 32-bit systems. You can still get binaries, but without commercial support they'll probably stop making those for 32-bit systems soon enough.


> The message warning you that 32bit builds are not safe for storing more than 2GB of data is larger than the download button itself. If don't see this, you should probably be not in charge of storing any data anyways.

That's all well and good, but reporting writes as successful and silently failing when your data ticks over 2 GB instead of throwing errors or doing something useful like that is more what the complaint is about. Obviously, you could set up monitors on your data storage and alarm if it reaches 1.75 GB, but if you're mature enough to do that, you're mature enough to use a real database solution.


A database built by people who are careless with my data is not a database worth paying attention to, even when particular problems are remedied.


The author is cataloguing some of Mongo's "paper cuts," i.e., issues for which warnings and known workarounds exist but that really make the development experience less pleasant.

For MongoDB's actual limitations, read aphyr's Call Me Maybe series.


Right. I am so sick and tired of MongoDB defenders saying "read the manual" after aphyr has found multiple faults in MongoDB that directly conflict with the documentation.


To be fair, aphyr analyzed Mongo's clustering behavior and found a lot of problems. Which has been a consistent refrain in the series - apparently clustering a datastore is hard. ElasticSearch and RabbitMQ fair poorly as well.

Also, it's not like Postgres even tries to offer clustering. So what are you comparing Mongo to? There's no reason to believe that a single-node Mongo instance will be any less reliable than a single-node MySQL or Postgres. At least, nobody has presented that argument.


Mongo is actually great for very small datasets. But they sell it as a clustered solution (mongodb.org is currently featuring a giant banner that reads, "Agility, scalability, performance. Pick three"), so it's fair to judge them on that.


I agree, but I'm getting the sense that some people (including the OP) are using the CMM article to claim that Postgres is more reliable. Postgres doesn't have this kind of clustering feature at all. Not a fair comparison.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: