Skip to main content

Choosing Between SQL and NoSQL

How to choose storage by looking at access patterns, consistency, data shape, and operational cost.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

Track

System Design Interviews - From Basics to Advanced

Step 6 / 19

The problem

The SQL vs NoSQL discussion usually falls apart very quickly.

One side becomes:

  • modern
  • scalable
  • flexible

The other becomes:

  • old
  • rigid
  • bureaucratic

That kind of conversation is bad because it replaces judgment with labels.

You do not choose storage based on image.

You choose it based on fit.

And fit depends much more on:

  • how the system reads
  • how the system writes
  • how much consistency it needs
  • what shape the data really has

than on any slogan about technology.

Mental model

Think about it like this:

SQL and NoSQL do not compete in the abstract. They answer different shapes of problems.

That is the center of the topic.

SQL tends to be strong when you need:

  • clear relationships between entities
  • relational queries and aggregations
  • strong integrity
  • reliable transactions

NoSQL tends to be strong when you need:

  • more flexible document or key-oriented models
  • simpler and more predictable access
  • natural distribution in some scenarios
  • storage shaped around a specific access pattern

That does not mean:

  • SQL cannot scale
  • NoSQL cannot be consistent

It only means their most natural strengths often show up in different contexts.

Breaking it down

The first question is not about technology

Before you say “Postgres,” “Mongo,” “Redis,” or anything else, answer:

  • what is the main entity?
  • is the data strongly related to other data?
  • is the main read based on key lookup or relational querying?
  • does the operation depend on strong transactions?
  • does the record shape vary a lot or stay predictable?

Those questions usually clarify more than any brand comparison.

SQL usually fits well when relationships really matter

If your system lives on things like:

  • orders, customers, payments, and refunds
  • users, permissions, organizations, and history
  • reports with filters, joins, and aggregations

then relationships are not a side detail.

They are part of the problem.

In that kind of system, SQL often shines because it works naturally with:

  • referential integrity
  • richer querying
  • transactions
  • strong local consistency

If you run away from that too early, you may trade clarity for improvisation.

NoSQL usually fits better when access is narrow and predictable

Some scenarios do not depend on traversing relationships all the time.

The value is more in:

  • fetching by key
  • writing documents with changing shape
  • operating at high volume with known access patterns

Reasonable examples are:

  • session storage
  • shopping cart snapshots
  • read cache
  • raw event streams
  • documents with highly variable structure

In those cases, a non-relational model can simplify a lot.

The win does not come from the label “NoSQL.”

It comes from matching the way the data is actually used.

”NoSQL” is too broad on its own

This is another common mistake.

People say “NoSQL” as if it were one thing.

It is not.

That bucket includes, for example:

  • document stores
  • key-value stores
  • wide-column systems
  • graph databases

And each one solves a different kind of problem.

So saying only “I would use NoSQL” is usually still too vague.

Scale alone does not decide the answer

Another common mistake:

  • “At scale, I would use NoSQL.”

Scale matters, of course.

But scale without access shape is still only half the conversation.

You can have a huge system on SQL.

You can have a small system that benefits from a specific NoSQL model.

The decision is not made by the word “scale” alone.

It comes from the combination of:

  • volume
  • read pattern
  • write pattern
  • required consistency
  • operational cost

Consistency is usually the most honest dividing line

This helps a lot in interviews.

If the operation depends on things like:

  • debit and credit staying aligned
  • stock and order staying coherent
  • history and current state not contradicting each other

then the conversation leans hard toward serious transactional guarantees and integrity.

If the flow tolerates:

  • delay
  • replay
  • looser document structure
  • direct reads by key

then the room for non-relational models grows.

Mixing multiple databases too early is also a trap

There are cases where more than one storage model makes sense.

But a mature answer rarely starts with:

  • “Use both.”

It starts with:

  • “What is a single database not solving well enough?”

If you jump straight to a hybrid architecture without proving the need, the answer sounds more like escape than judgment.

Simple example

Imagine an order system.

You have:

  • customers
  • orders
  • order items
  • payments

You need:

  • relationships between entities
  • reports with joins and aggregations
  • transactional consistency so a payment is not confirmed without a valid order

That leans strongly toward SQL.

Now imagine a high-volume event ingestion system where each event can vary in shape, reads are mostly by key or time partition, and eventual processing is acceptable.

That may lean toward a NoSQL model.

The key point is not that one technology “won.”

The key point is that the problem changed.

Common mistakes

  • Choosing a database because it was trending.
  • Adopting NoSQL just to avoid the discipline of schema design.
  • Defaulting to SQL without examining read and write patterns.
  • Obsessing over “web scale” before validating basic consistency needs.

How a senior thinks

A strong senior engineer does not answer this with tool loyalty.

They pull the decision back to production reality.

The reasoning often sounds like this:

If the system depends on relationships, complex queries, and strong consistency, SQL is the natural fit. If it depends on simpler access patterns, flexible record shape, and distribution at high volume, then a NoSQL model may be the better fit.

That answer works because it starts from the problem, not from a favorite tool.

What the interviewer wants to see

In interviews, this question reveals maturity almost immediately.

They want to see whether you can:

  • explain the trade-off between structure and flexibility
  • connect storage choice directly to access patterns
  • avoid canned and shallow answers

SQL and NoSQL do not compete as slogans. They answer different kinds of pressure from different kinds of systems.

If you still do not know how the data will be read and written, it is too early to pick the database.

Quick summary

What to keep in your head

Practice checklist

Use this when you answer

You finished this article

Part of the track: System Design Interviews - From Basics to Advanced (6/19)

Next article Cache and Consistency in Real Systems Previous article Data Modeling Without Overcomplicating

Keep exploring

Related articles