codingstuff.io
ExploreTutorialsProblemsCS Subjects
Get Started
ExploreTutorialsProblemsCS Subjects
Get Started
codingstuff.io

Master the art of building software through interactive tutorials, real-world problems, and guided projects.

Pune, Maharashtra, India

codingstuffmail@gmail.com

Product

  • Explore
  • Tutorials
  • Problems
  • CS Subjects

Company

  • About
  • Contact
  • Privacy Policy
  • Terms & Conditions
  • Sitemap

© 2026 codingstuff.io. All rights reserved.

Built with ❤️ for developers everywhere

/
/
All Subjects
🏗️

System Design

24 chapters

1System Design Basics2Vertical vs Horizontal Scaling3CAP Theorem4Load Balancers & Algorithms5Proxy Servers (Forward & Reverse)6Caching Strategies & Eviction7Content Delivery Networks (CDNs)8Database Replication9Database Sharding & Partitioning10Database Scaling & Sharding11Consistent Hashing12Choosing Databases (SQL vs NoSQL)13Message Queues (Kafka, RabbitMQ)14Microservices Architecture15API Gateways16Rate Limiting Algorithms17Long Polling vs WebSockets vs SSE18Heartbeat & Health Checks19Bloom Filters & Probabilistic Data Structures20Leader Election in Distributed Systems21Event-Driven Architecture22Distributed Locking23Circuit Breaker Pattern24Case Study: Design URL Shortener
SubjectsSystem Design

Choosing Databases (SQL vs NoSQL)

Updated 2026-04-30
2 min read

Choosing Databases (SQL vs NoSQL)

One of the most critical decisions in system design is choosing the right database. The wrong choice can lead to massive refactoring or system-wide performance problems. The two broad categories are Relational (SQL) and Non-Relational (NoSQL) databases.

1. SQL Databases (Relational)

SQL databases store data in structured tables with predefined schemas (rows and columns). Relationships between tables are enforced via foreign keys. They use Structured Query Language (SQL) for querying.

Examples: MySQL, PostgreSQL, Oracle, SQL Server.

When to use SQL:

  • Your data has clear, well-defined relationships (Users, Orders, Products).
  • You need complex queries with JOINs, aggregations, and transactions.
  • Data integrity is paramount (banking, healthcare). ACID compliance is required.
  • Your schema is unlikely to change frequently.

2. NoSQL Databases (Non-Relational)

NoSQL databases provide flexible schemas and are designed for specific data models and access patterns. There are four major types:

Key-Value Stores

Data is stored as a collection of key-value pairs. Extremely fast for simple lookups.

  • Examples: Redis, DynamoDB, Memcached.
  • Use Case: Session management, user preferences, shopping carts, caching.

Document Stores

Data is stored as JSON-like documents. Each document can have a different structure. Schema-less.

  • Examples: MongoDB, CouchDB, Firestore.
  • Use Case: Content management systems, user profiles, product catalogs with varying attributes.

Wide-Column Stores

Data is stored in tables, rows, and dynamic columns. Optimized for queries over large datasets.

  • Examples: Cassandra, HBase, Google Bigtable.
  • Use Case: Time-series data, IoT sensor data, event logging at massive scale.

Graph Databases

Data is stored as nodes and edges (relationships). Optimized for traversing relationships.

  • Examples: Neo4j, Amazon Neptune.
  • Use Case: Social networks (friend-of-a-friend queries), recommendation engines, fraud detection.

3. SQL vs NoSQL Comparison

FeatureSQLNoSQL
Data ModelTables with fixed schemaFlexible (documents, key-value, etc.)
ScalingPrimarily verticalPrimarily horizontal
TransactionsFull ACID supportUsually eventual consistency
Query LanguageStandardized SQLDatabase-specific APIs
SchemaRigid, predefinedDynamic, flexible
Best ForComplex queries, relationshipsHigh throughput, flexible data

4. The Real-World Answer

Most large-scale systems use both (Polyglot Persistence):

  • PostgreSQL for the core transactional data (users, orders, payments).
  • Redis for caching and session storage.
  • Elasticsearch for full-text search functionality.
  • Cassandra for high-volume event logging and analytics.


PreviousConsistent HashingNextMessage Queues (Kafka, RabbitMQ)

Recommended Gear

Consistent HashingMessage Queues (Kafka, RabbitMQ)