Skip to content

Databases & Data Storage

Choose, design, and scale the right database — relational, NoSQL, vector, and cloud-native options compared.

Courses

Intermediate~4 hours

Learn how relational, NoSQL, vector, and cloud databases work — and how to pick, design, and query the right one for your application.

Intermediate~6.5 hours

From fundamentals to production — caching strategies, eviction policies, invalidation, Redis, CDN caching, and multi-level architectures. Practical patterns and a guided final project you build in your own stack (no bundled starter repo).

Articles

An order database's primary data center suffers a catastrophic, unrecoverable event — not a transient node failure, an actual disaster. Two

A multi-tenant analytics platform partitions incoming events by tenant_id, hashed onto 16 shards — a design that looked perfectly balanced i

A URL shortener's redirect endpoint, GET /r/{code}, looks purely read-heavy — billions of redirects against a handful of short codes created

A payment service keeps processing requests with zero dropped transactions while one of its three nodes crashes mid-request — that's fault t

A shopping cart write to cart-77 needs to land on enough replicas that a later read is guaranteed to see it — but "enough" is a number you c

A user changes their display name, refreshes the page a second later from a phone on a different network, and sees the old name. Nothing cra

An order API can return responses all day and still charge the wrong amount. It can be temporarily unreachable while every stored order rema

Checkout slows while product pages remain healthy. CPU is moderate, but the orders table shows rising lock waits and writes queue behind one

A product page feels instant on the second visit because some layer reused work from the first. The useful beginner question is not “should

"Just use Postgres" is good advice until a measured access pattern needs a specialist. A checkout might use Redis for the cart, SQL for orde

Semantic search, RAG, and agent memory depend on the same primitive: store embeddings and retrieve nearby vectors with the filters your prod

A Redis GET can be constant-time and still miss its latency target when a large Lua script is ahead of it, the client opens a new TLS connec

A selective lookup that once scanned most of a large table can become an index walk plus a few heap fetches — often the difference between a

A product page is easy to cache until a price changes: the CDN still has the old response, one app instance has an older in-process value, a

This guide is for engineers who know basic SQL and key-value access but need to justify a production database choice. By the end, you can ev

SQL and NoSQL are not enemies — they optimize for different access patterns. Relational engines favor schemas, JOINs, and ACID transactions.

Two support agents both open the same account balance, both see $100, both independently process a $50 withdrawal, and the balance ends up a

A team says "we need to shard the database" when the actual measured problem is a 200GB events table that scans slowly, or "let's add replic

"The index exists, why is this query still slow?" is one of the most common database escalations — and the answer is almost always sitting i

Cloud Spanner and MySQL agree on almost nothing below the SQL syntax layer — Spanner shards data across nodes by key range, replicates synch

A Redis SET key value NX EX 5 lock stops a cache stampede in theory, but two implementation details separate a lock that actually works unde

Want a guided sequence? Follow a learning path that includes this topic.

View Learning Paths