Every rebellion ends the same way: SQL grows a type, the engine grows an index — is the agentic era lap seven, or the first genuine exception?
Lecture 1 — Fifty Years of Data-Model Rebellions · Lecture 2 — Final Debate: the First Genuine Exception?
Stonebraker wrote the same paper twice, nineteen years apart. Both times he was right.
GET NEXT WITHIN PARENT loops.$lookup join.a rebellion needs ~ten years to rebuild recovery, concurrency, statistics, drivers, a planner — the incumbent bolts the one good idea into a socket in ~two release cycles.
| Rebellion (peak) | The real pain | How SQL absorbed it |
|---|---|---|
| Hierarchical / CODASYL (1968–80) | — (incumbent) | n/a — relational won outright |
| OODB (1988–98) | impedance mismatch | SQL:1999 structured types; ORMs |
| XML (1998–2008) | semi-structured data | SQL/XML:2003 type + indexes |
| MapReduce (2004–14) | petabyte scale | SQL-on-Hadoop; warehouse scale-out |
| NoSQL (2007–15) | planet-scale writes | JSON in SQL:2016/2023; distributed SQL |
| Graph (2010–) | multi-hop traversal | SQL:2023 SQL/PGQ — in real time |
Resolved: vectors, semantic operators, and agent memory are the next XML.
pgvector 0.5 shipped HNSW in 2023; within a year Oracle, SQL Server, MySQL, DuckDB, and the cloud warehouses all had a vector type and an ANN index — the XML choreography, executed in eighteen months instead of ten years.
WHERE llm_judge(review, …) — scalar function, weird cost.-- 2026, one engine, one statement
SELECT p.sku, p.meta->>'title' AS title,
embedding <=> :query_vec AS dist
FROM products p
WHERE p.meta @> '{"status":"active"}' -- the JSON rebellion
ORDER BY embedding <=> :query_vec -- the vector rebellion
LIMIT 20; -- HNSW scan, costed like any other
Agents speak SQL through MCP — we taught the new client the old language.
ef_search, ≈ 0.99 at another.one semantic join over a 10⁴ × 10⁴ pair space = 10⁸ model calls ≈ $7,500 for a single query. Plan choice is now a procurement decision.
a silent model-version bump flipped 4% of cached semantic-filter verdicts — and a downstream aggregate a procurement agent acted on. The fix: pin model versions like schema versions; treat an upgrade as a migration with a backfill.
WITH RECALL 0.95 CONFIDENCE 0.9 → absorption.