How a 1970 IBM research paper on the relational model produced a declarative query language that outlasted its rivals, survived a decade-long NoSQL insurgency, and quietly absorbed the very systems that tried to replace it.
Databases
-
The Story of SQL -
Database Indexes Explained A working engineer's guide to database indexes: when each index type (B-tree, hash, GiST, SP-GiST, BRIN, GIN, columnstore) is the right answer, what an index actually costs you on every write, and how the query planner decides whether to use one at all.
-
Consistency, CAP, and Replication: The Tradeoffs You Cannot Escape CAP and the more useful PACELC reformulation, the spectrum of consistency models from linearizable to causal to eventual, single-leader vs multi-leader vs leaderless replication, quorum reads and writes (R + W > N), read-your-writes and monotonic guarantees, conflict detection, and how real systems like PostgreSQL, DynamoDB, and Cassandra pick their points on the curve. What 'eventually consistent' actually costs you.
-
Distributed SQL: CockroachDB, TiDB, and YugabyteDB NewSQL that survives a node dying while still speaking SQL. How Raft-replicated ranges deliver horizontal scale with strong consistency, the Google Spanner lineage the whole category descends from, multi-region survival goals and the latency tax they impose, online schema changes that don't lock the table, an honest head-to-head of CockroachDB, TiDB, and YugabyteDB — and the unglamorous truth that boring single-node Postgres still wins for most applications.
-
Graph Databases with Neo4j The property-graph model explained from first principles: nodes, relationships, and properties; Cypher queries for real traversal problems; why index-free adjacency beats recursive SQL CTEs for deep graph walks; fraud detection, recommendations, and knowledge graphs as concrete production use cases; Neo4j clustering and causal consistency; and an honest accounting of when adding a graph database is the wrong call.
-
MongoDB Done Right The document database past the hype: the embed-versus-reference decision that makes or breaks a schema, denormalization that does not rot, when MongoDB genuinely beats Postgres JSONB and when it does not, the aggregation pipeline, indexing and the working-set rule, replica sets and sharding, the read/write-concern consistency knobs, and the operational footguns — unbounded arrays and the 16 MB BSON limit — that sink naive designs.
-
SQL Server Quick Start and T-SQL Cheat Sheet Getting productive on Microsoft SQL Server fast when you already know PostgreSQL or MySQL — connecting with sqlcmd and the modern clients, running the engine in a container, the T-SQL dialect essentials (TOP, OFFSET/FETCH, MERGE, CTEs, window functions), indexes and execution plans, stored procedures, backup and restore, and the dialect gotchas that trip up newcomers.
-
Time, Order, and CRDTs: Coordinating Without a Clock Why wall-clock time lies in distributed systems, Lamport timestamps and vector clocks, happens-before and causal ordering, the trouble with NTP and the appeal of TrueTime and hybrid logical clocks, and conflict-free replicated data types (CRDTs) for merge-without-coordination — with practical uses in collaborative editing, offline-first apps, and geo-distributed state.
-
Cloud Database Trade-offs: RDS vs Aurora vs DynamoDB vs ElastiCache When to use RDS, Aurora, Aurora Serverless v2, DynamoDB, and ElastiCache. Connection pooling with RDS Proxy, single-table DynamoDB design, partition hotspots, Valkey, and the cost math.
-
Multi-Region Active-Active: What It Actually Takes Latency routing, conflict resolution, DynamoDB Global Tables, Aurora Global Database, RTO/RPO math, and why most teams shouldn't attempt full active-active.
-
PostgreSQL Full-Text Search vs Elasticsearch: Where the Line Actually Is tsvector/tsquery, pg_trgm fuzzy matching, ranking and highlighting, multilingual support, and an honest answer to when Postgres FTS is enough and when you actually need a dedicated search engine.
-
PostgreSQL Security Hardening: A Practical Guide Row-level security, pg_audit, pg_hba.conf hardening, TLS configuration, PgBouncer authentication, Vault database secrets engine, roles and least privilege — a complete guide to locking down PostgreSQL in production.
-
ClickHouse for Observability: Logs, Metrics, and Traces at Scale How ClickHouse's columnar storage architecture makes it the ideal backend for logs, metrics, and traces at scale — replacing Elasticsearch with a fraction of the resources.
-
PostgreSQL Performance Tuning: From Slow Queries to a Database That Purrs A practical deep dive into PostgreSQL performance: reading pg_stat_statements, analyzing slow queries with EXPLAIN ANALYZE, choosing the right index type, tuning autovacuum, and scaling connections with PgBouncer.
-
Redis Beyond Caching: Streams, Pub/Sub, Search, and When Redis Is Your Primary Database A deep dive into Redis beyond the cache: pub/sub messaging, Streams for event logs, RedisJSON for document storage, RediSearch for full-text search, persistence modes, and HA with Cluster vs Sentinel.
-
Database Migrations Without Downtime: Expand/Contract, Shadow Tables, and Safe Deploys A practical guide to running database schema changes against a live production database without downtime — the expand/contract pattern, rename and backfill strategies, shadow tables for rewrites, lock-aware migrations, and tooling that makes it safe.
-
PostgreSQL for Developers: Indexes, EXPLAIN ANALYZE, JSONB, and Tuning for Real Workloads A practical deep-dive into PostgreSQL for developers — understanding indexes and when to use them, reading EXPLAIN ANALYZE output, using JSONB for flexible schemas, and tuning the key configuration knobs that matter for real workloads.
-
SQLite in Production: When It's the Right Choice, WAL Mode, Backups, and Litestream Replication SQLite is more capable in production than most developers realize. This guide covers when to choose it over Postgres, WAL mode for concurrent reads and writes, proper backup strategies, and continuous replication with Litestream.
-
Time-Series Data with InfluxDB and TimescaleDB A practical guide to modelling, storing, and querying time-series data with InfluxDB and TimescaleDB — including retention policies, downsampling, and real-world sensor data patterns.