A new column was the only way forward.
Adding a new column sounds simple, but it changes the shape of your data model and every query that touches it. Done right, it unlocks new features and insights. Done wrong, it breaks systems at scale. The key is knowing when and how to add it so that migrations are safe, fast, and backward‑compatible.
In relational databases, a new column must fit into existing schemas without forcing downtime. This means auditing every dependent service, updating ORM models, and handling default values in a way that avoids full‑table rewrites. For distributed systems, you need a phased rollout: first add the nullable column, then start writing to it, and only then enforce constraints.
With SQL, use ALTER TABLE carefully—it can trigger locks that block reads or writes. Check your database engine’s behavior for metadata‑only changes versus full copies. In PostgreSQL, adding a new nullable column is nearly instant. Adding it with a default non‑null value rewrites the table. The common pattern: add the column as NULL, backfill in batches, then set NOT NULL when complete.