문제

직장에는 4 명의 사람들이 몇 가지 다른 프로젝트에서 함께 일하고 있습니다. 각 프로젝트마다 우리는 각각 우리가 작업하는 로컬 사본을 가지고 있으며, 우리가 가진 지점과 함께 개발, 준비 및 라이브 배치가 있습니다 (우리는 전복을 사용합니다). 데이터베이스는 MySQL입니다.

따라서 제 질문은 각 배포 (및 개발자에게 로컬 카피)에 대한 데이터베이스에 대한 수정 사항을 관리하는 좋은 방법입니다. 현재 각 변경 사항은 이름으로 타임 스탬프 된 텍스트 파일로 이동하여 프로젝트에 따라 폴더에 넣습니다. 이것은 솔직히 잘 작동하지 않습니다. 나는 어디에 적용된 것을 추적하는 데 도움이되는 솔루션이 필요합니다.

도움이 되었습니까?

해결책

데이터베이스가 일련의 데이터 액세스 오브젝트 세트에 잘 맵핑되면 '마이그레이션'사용을 고려하십시오. 아이디어는 각 데이터베이스 버전을 통해 앞뒤로 이동하기위한 단계와 함께 데이터 모델을 응용 프로그램 코드로 저장하는 것입니다.

나는 믿는다 Rails는 먼저 해냈습니다.

자바가 있습니다 하나 이상의 프로젝트.

그리고 여기에 a .NET 마이그레이션 라이브러리.

버전을 변경하려면 원하는 버전으로 이동하여 모든 위 또는 다운 버전을 밟는 간단한 스크립트를 실행합니다. 그것의 아름다움은, 당신은 당신의 앱 코드와 동일한 소스 저장소로 마이그레이션을 확인하는 것입니다. 그것은 모두 한 곳입니다.

어쩌면 다른 사람들은 다른 마이그레이션 라이브러리를 제안 할 수 있습니다.

건배.

편집 : 참조하십시오 https://stackoverflow.com/questions/313/net-migrations-engine 그리고 .NET 데이터베이스 마이그레이션 도구 라운드 업 (위의 게시물에서).

다른 팁

http://odetocode.com/blogs/scott/archive/2008/01/30/11702.aspx

위의 블로그는 현재 데이터베이스 버전 제어 시스템으로 가져 왔습니다. 간단히 말해서, 업데이트 스크립트 없이는 DB 변경이 이루어지지 않으며 모든 업데이트 스크립트가 소스 제어 저장소에 있습니다.

우리는 스키마 변경 만 관리하지만 버전 제어에서도 데이터의 덤프를 유지하는 것을 고려할 수도 있고 기꺼이 생각할 수도 있습니다. 그러한 파일을 만드는 것은 mysqldump를 사용하여 매우 사소한 운동입니다.

당사의 솔루션은 블로그에 제시된 솔루션과 하나의 주요 방식으로 다릅니다. 자동화되지 않습니다. 우리는 데이터베이스 업데이트 등을 직접 적용해야합니다. 이것은 약간 시간이 많이 걸릴 수 있지만, 완전 자동화 된 시스템에 필요한 일부 노력을 연기했습니다. 그러나 우리가 자동화 한 한 가지는 소프트웨어의 DB 버전 추적이었습니다. 이것은 매우 간단했으며 소프트웨어가 데이터베이스를 알고있는 데이터베이스를 알고 있으며 작동하는 스키마를 알고있는 경우에만 실행됩니다.

솔루션의 가장 어려운 부분은 지점에서 트렁크로 업데이트를 병합하는 방법이었습니다. 우리는 두 명의 개발자가 DB 업데이트와 동시에 지점을 병합하려는 두 개발자의 가능성과 처리 방법을 해결하기 위해 워크 플로를 개발하는 데 시간을 보냈습니다. 우리는 결국 버전 컨트롤에서 파일을 잠그기 위해 정착했습니다 (문제의 파일은 실제로 수동 관리 전략에 도움이되는 DB 버전에 대한 테이블 매핑 소프트웨어 버전입니다)와 스레드의 중요한 섹션과 마찬가지로 자물쇠는 트렁크의 업데이트를 진행합니다. 완료되면 다른 개발자는 잠글 수 있으며 예상 버전 충돌 및 기타 나쁜 주주를 피하기 위해 스크립트를 변경하는 것이 책임입니다.

모든 데이터베이스 스크립트 (데이터 및 스키마/DDL)를 버전 제어에 보관합니다. 또한 변경 사항의 중앙 카탈로그를 유지합니다. 개발자가 스키마/DDL 파일을 변경하거나 어떤 방식으로 데이터를 변경하는 스크립트를 추가하면 해당 파일이 SVN 커밋 번호와 함께 카탈로그에 추가됩니다.

카탈로그 변경을 읽고 카탈로그의 각 개정에서 내용을 잡고 적용하여 카탈로그의 내용을 기반으로 큰 업데이트 스크립트를 작성하는 작은 유틸리티 사내를 모았습니다. 개념은 그것과 매우 유사합니다 dbdeploy 내가 원래 믿는 도구 생각 이사, 당신은 그것을 활용할 수 있습니다. 적어도 시작하기에 좋은 장소를 제공 할 것입니다.이 시점에서 필요에 더 직접적으로 솔루션을 사용자 정의 할 수 있습니다.

행운을 빌어 요!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top