<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Engineering Playbook — DBMS</title><description>Database systems workbook: foundations, the relational model, normalization, SQL, storage, indexing, and real DBMS engines.</description><link>http://localhost:4321/</link><item><title>Deduplication</title><link>http://localhost:4321/dbms/deduplication-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/deduplication-pattern/</guid><description>ROW_NUMBER() OVER (PARTITION BY ...) = 1 and the DISTINCT ON (Postgres) alternatives for keeping one row per group.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>deduplication</category><category>window-functions</category><category>distinct-on</category></item><item><title>Existence Check</title><link>http://localhost:4321/dbms/existence-check-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/existence-check-pattern/</guid><description>EXISTS vs NOT EXISTS vs IN vs LEFT JOIN IS NULL — four ways to say where this related row does or does not exist.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>subqueries</category><category>joins</category><category>nulls</category></item><item><title>Gaps and Islands</title><link>http://localhost:4321/dbms/gaps-and-islands-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/gaps-and-islands-pattern/</guid><description>The streak-detection template: subtract row number from a value, group by the difference. Identifies runs of consecutive rows.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Advanced</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>window-functions</category><category>streaks</category><category>sequences</category></item><item><title>Group Bucket</title><link>http://localhost:4321/dbms/group-bucket-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/group-bucket-pattern/</guid><description>Bucket continuous values into ranges (age bands, price tiers) using CASE WHEN inside GROUP BY.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>aggregation</category><category>bucketing</category><category>case-when</category></item><item><title>Join Variants</title><link>http://localhost:4321/dbms/join-variants-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/join-variants-pattern/</guid><description>Self-join, anti-join, semi-join, lateral join, theta-join. Beyond the standard four kinds of join.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>joins</category><category>lateral</category><category>anti-join</category><category>semi-join</category></item><item><title>Lead-Lag Navigation</title><link>http://localhost:4321/dbms/lead-lag-navigation-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/lead-lag-navigation-pattern/</guid><description>LEAD() and LAG() for previous/next-row comparison. Streak detection, change-from-previous metrics, run-length tracking.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>window-functions</category><category>navigation</category><category>streaks</category></item><item><title>Nested Query</title><link>http://localhost:4321/dbms/nested-query-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/nested-query-pattern/</guid><description>Correlated vs uncorrelated subqueries; subquery in SELECT vs WHERE vs FROM. When CTEs beat nested subqueries.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>subqueries</category><category>cte</category><category>correlated</category></item><item><title>Patch Gaps</title><link>http://localhost:4321/dbms/patch-gaps-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/patch-gaps-pattern/</guid><description>Fill missing rows in a sequence with default values via LEFT JOIN against a generated calendar or series.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>joins</category><category>time-series</category><category>calendar</category></item><item><title>Pattern Search</title><link>http://localhost:4321/dbms/pattern-search-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/pattern-search-pattern/</guid><description>LIKE, ILIKE, regex, trigram, full-text — the spectrum of find rows that match a string pattern.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>search</category><category>full-text</category><category>indexing</category></item><item><title>Pivot Flip</title><link>http://localhost:4321/dbms/pivot-flip-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/pivot-flip-pattern/</guid><description>Long-to-wide and wide-to-long reshapes. PIVOT (T-SQL), crosstab (Postgres), conditional aggregation as the portable form.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>pivot</category><category>reshape</category><category>aggregation</category></item><item><title>Rank and Row</title><link>http://localhost:4321/dbms/rank-and-row-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/rank-and-row-pattern/</guid><description>ROW_NUMBER vs RANK vs DENSE_RANK. Per-partition top-N selection. The second-highest-salary canon.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>window-functions</category><category>ranking</category><category>top-n</category></item><item><title>Recursive Tree</title><link>http://localhost:4321/dbms/recursive-tree-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/recursive-tree-pattern/</guid><description>Recursive CTEs (WITH RECURSIVE) for tree traversal, transitive closures, organisational hierarchies.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Advanced</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>recursive-cte</category><category>hierarchies</category><category>graphs</category></item><item><title>Rolling Totals</title><link>http://localhost:4321/dbms/rolling-totals-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/rolling-totals-pattern/</guid><description>Cumulative aggregations over a window. SUM() OVER (ORDER BY ... ROWS BETWEEN ...). The time-series running-total template.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>window-functions</category><category>aggregation</category><category>time-series</category></item><item><title>Set Compare</title><link>http://localhost:4321/dbms/set-compare-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/set-compare-pattern/</guid><description>INTERSECT / EXCEPT / UNION and the equivalent JOIN / NOT EXISTS forms. When set algebra beats joins.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>set-operations</category><category>union</category><category>intersect</category><category>except</category></item><item><title>Tally Count</title><link>http://localhost:4321/dbms/tally-count-pattern/</link><guid isPermaLink="true">http://localhost:4321/dbms/tally-count-pattern/</guid><description>Count occurrences of values in a column. The COUNT(*) GROUP BY template every SQL interview opens with.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>pattern</category><category>SQL Patterns</category><category>sql</category><category>sql-pattern</category><category>aggregation</category><category>group-by</category><category>count</category></item><item><title>Aggregates, GROUP BY, HAVING</title><link>http://localhost:4321/dbms/aggregates-group-by-having/</link><guid isPermaLink="true">http://localhost:4321/dbms/aggregates-group-by-having/</guid><description>COUNT / SUM / AVG / MIN / MAX, the GROUP BY contract, why HAVING is not WHERE.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>building-block</category><category>SQL</category><category>aggregates</category><category>group-by</category><category>having</category><category>sql</category><category>analytics</category></item><item><title>Normalization — 1NF, 2NF, 3NF</title><link>http://localhost:4321/dbms/1nf-2nf-3nf/</link><guid isPermaLink="true">http://localhost:4321/dbms/1nf-2nf-3nf/</guid><description>Atomicity, full functional dependency, transitive dependency — the three levels every relational schema starts with.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>concept</category><category>Normalization</category><category>normalization</category><category>1nf</category><category>2nf</category><category>3nf</category></item><item><title>BCNF, 4NF, and When to Stop Normalizing</title><link>http://localhost:4321/dbms/bcnf-and-beyond/</link><guid isPermaLink="true">http://localhost:4321/dbms/bcnf-and-beyond/</guid><description>BCNF as the strict-3NF; the pragmatic stopping point and where denormalization is genuinely worth it.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>concept</category><category>Normalization</category><category>normalization</category><category>bcnf</category><category>4nf</category><category>denormalization</category></item><item><title>Classification of Database Systems</title><link>http://localhost:4321/dbms/classification-of-dbms/</link><guid isPermaLink="true">http://localhost:4321/dbms/classification-of-dbms/</guid><description>Relational vs document vs key-value vs graph vs columnar vs time-series. What each is good at and where the boundaries blur.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Foundations</category><category>classification</category><category>nosql</category><category>oltp</category><category>olap</category><category>data-models</category></item><item><title>DBMS Architecture — The Three-Schema Model</title><link>http://localhost:4321/dbms/dbms-architecture-three-schemas/</link><guid isPermaLink="true">http://localhost:4321/dbms/dbms-architecture-three-schemas/</guid><description>Conceptual, logical, and physical schemas; data independence; how a schema change at one level shouldn&apos;t break the others.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Foundations</category><category>architecture</category><category>schemas</category><category>data-independence</category><category>ansi-sparc</category></item><item><title>Data Models, Schemas, and Instances</title><link>http://localhost:4321/dbms/data-models-and-schemas/</link><guid isPermaLink="true">http://localhost:4321/dbms/data-models-and-schemas/</guid><description>Model = vocabulary. Schema = structure. Instance = data. The difference matters for migration, validation, and discussion.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Data Modeling</category><category>data-model</category><category>schema</category><category>instance</category><category>modeling</category></item><item><title>SQL DDL — CREATE, ALTER, DROP</title><link>http://localhost:4321/dbms/ddl-create-alter-drop/</link><guid isPermaLink="true">http://localhost:4321/dbms/ddl-create-alter-drop/</guid><description>Defining the schema. Tables, columns, constraints, indexes — and the ALTER traps on a live system.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>building-block</category><category>SQL</category><category>ddl</category><category>schema</category><category>alter-table</category><category>migrations</category><category>ddl-locks</category></item><item><title>SQL DML — INSERT, UPDATE, DELETE, MERGE</title><link>http://localhost:4321/dbms/dml-insert-update-delete/</link><guid isPermaLink="true">http://localhost:4321/dbms/dml-insert-update-delete/</guid><description>Mutating data. RETURNING, UPSERT / ON CONFLICT, the things to know about row-locking on writes.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>building-block</category><category>SQL</category><category>dml</category><category>insert</category><category>update</category><category>delete</category><category>upsert</category></item><item><title>Amazon DynamoDB</title><link>http://localhost:4321/dbms/dynamodb/</link><guid isPermaLink="true">http://localhost:4321/dbms/dynamodb/</guid><description>Partition + sort key model, single-table design, on-demand vs provisioned capacity, GSIs, transactions, the cost model.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Advanced</category><category>system</category><category>Systems &amp; Postmortems</category><category>dynamodb</category><category>nosql</category><category>key-value</category><category>partition-key</category><category>aws</category></item><item><title>ER Relationships and Constraints</title><link>http://localhost:4321/dbms/er-relationships-and-constraints/</link><guid isPermaLink="true">http://localhost:4321/dbms/er-relationships-and-constraints/</guid><description>Relationship types, degree (binary / ternary), cardinality constraints, participation constraints, attributes on relationships.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>concept</category><category>Data Modeling</category><category>er-model</category><category>relationships</category><category>cardinality</category><category>constraints</category></item><item><title>Translating ER Diagrams to Relational Tables</title><link>http://localhost:4321/dbms/er-to-relational/</link><guid isPermaLink="true">http://localhost:4321/dbms/er-to-relational/</guid><description>The standard rules — each entity becomes a table, each relationship becomes a foreign key or junction table, weak entities collapse.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>building-block</category><category>Data Modeling</category><category>er-model</category><category>relational</category><category>translation</category><category>schema-design</category></item><item><title>Functional Dependencies</title><link>http://localhost:4321/dbms/functional-dependencies/</link><guid isPermaLink="true">http://localhost:4321/dbms/functional-dependencies/</guid><description>A → B as the unit of schema reasoning; closures; minimal covers; how FDs drive the normal forms.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>concept</category><category>Normalization</category><category>normalization</category><category>functional-dependencies</category><category>closure</category><category>theory</category></item><item><title>GitLab 2017 — The Database Outage</title><link>http://localhost:4321/dbms/gitlab-2017-database-outage/</link><guid isPermaLink="true">http://localhost:4321/dbms/gitlab-2017-database-outage/</guid><description>A mistaken `rm -rf` on the primary; five backup mechanisms that all failed; the public postmortem everyone should read.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>postmortem</category><category>Systems &amp; Postmortems</category><category>gitlab</category><category>backup</category><category>postgres</category><category>replication</category><category>postmortem</category></item><item><title>Hash and Bitmap Indexes</title><link>http://localhost:4321/dbms/hash-and-bitmap-indexes/</link><guid isPermaLink="true">http://localhost:4321/dbms/hash-and-bitmap-indexes/</guid><description>Hash indexes for equality lookups, bitmap indexes for low-cardinality columns, the trade-offs vs B-tree.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>building-block</category><category>Storage &amp; Indexes</category><category>indexes</category><category>hash</category><category>bitmap</category><category>oltp</category><category>olap</category></item><item><title>Integrity Constraints</title><link>http://localhost:4321/dbms/integrity-constraints/</link><guid isPermaLink="true">http://localhost:4321/dbms/integrity-constraints/</guid><description>Entity integrity, referential integrity, domain constraints, CHECK constraints, and triggers as the catch-all.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Relational Model</category><category>constraints</category><category>integrity</category><category>check</category><category>foreign-keys</category><category>triggers</category></item><item><title>Isolation Levels and Anomalies</title><link>http://localhost:4321/dbms/isolation-levels/</link><guid isPermaLink="true">http://localhost:4321/dbms/isolation-levels/</guid><description>Read-uncommitted to serializable; the anomalies each prevents (dirty read, non-repeatable, phantom, write skew).</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>concept</category><category>Relational Model</category><category>isolation</category><category>anomalies</category><category>mvcc</category><category>serializable</category><category>snapshot-isolation</category></item><item><title>Keys — Primary, Candidate, Foreign, Composite</title><link>http://localhost:4321/dbms/keys-primary-foreign-candidate/</link><guid isPermaLink="true">http://localhost:4321/dbms/keys-primary-foreign-candidate/</guid><description>What each key is for, how to choose a primary key, why surrogate keys are usually the right default.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Relational Model</category><category>keys</category><category>primary-key</category><category>foreign-key</category><category>surrogate-keys</category><category>schema-design</category></item><item><title>JOIN — INNER, LEFT, RIGHT, FULL, CROSS</title><link>http://localhost:4321/dbms/joins-inner-outer-cross/</link><guid isPermaLink="true">http://localhost:4321/dbms/joins-inner-outer-cross/</guid><description>Connecting tables. When LEFT JOIN is the right tool, what FULL OUTER is for, and how CROSS JOIN should be feared.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>building-block</category><category>SQL</category><category>joins</category><category>inner-join</category><category>outer-join</category><category>cross-join</category><category>sql</category></item><item><title>Knight Capital 2012 — $440M in 45 Minutes</title><link>http://localhost:4321/dbms/knight-capital-2012/</link><guid isPermaLink="true">http://localhost:4321/dbms/knight-capital-2012/</guid><description>An old code path enabled by a deploy; loose-state assumptions in a trading system; what &apos;shared mutable state&apos; costs at scale.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>postmortem</category><category>Systems &amp; Postmortems</category><category>knight-capital</category><category>trading</category><category>deploy-failure</category><category>feature-flag</category><category>postmortem</category></item><item><title>LSM-Tree Storage</title><link>http://localhost:4321/dbms/lsm-trees/</link><guid isPermaLink="true">http://localhost:4321/dbms/lsm-trees/</guid><description>Memtables, SSTables, compaction. The structure behind LevelDB, RocksDB, Cassandra, ScyllaDB, and DynamoDB&apos;s storage.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Advanced</category><category>building-block</category><category>Storage &amp; Indexes</category><category>lsm</category><category>storage</category><category>write-amplification</category><category>compaction</category><category>rocksdb</category></item><item><title>MVCC — Multi-Version Concurrency Control</title><link>http://localhost:4321/dbms/mvcc/</link><guid isPermaLink="true">http://localhost:4321/dbms/mvcc/</guid><description>Snapshot isolation, vacuum, the trade-off vs lock-based concurrency. Why Postgres, MySQL InnoDB, and Spanner all use MVCC.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Advanced</category><category>building-block</category><category>Storage &amp; Indexes</category><category>mvcc</category><category>snapshot-isolation</category><category>concurrency</category><category>vacuum</category><category>isolation-levels</category></item><item><title>MySQL / InnoDB</title><link>http://localhost:4321/dbms/mysql-innodb/</link><guid isPermaLink="true">http://localhost:4321/dbms/mysql-innodb/</guid><description>The B+ tree clustered-index storage engine, group replication, the historical mistakes and how 8.x undid them.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>system</category><category>Systems &amp; Postmortems</category><category>mysql</category><category>innodb</category><category>clustered-index</category><category>replication</category><category>oltp</category></item><item><title>Query Execution and EXPLAIN Plans</title><link>http://localhost:4321/dbms/query-execution-and-plans/</link><guid isPermaLink="true">http://localhost:4321/dbms/query-execution-and-plans/</guid><description>How the planner reads a query, the cost-based optimizer, EXPLAIN/EXPLAIN ANALYZE, the four operators you&apos;ll see most.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>concept</category><category>SQL</category><category>sql</category><category>explain</category><category>query-plan</category><category>optimizer</category></item><item><title>Relational Algebra Basics</title><link>http://localhost:4321/dbms/relational-algebra-basics/</link><guid isPermaLink="true">http://localhost:4321/dbms/relational-algebra-basics/</guid><description>Selection, projection, join, union, difference. The algebra SQL is compiled into.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>building-block</category><category>Relational Model</category><category>relational-algebra</category><category>query-planning</category><category>joins</category><category>projection</category><category>selection</category></item><item><title>Relational Model Concepts</title><link>http://localhost:4321/dbms/relational-model-concepts/</link><guid isPermaLink="true">http://localhost:4321/dbms/relational-model-concepts/</guid><description>Relations, tuples, attributes, domains. Why the relational model won — composability and a closed algebra.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Relational Model</category><category>relational-model</category><category>relations</category><category>tuples</category><category>attributes</category><category>algebra</category></item><item><title>Row-Store vs Column-Store</title><link>http://localhost:4321/dbms/row-store-vs-column-store/</link><guid isPermaLink="true">http://localhost:4321/dbms/row-store-vs-column-store/</guid><description>Why OLTP is row-oriented and OLAP is column-oriented; the storage layout that explains the performance gap.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>building-block</category><category>Storage &amp; Indexes</category><category>storage-layout</category><category>oltp</category><category>olap</category><category>columnar</category><category>compression</category></item><item><title>SELECT and the WHERE Clause</title><link>http://localhost:4321/dbms/select-and-the-where-clause/</link><guid isPermaLink="true">http://localhost:4321/dbms/select-and-the-where-clause/</guid><description>The shape of every read. Predicate logic, NULL handling, the difference between AND/OR and short-circuit eval.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>building-block</category><category>SQL</category><category>select</category><category>where</category><category>predicates</category><category>null</category><category>three-valued-logic</category></item><item><title>Google Spanner</title><link>http://localhost:4321/dbms/spanner/</link><guid isPermaLink="true">http://localhost:4321/dbms/spanner/</guid><description>TrueTime, externally consistent transactions, Paxos groups, the breakthrough that made global ACID actually work.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Advanced</category><category>system</category><category>Systems &amp; Postmortems</category><category>spanner</category><category>truetime</category><category>paxos</category><category>global-consistency</category><category>distributed-sql</category></item><item><title>Subqueries and CTEs</title><link>http://localhost:4321/dbms/subqueries-and-cte/</link><guid isPermaLink="true">http://localhost:4321/dbms/subqueries-and-cte/</guid><description>Correlated vs non-correlated subqueries, the readability case for CTEs, recursive CTEs for trees.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>building-block</category><category>SQL</category><category>sql</category><category>subquery</category><category>cte</category><category>recursive</category></item><item><title>Write-Ahead Logging and Recovery</title><link>http://localhost:4321/dbms/wal-and-recovery/</link><guid isPermaLink="true">http://localhost:4321/dbms/wal-and-recovery/</guid><description>Why every durable database writes a WAL, ARIES, redo/undo, checkpointing, crash recovery.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>building-block</category><category>Storage &amp; Indexes</category><category>wal</category><category>recovery</category><category>aries</category><category>durability</category><category>checkpointing</category></item><item><title>Weak Entities and Identifying Relationships</title><link>http://localhost:4321/dbms/weak-entities/</link><guid isPermaLink="true">http://localhost:4321/dbms/weak-entities/</guid><description>Entities whose identity depends on another entity, identifying keys, and where this pattern shows up in real schemas.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>concept</category><category>Data Modeling</category><category>er-model</category><category>weak-entities</category><category>identifying-relationships</category><category>composite-keys</category></item><item><title>Why Not Files? The Case for a DBMS</title><link>http://localhost:4321/dbms/why-not-files/</link><guid isPermaLink="true">http://localhost:4321/dbms/why-not-files/</guid><description>The limits of file-based systems that drove the move to databases — redundancy, integrity, concurrency, recovery.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Foundations</category><category>foundations</category><category>dbms</category><category>file-systems</category><category>history</category></item><item><title>Window Functions</title><link>http://localhost:4321/dbms/window-functions/</link><guid isPermaLink="true">http://localhost:4321/dbms/window-functions/</guid><description>OVER, PARTITION BY, ORDER BY, frame clauses. Running totals, ranks, lag/lead — the part of SQL most engineers underuse.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>building-block</category><category>SQL</category><category>sql</category><category>window-functions</category><category>analytics</category><category>partition</category></item><item><title>B-Tree Indexes</title><link>http://localhost:4321/dbms/b-tree-indexes/</link><guid isPermaLink="true">http://localhost:4321/dbms/b-tree-indexes/</guid><description>The classic disk-friendly tree, fanout, leaf-page linking, why every relational DBMS defaults to B-tree.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>building-block</category><category>Storage &amp; Indexes</category><category>b-tree</category><category>indexes</category><category>storage</category><category>oltp</category></item><item><title>Entity-Relationship Model — Entities, Attributes, Keys</title><link>http://localhost:4321/dbms/er-model-basics/</link><guid isPermaLink="true">http://localhost:4321/dbms/er-model-basics/</guid><description>Entities, attributes, primary keys; entity sets vs entity types; the smallest vocabulary to design a schema.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Data Modeling</category><category>er-model</category><category>data-modeling</category><category>schema-design</category><category>keys</category></item><item><title>PostgreSQL — The Reference Open-Source RDBMS</title><link>http://localhost:4321/dbms/postgresql/</link><guid isPermaLink="true">http://localhost:4321/dbms/postgresql/</guid><description>Process-per-connection model, MVCC, the planner, extensibility (FDW, custom types), and what makes Postgres the default.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><category>Intermediate</category><category>system</category><category>Systems &amp; Postmortems</category><category>postgresql</category><category>rdbms</category><category>mvcc</category><category>wal</category><category>replication</category></item><item><title>Transactions and ACID</title><link>http://localhost:4321/dbms/transactions-acid/</link><guid isPermaLink="true">http://localhost:4321/dbms/transactions-acid/</guid><description>Atomicity, Consistency, Isolation, Durability. What each one promises and where each one bends in practice.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Relational Model</category><category>transactions</category><category>acid</category><category>isolation</category><category>durability</category></item><item><title>What Is a Database?</title><link>http://localhost:4321/dbms/what-is-a-database/</link><guid isPermaLink="true">http://localhost:4321/dbms/what-is-a-database/</guid><description>A shared, structured, queryable, persistent collection of data — and the DBMS that gives those four properties teeth.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><category>Foundational</category><category>concept</category><category>Foundations</category><category>foundations</category><category>dbms</category><category>definitions</category><category>architecture</category></item></channel></rss>