피드로 돌아가기
Dev.toDatabase
원문 읽기
단일 거대 SQL 덤프를 객체별 파일로 분리해 Git Diff 가독성 극대화
A Better Way to Store PostgreSQL Schemas in Git
AI 요약
Context
pg_dump의 단일 파일 출력 방식으로 인해 수만 라인의 거대 스키마 파일 발생. 작은 변경에도 대규모 Diff가 생성되어 코드 리뷰 효율 저하 및 Merge Conflict 빈도 증가하는 한계 직면.
Technical Solution
- Database Object별 독립 파일 매핑을 통한 소스 코드 형태의 스키마 관리 구조 설계
- Tables, Views, Functions 등 객체 타입별 디렉토리 계층 구조 적용으로 탐색 비용 감소
- 객체 간 의존성 순서를 고려한 Automatic Dependency Ordering 로직 구현으로 배포 안정성 확보
- Live Database 직접 추출 및 기존 pg_dump 파일 분할 기능을 통한 유연한 데이터 소스 처리
- deploy.sql 스크립트 자동 생성으로 분산된 파일의 통합 실행 가능 구조 마련
- State-based 접근 방식을 통한 현재 스키마 상태의 버전 관리 및 비교 분석 기능 제공
실천 포인트
- 거대 단일 스키마 파일의 Git 관리 대신 객체 단위 분할 저장 검토 - Migration tool(Flyway, Liquibase)과 병행하여 현재 상태(State)를 추적하는 버전 관리 체계 구축 - DB 변경 사항 리뷰 시 영향도 파악을 위해 객체별 개별 파일 기반의 Diff 프로세스 도입