Live data from Hacker News

Call Me Maybe: MongoDB Stale Reads

aphyr.com

41–50 of 150 posts

Re: Call Me Maybe: MongoDB Stale Reads

#41
post #7

The most interesting lessons from the Jepsen series: * You should never trust, and always verify, the claims made by database manufacturers. * Especially when those claims relate to data integrity. * Super-especially when every safety level provided by the manufacturer that includes the word "SAFE" is actually unsafe.

Actually the broader lesson would be to assume the worst in your application layer and try and remediate/verify wherever possible. If you look at his articles: Redis, PostgreSQL, Cassandra, ElasticSearch etc all had data consistency errors. And none of those have vendors making any claims. It's pretty sobering to say the least.

Actually, just use Riak. Those people know distributed bases.

https://aphyr.com/posts/285-call-me-maybe-riak

Now I hear they support consistency as well.

Re: Call Me Maybe: MongoDB Stale Reads

#42

Mongo absolutely nailed creating a database that is easy to get started with and even do things that are traditionally more 'hard' such as replication. It is still super attractive for me to pick it up for small projects, even after dealing with its (many) pain points both in development and operational settings. Given this, it is so tragic to see how dismissive they have been in regards to the consistency issues tha…

I'm with you on this, I have a product that is based on MongoDB and, though customers haven't complained about these issues and it's easy to stick your head in the sand when you haven't had any issues, the response by MongoDB is troublesome.

For instance, compare MongoDB's response to elastic's response:

Initial response to "Call me maybe: Elaticsearch":

https://www.elastic.co/blog/resiliency-elasticsearch/

Their ongoing status on resiliency:

http://www.elastic.co/guide/en/elasticsearch/resiliency/curr...

That is how you respond to a negative jespen test. It's particularly illuminating since elasticsearch doesn't actually bill itself as primary storage and they take resiliency seriously as opposed to MongoDB who do consider themselves primary storage and they do not.

Re: Call Me Maybe: MongoDB Stale Reads

#43

Mongo absolutely nailed creating a database that is easy to get started with and even do things that are traditionally more 'hard' such as replication. It is still super attractive for me to pick it up for small projects, even after dealing with its (many) pain points both in development and operational settings. Given this, it is so tragic to see how dismissive they have been in regards to the consistency issues tha…

Hey, it worked for MySQL...

Re: Call Me Maybe: MongoDB Stale Reads

#44
post #34
post #22

Earlier quoted context omitted.

Has there been any CP system passing a call-me-maybe test first time apart from Zookeeper [1]? [1] https://aphyr.com/posts/291-call-me-maybe-zookeeper

FoundationDB. Kyle didn't bother running Jepsen against FDB because foundationdb's internal testing was much more rigorous that Jepsen. The foundationdb team ran it themselves and it passed with flying colors: http://blog.foundationdb.com/call-me-maybe-foundationdb-vs-j... Sadly, fdb has been bought by Apple[1], and you can't download it anymore. I sincerely hope foundationdb gets opensourced or something. [1] http:/…

[deleted]

Re: Call Me Maybe: MongoDB Stale Reads

#45
post #23

Question: How do I actually run Kyle's tests to see this for myself? (Not that I don't believe him, I just want to play around a bit.) When I run `lein install` and then `lein test`, I get: ╰─▶ ψ lein test Exception in thread "main" java.io.FileNotFoundException: Could not locate jepsen/db__init.class or jepsen/db.clj on classpath: , compiling:(mongodb/core.clj:1:1) at clojure.lang.Compiler.load(Compiler.java:7142) a…

Can't answer your question, but I'm curious how you managed to include an image in your comment. I didn't think embedded HTML was possible?

Re: Call Me Maybe: MongoDB Stale Reads

#46
post #41

Earlier quoted context omitted.

Actually the broader lesson would be to assume the worst in your application layer and try and remediate/verify wherever possible. If you look at his articles: Redis, PostgreSQL, Cassandra, ElasticSearch etc all had data consistency errors. And none of those have vendors making any claims. It's pretty sobering to say the least.

Actually, just use Riak. Those people know distributed bases. https://aphyr.com/posts/285-call-me-maybe-riak Now I hear they support consistency as well.

I think at one point the employees of Basho knew how to write distributed DBs - Riak is the most advanced AP DB from a distributed systems theory perspective. However, in recent months, their CEO, CTO and Chief Architect have left, as well as many of their prominent engineers. Worryingly, the new CTO seems content to make inane comments about "Data Gravity" [0].

[0] - http://www.kdnuggets.com/2015/03/interview-dave-mccrory-bash...

Re: Call Me Maybe: MongoDB Stale Reads

#47
Does anyone have any references on how you could write a distributed database that met all ACID properties? Surely there's an academic paper that says that if you do A then B then C, you are guaranteed a certain level of consistency.

We've developed a type of distributed database at my company, and I think it's pretty solid, but I need a broader familiarity with the available theory.

Re: Call Me Maybe: MongoDB Stale Reads

#48
post #45
post #23

Question: How do I actually run Kyle's tests to see this for myself? (Not that I don't believe him, I just want to play around a bit.) When I run `lein install` and then `lein test`, I get: ╰─▶ ψ lein test Exception in thread "main" java.io.FileNotFoundException: Could not locate jepsen/db__init.class or jepsen/db.clj on classpath: , compiling:(mongodb/core.clj:1:1) at clojure.lang.Compiler.load(Compiler.java:7142) a…

Can't answer your question, but I'm curious how you managed to include an image in your comment. I didn't think embedded HTML was possible?

What image? The arrow and psi are characters.

Re: Call Me Maybe: MongoDB Stale Reads

#49
post #47

Does anyone have any references on how you could write a distributed database that met all ACID properties? Surely there's an academic paper that says that if you do A then B then C, you are guaranteed a certain level of consistency. We've developed a type of distributed database at my company, and I think it's pretty solid, but I need a broader familiarity with the available theory.

Consensus and atomic broadcast. Paxos, raft, zab. Formal methods.

Re: Call Me Maybe: MongoDB Stale Reads

#50
post #40
post #39

Earlier quoted context omitted.

After MongoDB published their write speed benchmarks based entirely on unacknowledged writes (e.g. how fast can you write to a socket?), it's been a long downhill ride with an immense amount of inexplicable ignorant support.

Can you post a link to these unacknowledged write benchmarks? I can't find them.

Need to find an archived version but it caused a lot of arguments in 2009/2010: e.g. http://rethinkdb.com/blog/the-benchmark-youre-reading-is-pro... references similar benchmarks

Can also link simply to the HN discussion from back then too: https://news.ycombinator.com/item?id=1496035

> Full disclosure: I work for 10gen.

> We did this to make MongoDB look good in stupid benchmarks.

Post reply on HN