데브허브 | DEVHUB | From Migrations to Declarations: How Supabase Simplifies Database ManagementFrom Migrations to Declarations: How Supabase Simplifies Database Management
- 기존 마이그레이션 방식은 스키마 정의가 여러 파일에 분산되어 현재 상태 파악 및 변경 추적이 어려웠습니다. 🧩
- Supabase의 선언적 스키마는 전체 데이터베이스 구조를 단일(또는 여러) 스키마 파일에 정의하여 이 문제를 해결합니다. 📝
supabase db diff 명령어를 통해 스키마 파일의 변경 사항을 자동으로 감지하고 적절한 마이그레이션 파일을 생성합니다. 🤖
- 테이블, 뷰, 함수, RLS(Row Level Security) 정책 등 다양한 SQL 객체를 스키마 파일 내에서 선언적으로 관리할 수 있습니다. ✅
- 새로운 컬럼 추가나 기존 객체 수정 시, 스키마 파일에 한 줄만 추가하거나 정의를 변경하면 Supabase가 자동으로 마이그레이션을 처리합니다. ✍️
- 스키마 파일이 커지면
schemas 디렉토리 내에 여러 개의 작은 파일(예: profiles.sql, posts.sql)로 분할하여 관리할 수 있습니다. 📂
- 테이블 간의 의존성(예: 외래 키)이 있는 경우,
config.toml 파일에서 스키마 파일 적용 순서를 명시하여 충돌을 방지할 수 있습니다. 🔗
db diff 도구가 모든 경우에 완벽하지 않으므로, 생성된 마이그레이션 파일을 항상 검토하고 supabase db reset으로 로컬 테스트를 통해 검증해야 합니다. ⚠️
- 기존 Supabase 프로젝트는 특정 명령어를 사용하여 현재 스키마를 단일 파일로 추출한 후 선언적 방식으로 전환할 수 있습니다. ⬇️