This document is a thinking aid, not a technology comparison chart. The goal:
- Help you decide SQL vs NoSQL in real systems
- Help you explain that decision clearly in interviews
- Keep one place you can revisit while preparing
If you remember only one thing from this doc, let it be this:
Databases are chosen based on data shape + access pattern + consistency needs, not trends.
The First Question You Should Always Ask#
Before thinking about SQL or NoSQL, ask:
What does my data look like, and how will it be accessed most of the time?
Not:
- "Will this scale?"
- "Is NoSQL faster?"
- "What does FAANG use?"
Those questions come after you understand the data.
The Default Answer Is SQL (And That's Fine)#
Most applications should start with a relational database.
If you are unsure, PostgreSQL or MySQL is almost always the correct starting point.
Why?
- Strong consistency
- Transactions are simple
- Relationships are explicit
- Debugging is easier
- Tooling is mature
- Team familiarity is usually higher
A lot of systems fail not because SQL doesn't scale, but because people assume it won't.
Use SQL When#
- You need ACID guarantees
- Data has relationships
- You need joins
- Reporting and ad-hoc queries matter
- Data integrity is important
- Schema changes are controlled
- You don't yet know all access patterns
Good fits: user management, orders/payments/inventory, booking systems, internal tools, admin dashboards, most CRUD-heavy backends.
If you're in an interview and unsure, saying "I would start with SQL and evolve if needed" is usually a strong answer, not a weak one.
When SQL Starts to Feel Painful#
SQL struggles not because it's bad, but because some problems don't map well to tables.
Typical signals:
- You are fighting joins at scale
- Write throughput dominates everything
- Schema changes are constant and unpredictable
- Data is naturally nested or hierarchical
- You don't need strict consistency everywhere
This is where NoSQL starts to make sense.
NoSQL Is Not One Thing#

"NoSQL" is an umbrella term. Choosing NoSQL without knowing which type is a mistake.
Each NoSQL category exists to solve a specific access pattern.
Key–Value Stores#
Mental model: A distributed hashmap. The database does not understand the value.
Use When#
- You always know the key
- You want extremely fast reads/writes
- Data is short-lived or derived
- You don't need querying
Common Uses#
- Caching, sessions, rate limiting, feature flags, counters, distributed locks
What Goes Wrong#
- Trying to query inside values
- Treating it like a primary database
- Storing business-critical data without backups
"We'll just fetch everything and filter in code" — you're probably misusing a key-value store.
Document Databases#
Mental model: JSON as a first-class citizen. The database understands structure, fields, arrays, and nested objects.
Use When#
- Data is naturally hierarchical
- Documents are read as a whole
- Schema varies across records
- You want flexibility without migrations
- Reads dominate writes
Common Uses#
- User profiles, CMS content, product catalogs, event logs, mobile/web backends, configuration storage
Where People Get It Wrong#
- Recreating relational models
- Doing joins in application code
- Ignoring schema design because "it's schema-less"
- Using transactions everywhere
A document database still needs design discipline.
Column-Family Databases#
Mental model: Write-optimized, partition-first storage. You design tables around queries, not entities.
Use When#
- Writes are massive (millions/sec)
- Data is time-based
- Reads are predictable
- Availability matters more than consistency
- Data is mostly append-only
Common Uses#
- Time-series data, event streams, metrics, logs, message history
If your query does not include the partition key, it's probably a bad fit. Column stores reward planning and punish improvisation.
Graph Databases#
Mental model: Relationships are the data. Traversal matters more than aggregation.
Use When#
- Multi-hop relationships are common
- Queries involve "friends of friends"
- Pattern detection is required
- Data is highly connected
Common Uses#
- Social networks, recommendation systems, fraud detection, knowledge graphs
If your queries look like recursive joins in SQL, a graph database is worth considering.
Time-Series Databases#
Mental model: Everything revolves around time.
Use When#
- Data is timestamped
- Writes are continuous
- Reads are time-range based
- Old data can expire
Common Uses#
- Metrics, monitoring, IoT data, financial ticks, logs (in some cases)
Avoid using time-series databases for user or transactional data.
Search Engines (Not Databases)#
Search engines are often mistaken as databases. They are indexes with storage, not transactional systems.
Use When#
- Full-text search is required
- Relevance ranking matters
- Fuzzy matching is needed
- Faceted filtering is important
Never use a search engine as your system of record.
A Simple Decision Approach (Interview Friendly)#
When asked "Which database would you choose?", think out loud:
- What is the data shape?
- What are the dominant access patterns?
- How important is consistency?
- What is the write/read ratio?
- How will this evolve in 1–2 years?
Then recommend:
- A primary database
- Optional supporting systems (cache, search, analytics)
This shows maturity.

Common Anti-Patterns#
"NoSQL Is Faster" — Performance depends on access pattern, not technology.
"Schema-less Means No Design" — Bad schemas hurt more in NoSQL than SQL.
"We Might Scale One Day" — Design for today. Measure. Evolve.
"We'll Use Multiple Databases" — Every database adds operational cost.
A Safe Default Architecture#
For many systems:
- SQL as primary store
- Redis for caching
- Search engine for search (if needed)
- Analytics store for events
This covers most real-world needs without overengineering.
What Interviewers Actually Look For#
They are not checking if you know database names. They want to see:
- How you reason
- If you understand trade-offs
- Whether you can say "it depends"
- If you can start simple and evolve
"I'd begin with SQL and revisit when we hit real constraints" is often the best answer.
Final Thought#
Database selection is less about being clever and more about being honest about constraints. The best engineers don't chase technology — they reduce risk.