2009-02-04 3 views
12

버전 관리하에 데이터베이스 스키마를 가져 오는 옵션을 살펴 보았습니다. 루비 사람들이 Rails Migrations을 갖고 있고 .NET 사용자가 몇 가지 옵션을 가지고있는 것으로 보입니다 (예 : this, thisthis). Perl은 어떻습니까?Perl을 사용하여 데이터베이스를 버전 제어 할 수 있습니까?

나는이 thread on PerlMonks을 많이 보았지만, DBIX::Migration::Directories을 언급했다. 이 모듈이나 다른 모듈을 실제로 사용하는 사람이 있습니까? 아니면 자신 만의 DB 마이그레이션 솔루션을 사용하고 있습니까?

무상 세부 정보 :

  • 우리는 우리는 우리는 우리가 사용하는 POPFile에서 SVN

답변

3

사용 MySQL은

  • 를 사용하는 대부분의
  • 아니 사용 DBIx :: 수업을 우리 자신의 솔루션. 우리는 db에 스키마 버전 번호를 저장하고, 프로그램이 더 새로운 스키마가 있음을 감지하면 그에 따라 db를 업데이트합니다. 이것은 우리 코드의 가장 훌륭하고 재미있는 부분이 아닙니다.

    아직 DBIx :: Class를 사용하고 있지 않다면 DBIx :: Migration :: Directories를 사용하는 이점을 보지 못했습니다. SQL, 버전 번호 및 데이터베이스 핸들을 제공해야합니다. SQL 파일을 찾고 데이터베이스에 공급하는 코드를 조금 더 제공 할 수도 있습니다.

    물론 버전 관리에서 스키마를 갖는 것이 큰 보너스입니다.

  • 6

    매우 흥미로운 프로젝트 중 하나 인 Adam Kennedy의 ORLite::Migrate은 Rails 마이그레이션에서 영감을 얻은 것입니다. 그는 자신의 계획에 대해 use.perl.org에서 wrote up a very interesting journal을 끝 마치고 미래에 대해 계속 지켜봐 주길 바랍니다.

    이 패키지는 현재 SQLite에서만 작동하는 것으로 보입니다.하지만 아담이 향후이 데이터베이스를 더 이상적으로 사용하지 않을 계획이라고 생각합니다.

    +1

    4/27/12 현재, 여전히 SQLite 만 지원하는 것으로 보입니다. –

    3

    우리는 Manni가 설명한 것과 유사한 시스템을 사용합니다. 두 개의 큰 단점은 다음과 같습니다

    • 스키마 변경을 롤백 할 수 없습니다 (일반적으로이 어쨌든 그래서 수동으로 할 필요하면 IMO 큰 문제가되지 않습니다, 희소 잘 테스트 및 하드입니다).

    • 연속적인 버전 번호를 사용하면 여러 분기에서 개발할 때 고통 스럽습니다. SVN을 사용하고 있으므로 git를 사용하는 것처럼 문제가되지는 않습니다. database_update 작은 example data file있다 : :-)

    내가 사용하는 스크립트 스크립트 것은 여기에있다.

    7

    직장에서 우리는 DBIx::Migration의 수정 된 버전을 사용합니다 (마이그레이션에는 10 개 이하의 제한이 있습니다). 그런 다음 데이터베이스에서 덤프 한 핵심 스키마가 있고 버전 번호가 너무 낮 으면 마이그레이션 스키마 디렉토리의 마이그레이션을 사용하여 데이터베이스를 업그레이드합니다.

    Database Refactoring 장을 적극 권장합니다.그 중에서도 특히 마이그레이션을 관리하기위한 훌륭한 기술을 알려 드릴 것입니다 롤백해야 할 경우 데이터가 손실되지 않도록해야합니다 (예 : 필요없는 컬럼을 삭제할 때) .

    자동 비추천 일정에 도움이되도록 비 시세를 수행 할시기를 기억할 필요가 없도록 Devel::Deprecate으로 작성했습니다. 코드가 큰 소리로 불만을 토로합니다 (테스트 중에 만, 생산 중이 아닙니다).

    중요 : 당신은 정기적으로 최소 기본 마이그레이션이 재건하는 데 시간이 너무 오래 걸리기 때문에 당신이 때때로 "최대 범프"해야합니다이 기술에 많은 데이터베이스 마이그레이션 수준을 적용하고 있음을 확인할 수 있습니다 데이터베이스 원하는 마이 그 레이션 레벨에서 데이터베이스의 새로운 덤프를 가져 와서 그 레벨보다 작거나 같은 모든 마이 그 레이션을 제거하십시오.

    업데이트 : 빨리 감기 몇 년 오늘 나는 sqitch하는 것이 좋습니다. 특정 프로그래밍 언어 또는 VCS에 묶이지 않고 데이터베이스를 버전 제어하에 배치하는 경우를 처리하도록 처음부터 고안되었습니다.

    0

    재미있는 CPAN 모듈 (Database::Migrator)이 있습니다. 나는 그것을 사용했고 프로젝트의 마이그레이션을 처리하기 위해 잘 작동한다.

    각 마이그레이션은 고유 한 디렉토리로 이동합니다. 마이그레이션은 정렬 된 순서로 적용되며 대개 번호 접두사로 시작하는 이름을 지정합니다. 이주 디렉토리는 SQL 또는 Perl이있는 파일을 포함 할 수 있습니다.

    3

    어때 대략 ?

    관련 문제