DevOps & Cloud

Why I Finally Stopped Googling "Which Database Should I Use?"

A

Admin User

Author

Jul 3, 2026
5 min read
4 views
Why I Finally Stopped Googling "Which Database Should I Use?"

Three years into my career as a backend developer in Islamabad, I realized I was making architecture decisions like someone throwing darts at a board. A startup needed persistent storage? Postgres. Need something fast? Redis. Need to scale horizontally? MongoDB. I had the tools memorized, but I had no framework for why I was choosing them. Then I actually read Designing Data-Intensive Applications, and it fundamentally changed how I think about building systems.

I kept putting this book off because I assumed it was another dense academic tome that would sit on my shelf looking impressive. Every senior engineer I knew mentioned it in passing, but nobody made it sound urgent. Six months ago, I decided to stop procrastinating and actually commit to reading it. What I found wasn't a database reference guide—it was a masterclass in thinking like someone who builds systems that don't fall apart when reality hits.

The Book Isn't About Databases (Even Though Everyone Thinks It Is)

When I first cracked open DDIA, I expected it to be a comparison guide for different database engines. The title is misleading in the best way possible. What the book actually teaches is how to reason about systems that handle massive amounts of data reliably. Databases show up, sure, but they're just the foundation.

The real material covers replication strategies, partitioning schemes, distributed consensus, stream processing, and how all these pieces interact when they're falling apart. These are the problems I actually face in production. My Postgres database doesn't exist in isolation—it's part of a system that needs to handle failures gracefully, scale horizontally, and keep working when the network between datacenters gets flaky.

It Teaches Trade-Offs, Not Product Names

This is where the book earned my respect. Instead of saying "use this database," it explains why different databases make different choices. Why does one system prioritize consistency while another optimizes for availability? What happens when you shard data across multiple servers? What's the actual cost of maintaining distributed transactions?

I realized I'd been learning technology wrong. I'd memorize features of framework X or database Y, but I never understood the underlying engineering decisions. After reading DDIA, I started asking different questions in architecture discussions. When a team member suggested switching to a NoSQL database, instead of just comparing feature lists, I could now ask: "What consistency guarantees do we actually need? What happens if this node becomes unavailable?" Those conversations changed completely.

Reliability Means Something Different Now

Before reading this book, reliability to me meant "the server stays up" and "I have good monitoring." The authors reframed it as: systems should behave correctly even when things inevitably fail. Networks drop packets. Machines crash. Messages arrive duplicated. Clocks drift.

This shift in thinking has genuinely changed how I design systems. I stopped assuming everything would work perfectly and started designing for the failures I know will happen. It sounds obvious written out, but it's a different mindset when you're building. Instead of hoping a database connection doesn't fail, you handle it gracefully. Instead of assuming a distributed transaction will succeed, you plan for it to timeout or partially fail.

My Take

I agree completely with the original article's assessment: this book is essential for backend engineers. But I'd add something—it's also challenging in the best way. Some chapters required me to slow down, sketch diagrams, and reread sections. Chapter 9 on consistency and consensus models nearly broke my brain, but in retrospect, that was exactly what I needed.

What I found myself doing differently: I now spend more time thinking before I write code. When a system design question comes up, I ask about the failure modes, the consistency guarantees needed, the expected growth pattern. These conversations happen on whiteboards before I touch a database.

One thing I'd push back on: the book can feel somewhat theoretical at times. I found myself wanting more concrete operational advice. How do you actually monitor whether your replication is working? What does a partition tolerance incident look like in production? The principles are solid, but I had to fill some gaps with my own experience.

What This Means Going Forward

I'm recommending this book to every junior engineer on my team now, but I'm setting expectations. This isn't a book you read in a weekend. It's something you work through, take notes on, and reference back to constantly. I've already reread three chapters because they're directly relevant to work I'm doing now.

If you've been hesitating like I did—stop. Read this book. Not because it's trendy, but because understanding these principles will make you measurably better at building systems that don't catastrophically fail at 3 AM.

Source: This post was inspired by "I Finally Read Designing Data-Intensive Applications (2nd Edition) - Here's Why Every Backend Engineer Should" by Dev.to. Read the original article

Share this article

Written by Adil Sher

Full stack developer building high-traffic platforms, AI services, and custom web applications. Explore my portfolio, learn about my background, or get in touch.

Related Articles

Stop Waiting for CloudFormation to Tell You Everything's Fine
DevOps & Cloud Jul 1

Stop Waiting for CloudFormation to Tell You Everything's Fine

I was sitting in a standup last month when our DevOps lead mentioned we'd spent 45 minutes waiting for a CloudFormation stack update to complete. The infrastructure change itself took maybe 30 seconds. The rest of the time? CloudFormation running stabilization checks, making sure...

I Got Burned by AWS Security Once. Here's What I Actually Do Now.
DevOps & Cloud Jun 30

I Got Burned by AWS Security Once. Here's What I Actually Do Now.

Three years ago, I deployed a Postgres database to RDS with encryption disabled because the client wanted to "move fast." Two months later, during a routine audit, we discovered the database was publicly accessible on the internet. No one had accessed it yet—we were lucky. But th...