2013-03-14 1 views
2

효율적인 시스템 마이그레이션을 관리하는 훌륭한 도구 인 것처럼 우리는 플라이웨이를 시스템에 통합하는 방법을 고려하고 있습니다.기존 시스템에 플라이 웨이 통합

그러나, 나는 진행하는 방법을 아주 확실하지 않다 :

우리는 세 가지 다른 데이터베이스

  1. 생산 환경 (MySQL의)
  2. 테스트 환경 (MySQL의)
  3. 단위 테스트 (H2 메모리 내)

이들은 모두 서로 다른 데이터 (다른 사용자 등)를 포함합니다. 데이터베이스 사이에 일반적인 데이터 (flyway 페이지에서 참조 데이터라고 함)가 없으므로 구조 만 동일하게 유지되어야합니다.

나의 이해는 다음과 같이 진행되는 웹 사이트에서 상대 :

  1. 우리는 우리의 생산 환경에서 스키마 버전을 추출 및 V1__BASE_version.sql 같은 파일이 저장해야합니다. 나는 이것을 할 것이다. 이와 :

    mysqldump는 -d -u

  2. 우리는 DDL은 또한 구조의 덤프를 가져오고 비교하여 테스트 환경의 일치하는지 확인 호스트 이름 DBNAME -h 사용자 이름 -p 암호 구조를 생산 시스템에서 시작합니다 (diff로 시작한 다음 수동으로 명확하지 않은 위치에서 수동으로 시작). 우리가 어떤 차이점을 발견 할 가능성이 희박한 상황에서 우리는 테스트 또는 라이브 (더 의미가있는 것에 따라 다름)를 위해 db 구조를 변경함으로써 제거합니다.

  3. 홈페이지에서 설명한대로 초기 버전의 데이터로 모든 데이터베이스를 초기화합니다. 다른 데이터베이스의 경우 다른 -Durl =, -Dusername = 및 -Dpassword = paramters를 사용합니다.

    MVN 이동 경로 : 초기화 -Dflyway.initVersion = 1 -Dflyway.initDescription = "기본 버전"

  4. 는 (홈페이지에 설명) 이동 경로를 선택하기 위해 스프링 설정을 구성합니다. 이렇게하면 마이그레이션이 자동으로 적용되고 데이터베이스가 응용 프로그램과 일관성있는 상태가됩니다.

올바른 방법입니까? 중요한 단계를 잊어 버렸습니까?

내가 하나가 메모리 데이터베이스에 테스트 데이터를 추가하는 방법에 대한 질문이 남아있다 : ​​

어디 단위 테스트 데이터를 인세 올바른 장소는? 심지어 I 설정하면 것은 스프링을 사용하여 이동 경로 및 최대 절전을하는 것은

<bean id="sessionFactory" class="..." depends-on="flyway"> 
... 
</bean> 

데이터 소스가 이전에 생성됩니다 사용에 따라이 현재 우리가 우리의 스키마 및 테스트 데이터를 추가하는 장소입니다. 데이터 소스를 생성 할 때 샘플 데이터를 추가하는 경우 실수하지 않으면 스키마가 올바르지 않습니다.

메모리 내 데이터베이스를 사용하여 flyway에서 테스트 데이터를 어떻게 사용할 수 있습니까?

감사합니다.

답변

2

테스트 데이터 스크립트가 포함 된 추가 위치를 구성 할 수 있습니다. 이것은 단위 테스트를 위해서만 포함되도록 구성되어야합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 내가 사용하고있는 스프링 프로파일에 따라'com.googlecode.flyway.core.Flyway'의 위치 속성을 사용하여 이동 경로로 이것을 구성한다고 가정합니다. 그게 당신이 의미 한 것입니까? 다른 단계는 괜찮아 보입니까? – David

+1

flyway.setLocations (...) 예 다른 단계는 괜찮습니다. –