나는 이것에 많은 경험이있다. 내 응용 프로그램은 매우 반복적이며 스키마 변경은 자주 발생합니다. 대략 2 ~ 3 주마다 프로덕션 릴리스를 수행하며 각 항목에 대해 FogBugz 목록에서 50 ~ 100 개의 항목을 지 웁니다. 지난 몇 년간 우리가 해왔 던 모든 릴리스에는 새로운 기능을 지원하기위한 스키마 변경이 필요했습니다.
실제 서버에서 변경하기 전에 테스트 환경에서 변경 사항을 여러 번 연습하는 것이 핵심입니다.
서식 파일에서 복사 된 다음 배포본마다 자주 변경되는 배포 체크리스트 파일을 보관합니다.
나는 데이터베이스에서 실행되는 두 개의 스크립트를 가지고 있는데, 하나는 스키마 변경을위한 것이고 하나는 프로그래밍 가능성 (프로 시저, 뷰 등)을위한 것입니다. 변경 스크립트는 손으로 코딩되며 procs가있는 스크립트는 Powershell을 통해 스크립팅됩니다. 변경 스크립트는 모든 기능이 꺼져있을 때 실행됩니다 (이 경우 가장 적은 양의 사용자를 괴롭히는 시간을 선택해야합니다). 그리고 이상한 일이 생길 때를 대비하여 수동으로 명령으로 명령을 실행합니다. 가장 일반적인 문제는 중복 행으로 인해 실패한 고유 제한 조건을 추가하는 것입니다.
통합 테스트주기를 준비 할 때 테스트 서버의 체크리스트를 살펴 봅니다. 그런 다음, 프로덕션 데이터베이스의 실제 복사본을 얻습니다 (이것은 오프 사이트 백업을 스왑하는 좋은시기입니다). 그리고 복원 된 로컬 버전에서 스크립트를 실행합니다. 최신 백업은 소리입니다). 나는 돌 하나를 가지고 많은 새를 죽이고있다.
- 데브 : 모든 변화는 결코 스튜디오와 함께, 변경 스크립트에서 이루어져야한다
는 그래서 4 데이터베이스 총입니다.
- 테스트 : 통합 테스트는 여기에 생산
- 복사를 발생 : 마지막 분 배포 연습
- 생산 당신은 정말, 정말 당신이 생산에 그것을 할 때 바로 그것을 얻을 필요가
. 스키마 변경을 백업하는 것은 어렵습니다.
핫픽스에 관한 한, 매우 고립 된 변화이고 비즈니스에 결정적이지 않은 한, 핫픽스는 프로 시저가 아닌 스키마 만 제공합니다.