šŸ”„ The DB Grill šŸ”„

Where database blog posts get flame-broiled to perfection

Why isn't "majority" the default read concern in MongoDB?
Originally from dev.to/feed/franckpachot
December 31, 2025 • Roasted by Alex "Downtime" Rodriguez Read Original Article

Ah, a truly magnificent piece of technical writing. I have to applaud the author for this crystal-clear explanation. It’s a beautiful, intricate tapestry that explains why my on-call phone is going to melt into a puddle of slag over the next holiday weekend. Truly, a masterpiece of foreshadowing.

It’s just wonderful how the article praises MongoDB for offering the strongest consistency option, but then clarifies that this is, of course, not the default. This is a brilliant product philosophy. It’s like selling a car with the brakes as an optional, after-market installation. Sure, the default configuration is optimized for lower latency, but you might occasionally find yourself reading a state that may later be rolled back. I love that phrasing. It’s a gentle, poetic way of saying your application might hallucinate data that never actually existed. A truly event-driven experience.

I was especially moved by the claim that switching to the "majority" read concern has "seemingly no significant performance impact." I’ve heard that line before. I have it on a t-shirt, right next to the logos of several databases whose vendor stickers are currently peeling off my old laptop. The idea that waiting for a quorum of servers, potentially across different racks or even availability zones, to acknowledge a write before you can safely read it comes with no performance cost is just… chef’s kiss. It's the kind of bold, optimistic statement that gets a VP of Engineering very excited and gets me a 3 AM phone call.

But my absolute favorite part—the part I’m going to print out and frame—is this gem:

Unlike SQL databases—which must guarantee consistency for any DML executed by any user... MongoDB shifts more responsibility to developers.

Perfection. It’s not a bug, it’s empowerment! We aren't giving you sane defaults; we're giving you freedom. The freedom to choose from a delightful menu of foot-guns. The freedom for every single microservice team to pick a slightly different combination of w, readConcernLevel, and readPreference, ensuring that no two services ever have the same view of reality. This isn't a database; it’s a tool for creating unique and exciting new race conditions. My monitoring tools, which I'm sure someone will remember to configure after the first major outage, will have a beautiful story to tell.

I can see it now. It’s 2:47 AM on the Saturday of a long weekend. A junior developer, trying to optimize a single query, will copy-paste a connection string from a three-year-old Stack Overflow answer and deploy a change using w=1 because it makes their local tests faster. Meanwhile, the billing service, configured for majority reads, will start processing an order that the shipping service, using the default local read, can’t see yet. The notification service fires off an event, the customer gets a confirmation email for a ghost order, and a cascading failure begins that will curdle the milk in my refrigerator.

And when I’m tracing the logs, bleary-eyed and fueled by cold pizza, I’ll find this article. I’ll see this beautiful, logical explanation for why a system designed with this much flexibility and developer responsibility was destined to fly apart like a cheap watch.

It's not a database; it’s a group project where no one agreed on the requirements, and I’m the one who gets graded.