도는 앱 안 깨는 schema 변경
대부분 schema 변경 (ADD COLUMN, CREATE INDEX) 은 도는 SQLite DB 에 적용 안전. 위험한 거 — DROP COLUMN, type 변경, 큰 테이블 재작성 — 더 신경.
- Additive 변경 (DEFAULT 있는 ADD COLUMN, CREATE INDEX, CREATE TABLE) — startup 에 적용, 짧은 락, 끝.
- Rename (RENAME TABLE/COLUMN) — 모던 SQLite 에선 빠른 metadata 변경.
- 파괴적 변경 (DROP COLUMN, CTAS 통한 type 변경) — 옛 코드 살아있는 동안 안전한 마이그레이션: 새 컬럼 ADD, 양쪽 쓰는 코드 deploy, backfill, 새 거 read 코드 deploy, 옛 거 drop.
- 거대 테이블 인덱스 생성 — 동안 락. Low-traffic window schedule, 또는 STRICT 테이블의
indexed_columns로 work 작게.
Warning: Postgres 와 달리 SQLite 가 concurrent index 생성 X. 1억 row 테이블
CREATE INDEX 가 동안 write 락. 계획 — 사본에서 측정 먼저, 필요하면 maintenance window 에 deploy.