2012-07-24 2 views
3

liquibase 및 flyway와 같은 도구를 사용하면 데이터베이스를 쉽게 업그레이드 할 수 있습니다. 필자가 생각하지 못한 것은 릴리스 지점과 트렁크 모두에서 발생하는 변경 사항을 가장 잘 처리하는 방법입니다.데이터베이스 변경 관리 - 지점 및 트렁크의 변경 사항을 처리하는 방법

예 : 제품에

내 코드 버전 2.5 및 릴리스 지점에 살고있다. 그동안 개발자는 트렁크에있는 버전 3.0에 대한 작업을 시작했습니다.

프로덕션 환경에 버그가 있습니다. 데이터베이스 변경 스크립트가 만들어지고 (2.5.1) 릴리스 분기에 커밋됩니다. 동일한 변경 스크립트를 트렁크 (3.0.1?)에 병합해야합니다.

버전 3.x는 야생 프로덕션 db에 출시되어 이미 2.5.1 버전에서 변경되었습니다. 업그레이드가 실패 할 수 있습니다.

반대로 전진 전략을 사용하는 경우 처음부터 db를 만들면 동일한 변경 사항이 두 번 발생합니다 (2.5.1 및 3.0.1).

다른 사람들이이 시나리오를 어떻게 처리합니까?

답변

0

프로덕션 DB 변경 사항은 항상 선형임을 인식하고 있습니다.

이 문제를 해결하려면 DB 마이그레이션 2.5.1을 지점과 트렁크에 모두 배치해야합니다. 그리고 같은 변화로 3.0.1을 만들지 마라!

이렇게하면 지점과 함께 배포되지만 트렁크도 함께 배포됩니다. 트렁크에

업그레이드 생산은

  • 찾기 마이그레이션 2.5.1는 이미
  • 찾기 마이그레이션 3.0을 적용하고있다, 그것은을 건너 뛰고 2.5.1 DB에 적용됩니다

물론 더 나은 해결책이 있습니다. 그리고 그것은 가지를 모두 없애고 트렁크에서 항상 기능 토글을 사용하여 놓는 것입니다.

+0

소프트웨어 개발의 현재 개념은 오래 살아있는 가지를 피하는 것이지만, 적어도 가까운 미래에는 우리 중 일부는 그 문제에 매달리고 있습니다. 나는이 환경에서 플라이 웨이가 조금 어수선하다는 것을 알게되었다. 몇 년 동안 지난 릴리스를 지원하기 위해 노력 중이라면 체리 피킹 버그 수정을 처리 할 수 ​​있어야합니다. 이것은 "트렁크"개발에 수개월이 걸렸을 수도 있습니다. 적절한 순서를 보장하기 위해 마이그레이션 파일 이름에 릴리즈를 포함하도록 남겨 두었습니다. 즉, 항상 분기에서 변경 사항을 생성하여 dev에서 순서가 맞지 않는 마이그레이션을 수행 할 수 있습니다. – Kyle

관련 문제