4 ms·
I fail to understand how and why silent failure is considered a reasonable default.
by flatline3 14y ago
I fail to understand how and why silent failure is considered a reasonable default.
- eduardordm 14y agoIt actually happens in some scenarios. Let's say, outside of the tech world: When you send a post card (cheap ones) to a friend, you won't receive any delivery confirmation. You just send it and go do whatever you please, believing the post card will be there. If the envelope don't get there, no biggies, you will send another on your next trip anyways. No hurt feelings. But, let's say you need to send me a check. You want to know if I received it or not, specially because sometimes I don't cash checks right away. Without confirmation it would be difficult to you to decide if you cancel the previous check and send another, or do nothing, because I could be at that very time trying to cash the check or it could be lost somewhere. The delivery confirmation is an add-on where you receive a confirmation that the envelope got there, but see, it will take time for that confirmation to arrive. It's expensive. If you are sending a 0.01 check, you can just send another if the recipient asks.
- wglb 14y agoSurely you don't think that this is a reasonable model for how a database should work, do you?
- tlack 14y agoIf you can turn that behavior on and off (by using getLastError or whatever), why not have this feature? If I'm logging upvotes on a post or comments on a blog, which is about as serious as 99% of these b.s. startups are doing, I think it's fair to ignore errors. I do agree that this should be pointed out in huge blinking letters though, or be a driver flag that is on by default. The amount of people who don't know this about Mongo, but are still using it to store gigs of data, is horrifying.
- michaelt 14y agoIf I'm logging upvotes on a post or comments on a blog, [...] I think it's fair to ignore errors. Even in that situation, you need to know whether you're discarding 1% of upvotes or 99% of upvotes.
- wglb 14y agoI am reminded of the time, back deep in the past of MySQL, that someone complained about MySQL not providing locks. The development replies amounted to "But it is FAST!" The reply was "But the results are often wrong" and the developers again "But it is FAST!" Acceptable software, particularly in the class of databases, is obligated to tell you that it didn't complete your request. This is not an option.
- jaggederest 14y agoDatabases are not like the mail. Databases are like a bank. If I ask my bank why my account does not reflect my latest deposit and they say 'Sorry, I guess we didn't get it', I'm getting a new bank.
- randallsquared 14y ago...and if you're building a banking app, that's relevant. If you're building a chat system, maybe things other than data integrity matter more.
- lawn 14y agoIs it not relevant for a blog? Your business website? Your toy application? It is even relevant for a chat system! And the flaw of your argument: Even if there are other more important things for an application, let's just make anything else than the #1 feature shit.
- randallsquared 14y agoI'm just saying some databases are like the mail. A chat system is one such case. And the flaw of your argument: Even if there are other more important things for an application, let's just make anything else than the #1 feature shit. I don't actually understand what you mean, here, but since you say it's the flaw of my argument, I'm very interested in it. Could you rephrase briefly?
- esrauch 14y agoIs it actually unimportant if a chat message is dropped? It seems damn important to me, what use is a chat app if someone sends you an important message and you never receive it? I could see that being true for something like anonymized logs where you are only going to be looking at it in aggregate, but just silently ignoring chat messages really doesn't seem acceptable to me.
- 14y ago
- meshko 14y agoBecause the whole point of NoSQL movement is that you are storing Facebook "like"s and in fact would be glad if some of them get lost.
- mcgwiz 14y agoThe problem has and always will be that MongoDB toes the line between a caching product and a database product, regardless of what 10gen decides to call it. It's extremely frustrating that 10gen can't embrace this fact, and instead perpetuates marketing that causes the product to be perceived as flawed by their target audience. But once you've discovered this, you can use it appropriately (either by overriding the default silent failure to use it as for durable persistence, or only using it for caching or as an eventually consistent store).