2011-08-25 4 views
1

일반적으로 데이터베이스 스키마는 시간이 지남에 따라 변경됩니다. 빌드간에 0에서 많은 스키마 변경이 발생할 수 있습니다. 이러한 변경 사항을 캡처하기위한 "모범 사례"는 무엇입니까?데이터베이스 업그레이드 방법

예를 들어, 2 명의 개발자가 프로젝트에서 작업하고 git을 소스 제어에 사용한다고합시다. 그들은 금요일에 건축하는 것에 동의합니다. 각각은 현재 스키마로 갱신되는 데이터베이스 이주 스크립트로 변경 사항을 체크인하여 작업에 대해 설명합니다. 사람 A가 사람 B의 변경 사항을 가져올 때 실행할 업 그레 이드 스크립트를 쉽게 알 수있는 방법은 무엇입니까? 어떤 사람이 서버의 데이터베이스를보고있을 때 어떤 버전의 서버인지 알 수 있습니까? 데이터베이스가 버전 번호를 캡처하면 금요일에 팀원 중 한 명이 다른 사람들에게 "좋아, 모두들 체크인했다. 다음 버전 번호를 업데이트하는 스크립트를 작성하겠다. 버전을 확인하고 체크인하십시오. "

여기에 접근하는 표준 방법이 있습니까? 감사.

답변

1

시스템의 안정 버전이 아닌 데이터베이스 [구조] 변경 당 하나의 마이그레이션을 작성하는 것을 고려하십시오. 코드 수정과 마찬가지로 : 모든 변경 사항은 시스템을 업데이트하고 버전 (버전 아님)을 증가시킵니다.

보통 우리는 데이터베이스 수정 버전을 ('공개'버전과 함께) 특별한 테이블에 저장합니다. 때로는이 데이터베이스에 적용된 이주 스크립트의 이름을 저장하지만 더 복잡한 해결책입니다. 파일 이름에 마이그레이션을 적용한 후 데이터베이스를 수정하는 것이 편리합니다. 이주 스크립트의 마지막 행은 특수 테이블의 이주 버전을 갱신합니다.

특정 개발자의 데이터베이스에 적용 할 마이그레이션을 결정하려면 특수 테이블에 저장된 데이터베이스의 개정보다 버전 번호가 높은 모든 마이그레이션을 수행하면됩니다.

+0

답변 해 주셔서 감사합니다. 두 개발자가 동시에 작업하고 있으며 둘 다 데이터베이스를 변경 했으므로 마이그레이션 스크립트를 만들어야한다고 가정 해보십시오. 데이터베이스 개정판을 어떻게 알 수 있습니까? 동일한 번호가 나오기 때문에 "이전 개정 번호 + 1"둘 다 할 수 없습니다. – skaz

+0

버전 관리하에 데이터베이스 모델을 저장하고 변경시 잠금을 유지하며 모델링 도구로 마이그레이션 스크립트가 자동 생성되므로 사용자가 설명하는 상황이 불가능합니다. 또한 소스 제어 잠금을 사용하여 동시 변경을 수행 할 수 있습니다 сщтыусгешмую – artplastika

관련 문제