Database migration на собеседовании системного аналитика
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем разбирать на собесе
DB migration — частая task. На собесе SA: «как добавить колонку в huge таблицу», «zero-downtime».
Schema versioning
DB schema — code. Versioned в git.
Tools:
- Flyway, Liquibase (Java).
- Alembic (Python SQLAlchemy).
- Migrate-go (Go).
- dbmate.
Каждая migration — incremental file:
V001__create_users.sql
V002__add_email_index.sql
V003__add_phone_column.sqlTool tracks applied migrations в schema_migrations таблице.
Expand-contract pattern
Для backwards-compatible schema changes без downtime.
Идея. Не direct change. Sequence:
- Expand. Add new structure (column / table). Old code продолжает работать.
- Migrate. Update code писать в new + old. Backfill old → new data.
- Contract. После всё migrated, remove old.
Example: rename column name → full_name.
Step 1: Add `full_name` column. Old code writes to `name`, new code writes к both.
Step 2: Backfill `full_name = name` существующих rows.
Step 3: Old code → new (read / write only `full_name`).
Step 4: Remove `name`.Каждый step — independent deploy. Rollback safe.
Backwards-compatible changes
Safe (без downtime):
- Add column (nullable).
- Add table.
- Add index (использовать
CONCURRENTLYв Postgres). - Increase varchar length (sometimes).
Unsafe (требуют lock / downtime):
- Drop column / table.
- Rename column.
- Make column NOT NULL без default.
- Change column type (incompatible).
- Add UNIQUE constraint без validation.
В Postgres — many DDL took ACCESS EXCLUSIVE lock — blocks readers / writers.
Zero-downtime
Read replicas. Apply migration на replica → switch traffic.
Online migrations.
- pt-online-schema-change (MySQL) — copies table.
- pg_repack (Postgres) — rewrites table.
- gh-ost (GitHub Online Schema Migration).
Application-side. Feature flag controls reading new vs old structure.
Tools
Schema migration: Flyway, Liquibase, Alembic, dbmate.
Online migration: pg_repack, pt-online-schema-change.
ORM-integrated: Django migrations, Rails ActiveRecord migrations.
For DWH: dbt (snapshot tests, structure changes).
Связанные темы
- Schema evolution для DE
- Migration patterns для SA
- Транзакции и MVCC для DE
- Feature flags для SA
- Подготовка к собесу системного аналитика
FAQ
Это официальная информация?
Нет. Статья основана на индустриальных best practices schema management.
Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.