Databases & System Design•Part 1: Candid Database Experience & Intro Scenarios (1 - 5)
Walk me through your production database architecture experience and database selection criteria.
In Simple Words: "In production, I have architected and operated PostgreSQL, MySQL, MongoDB, Redis, and DynamoDB. My database selection framework is guided by access patterns and consistency requirements:
- PostgreSQL: My default standard for transactional services, relational integrity, ACID compliance, and JSONB flexibility.
- MongoDB: For polymorphic documents and aggregates where entities are frequently read and written as complete nested units.
- Redis: For ultra-low-latency in-memory caching, distributed locks, session stores, and rate limiters.
- DynamoDB: For serverless architectures requiring predictable single-digit millisecond latency at arbitrary scale."
sql
-- Production PostgreSQL table with UUIDs, indexing, and JSONB document storage:
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) UNIQUE NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_users_metadata_gin ON users USING GIN (metadata);