Learn

Navigate through learn topics

Databases Visualised

A comprehensive visual guide to database types, backend infrastructure and cloud platforms

Last updated: 8/19/2025

Understanding the backend infrastructure landscape through visual representations and real-world examples.

Backend Infrastructure Overview

The modern backend world is a complex ecosystem of databases, application frameworks, cloud platforms and specialised services. This visual guide breaks down the key components and how they fit together in real-world applications.

Database Landscape

                            ┌─────────────────────────────────────────┐
                            │          BACKEND / INFRA WORLD          │
                            └─────────────────────────────────────────┘

Databases
│
├── Relational (SQL)
│   ├─ PostgreSQL
│   ├─ MySQL / MariaDB (WordPress)
│   ├─ Oracle DB (banks, enterprise)
│   └─ SQL Server (.NET / Microsoft shops)
│
├── NoSQL
│   ├─ Document
│   │   └─ MongoDB
│   ├─ Wide-column
│   │   ├─ Cassandra
│   │   └─ DynamoDB
│   └─ Key-Value
│       └─ Couchbase (real-time apps)
│
├── Distributed SQL (NewSQL)
│   ├─ Google Spanner (Google-scale SQL)
│   ├─ CockroachDB (Postgres-compatible, distributed)
│   └─ YugabyteDB (Postgres-compatible, open-source Spanner)
│
├── Specialised
│   ├─ Redis (cache, session store, timelines)
│   ├─ Memcached (older caching)
│   ├─ Elasticsearch / OpenSearch (search + logs)
│   ├─ TimescaleDB / InfluxDB (time-series, IoT)
│   └─ Neo4j (graph DB – fraud detection, recommendations)
│
└── Warehouses & Analytics
    ├─ BigQuery (Google Cloud analytics)
    ├─ Snowflake (finance/startups data warehouse)
    └─ ClickHouse (fast analytics, logs, metrics)

Application Backends

Application Backends
│
├── Traditional Frameworks
│   ├─ Django (Python, rapid dev)
│   ├─ Rails (Ruby, classic startups)
│   ├─ Laravel (PHP, CMS/commerce apps)
│   └─ Spring Boot (Java, enterprise)
│
├── Modern Web Frameworks
│   ├─ Node.js (Express, NestJS – APIs, startups)
│   ├─ Go (Gin, Buffalo – high-performance APIs, Uber, Twitch)
│   └─ Rust (Actix, Axum – new wave, safe + fast)
│
└── BaaS / Serverless
    ├─ Firebase (Google – realtime, auth, hosting)
    ├─ Supabase (Postgres + realtime + auth, open-source)
    ├─ Appwrite / PocketBase (smaller OSS BaaS)
    └─ Cloud Functions
        ├─ AWS Lambda
        ├─ GCP Functions
        └─ Vercel / Netlify Functions

Cloud Platforms and Infrastructure

Cloud Platforms
│
├── AWS
│   ├─ EC2 (compute), S3 (storage), RDS (databases), Lambda
│   └─ DynamoDB, Redshift, etc.
│
├── Google Cloud
│   ├─ Spanner, Bigtable, BigQuery
│   └─ Firebase ecosystem
│
├── Azure (Microsoft world)
│   └─ SQL Server, AD, Office integrations
│
└── On-Prem / Custom Infra

Supporting Infrastructure

Glue & Messaging
│
├─ Kafka
├─ RabbitMQ (classic message queue)
└─ NATS (lightweight pub/sub)

Identity & Auth
│
├─ Firebase Auth
├─ Supabase Auth
├─ Auth0
└─ Okta (enterprise SSO)

Mental Models for Understanding

Database Selection

  • SQL → strong structure, transactions, user data (Postgres, MySQL)
  • NoSQL → flexible, scale-out, unstructured data (Mongo, DynamoDB)
  • Distributed SQL → SQL semantics + global scale (Spanner, Cockroach)
  • Cache → Redis/Memcached for hot speed
  • Messaging → Kafka/RabbitMQ for pipelines/events
  • Realtime / BaaS → Firebase/Supabase for apps with chat/live features
  • Big Tech → often custom infra (Meta: TAO, Twitter: Manhattan, Google: Spanner)

Technology Stack Patterns

  • Startups → PostgreSQL + Redis + Node.js/Go + AWS
  • Enterprise → Oracle/SQL Server + Java Spring + on-premise
  • Real-time apps → Firebase/Supabase + WebSockets
  • Data-heavy → PostgreSQL + TimescaleDB + BigQuery
  • High-scale → distributed SQL + custom infrastructure

When to Use What

Relational Databases

  • Use when: You need ACID transactions, complex relationships, structured data
  • Examples: User management, e-commerce, financial systems
  • Popular choice: PostgreSQL for most applications

NoSQL Databases

  • Use when: You need horizontal scaling, flexible schemas, high throughput
  • Examples: Content management, real-time analytics, IoT data
  • Popular choice: MongoDB for document storage, Redis for caching

Distributed SQL

  • Use when: You need global scale with SQL semantics
  • Examples: Multi-region applications, global financial systems
  • Popular choice: CockroachDB for open-source, Spanner for Google Cloud

Specialised Databases

  • Use when: You have specific requirements (search, time-series, graphs)
  • Examples: Search engines, monitoring systems, recommendation engines
  • Popular choice: Elasticsearch for search, InfluxDB for time-series

Real-World Considerations

Scale and Performance

  • Small apps: Single PostgreSQL instance + Redis
  • Medium apps: PostgreSQL + read replicas + Redis cluster
  • Large apps: Distributed databases + specialised services
  • Enterprise: Hybrid approach with multiple database types

Cost and Complexity

  • Managed services: Higher cost, lower complexity (AWS RDS, Google Cloud SQL)
  • Self-hosted: Lower cost, higher complexity
  • Hybrid: Balance of both approaches

Team Expertise

  • SQL teams: Stick with relational databases
  • Modern teams: Consider NoSQL + managed services
  • Enterprise teams: Evaluate distributed SQL options

Getting Started

  1. Start simple: PostgreSQL + Redis (if it makes sense for your use case)
  2. Add complexity gradually: When you hit actual limitations
  3. Consider managed services: Focus on your application, not infrastructure
  4. Plan for scale: Design with growth in mind from the beginning

The key is understanding that there's no one-size-fits-all solution. The choice should be based on specific requirements, team expertise and long-term goals.