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
- Start simple: PostgreSQL + Redis (if it makes sense for your use case)
- Add complexity gradually: When you hit actual limitations
- Consider managed services: Focus on your application, not infrastructure
- 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.