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

Lately (and not so lately ;) there has been a lot of bad press about MongoDB. We use it extensively as part of our product (on single servers) and it fills this role nicely. It has a few drawbacks, most notably huge disk space requirements (MongoDB has no compression) which we are hoping to solve with TokuMX (haven't tried it yet). It has some other quirks too, but in general it just... works. And I love using a document DB because it lets you use relations just when they are needed. With relational DBs you often have to use complex joins even for things which should be incredibly simple. On the other hand, I do miss JOINs when I need them (though we solved that on app level). And I would appreciate a way to define schema... :) But would I exchange document DB for relational DB for that? No (for the current project).

Maybe I'm getting old, but I really want DB to just work (unlike HBase, at least a few years ago). Other than that, I'm flexible.



The good news is, you can just wait a few weeks and get the possibility to use WiredTiger inside the upcoming 2.8.0. That will solve a few pain points that we've been dragging along for years (namely, document-level locking, disk requirements, multi-document transactions).


Whoa, I totally missed that news, thank you!!! :)


And compression


Yes, I missed a word, it was supposed to read "disk (space) requirements" :)


>And I would appreciate a way to define schema

Use mongoose!

>On the other hand, I do miss JOINs when I need them (though we solved that on app level).

How you do that? (maybe is different than me)

What about transactions?


>Use mongoose!

We don't use node.js. Also, we have app-level schema, but enforcing should (IMHO) be done on DB level so as to avoid any chance of invalid data.

Joins: easy, we specify which fields are connected (on app level), then fetching goes to connected collections and fetches data from there too. Not ideal, but it works. We made a similar solution for foreign keys.

Transactions: no need for any further guarantees. Our system mostly works on a single record at a time in all critical components. If this is not possible, we have app-level locking to avoid conflicts. No issues or wishes here.


> If this is not possible, we have app-level locking to avoid conflicts.

app-level locking is a recipe for disaster if data matters and more than 1 process/user/client/etc can access your data. if the data doesn't matter then I guess you can do whatever you want.

web "developers" have a bad reputation for a reason. so many amateurs amongst web developers...


I will assume the last part is just a generic statement and is not directed towards me. You are a Java dev I presume?

As for app-level locking, I am talking about sacrificing performance, not safety. We just make sure that some piece of code runs exactly once. Since the need for this is very rare and the places are not performance critical, we can live with that. So no, we have no need for additional transactional guarantees on DB level.


> I will assume the last part is just a generic statement and is not directed towards me.

It's most definitely directed at you.

> You are a Java dev I presume?

C#/C++. Though I've worked with java before amongst others.

> As for app-level locking, I am talking about sacrificing performance, not safety.

You are sacrificing both. Only idiots truly depend on app-level locking.

> We just make sure that some piece of code runs exactly once.

Amateur hour...

> Since the need for this is very rare and the places are not performance critical, we can live with that. So no, we have no need for additional transactional guarantees on DB level.

So it's a useless pointless trivial application...


Incredible, I am being judged by someone on Internet... How will I survive this? </sarcasm>

Another day, another idiot, I guess. (and yes, the term is definitely directed at you - if you still follow this throwaway account anyway)


Postgres and MySQL just work as far as I am concerned.


I never said or implied that they don't. What is your point?


OK, I took your last line to imply that somehow Mongo just works in a way that others don't.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

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

Search: