pg-delta 기반 선언형 스키마 관리
Supabase CLI에 pg-delta와 선언형 스키마 동기화 워크플로가 추가됐다.
교안에 영향
예전에는 supabase db diff와 스키마 관리가 다른 도구나 수동 마이그레이션 안내에 의존했지만, 이제는 pg-delta와 declarative sync 안내가 중심이라 옛 방식 설명이 맞지 않을 수 있다.
요약
- Supabase CLI에 pg-delta 기반의 선언형 스키마 관리가 실험적으로 추가됐다. - supabase db diff가 pg-delta를 diff 엔진으로 사용할 수 있고, --from과 --to 참조도 지원한다. - supabase db schema declarative sync로 .sql 파일을 기준으로 스키마를 동기화하고 마이그레이션을 생성한다. - config.toml의 [experimental.pgdelta] 설정과 --experimental, --apply, --name으로 기능과 자동 적용을 제어할 수 있다. - 캐시를 사용해 반복 실행을 빠르게 하고, 삭제 작업이 포함되면 적용 전 경고한다.
바뀐 것
새 기능
- pg-delta를 새 Postgres 스키마 diff 엔진으로 도입했다.
- supabase db diff에서 --use-pg-delta를 사용할 수 있게 했다.
- supabase db diff가 --from migrations와 --to local 같은 명시적 소스·대상 참조를 지원한다.
- supabase db schema declarative sync 명령을 추가해 선언형 스키마 동기화를 지원한다.
- declare형 스키마를 .sql 파일로 관리하고, 파일 순서에 관계없이 실행 순서를 계산한다.
- 선언형 스키마가 없으면 로컬 데이터베이스나 Custom database URL에서 생성하는 초기 설정 흐름을 제공한다.
- supabase/database/ 아래에 선언형 스키마를 내보내는 기능을 추가했다.
개선
- supabase db schema declarative sync가 마이그레이션 이름 지정과 로컬 데이터베이스 적용 여부를 묻는 흐름을 제공한다.
- 파괴적 변경이 포함된 경우 적용 전에 경고를 표시한다.
- 후속 실행에서 다시 그림자 데이터베이스 작업을 반복하지 않도록 catalog caching을 사용한다.
- --apply와 --name 플래그로 대화형 질문 없이 실행할 수 있게 했다.
- config.toml의 [experimental.pgdelta] enabled와 declarative_schema_path 설정으로 기능과 경로를 조정할 수 있다.
기타
- pg-delta는 TypeScript로 작성되었고 supabase/pg-toolbelt 모노레포의 pg-topo와 함께 제공된다.