MongoDB and Jepsen

Passing the Industry’s Toughest Data Safety, Correctness, and Consistency Tests

MongoDB has worked with Jepsen since 2015 to publicly evaluate database behavior in the face of extreme system failure scenarios. Here is what the latest tests concluded1:

After weeks of testing both insert-only and update-heavy workloads against sharded clusters, we’ve found that MongoDB’s v1 replication protocol appears to provide linearizable single-document reads, writes, and compare-and-set, through shard rebalances and network partitions.

Thus far, causal consistency has generally been limited to research projects... MongoDB is one of the first commercial databases we know of which provides an implementation

What is Jepsen?

Since debuting in 2013, Jepsen has established itself as one of the most tortuous distributed systems testing regimes available in the industry today. It evaluates data correctness and safety in the face of extreme failure scenarios – including simultaneous network partitions, drifting systems clocks, and repeated node crashes. It is regarded by many in the database community as the gold standard in evaluating the behavior of distributed systems under critical and cascading infrastructure outages.

Key Takeaways

  • MongoDB offers among the strongest data consistency, correctness, and safety guarantees of any database available today
  • These guarantees are the result of significant engineering investments over the past 3+ years in MongoDB’s distributed systems design. These investments include consistency, isolation, and durability controls – all fully tunable and integrated with the WiredTiger storage engine – along with the implementation of a cluster-wide global logical clock, and the enhanced RAFT-based replication consensus protocol
  • We have complemented these investments by integrating Jepsen tests into the MongoDB Evergreen continuous integration suite. This ensures adherence to Jepsen in MongoDB’s ongoing development work and future releases

Resources to Learn More

1http://jepsen.io/analyses/mongodb-3-6-4