2009-05-27 3 views
4

우리는 다른 위치에서 개발 프로젝트를 수행하는 소규모 개발 팀 (약 5 명)입니다. SVN을 out code repo로 사용합니다.
우리가 지금 가지고있는 가장 큰 문제는 우리 모두의 DB 스키마가 완전히 동기화되지 않는다는 것입니다. 다음 옵션 중 하나만 있습니다. 1. "중앙"DB를 정리하십시오. 이것은 나쁜 아이디어이며 대부분 발생하지 않을 것입니다 2. DB의 버전을 유지하고 각 개발자가 변경 사항을 최신으로 유지할 "게이트 키퍼"개발자를 확보하십시오. 3. 각 개발자가 변경 내용을 DB 변경 스크립트로 확인하도록합니다. 정말 지저분해질 수 있습니다.개발자간에 SQL 데이터베이스 스키마 동기화 유지

죄송합니다 그냥

어떤 아이디어가 닷넷 C# 프로젝트라고 언급?

답변

0

Visual Studio Team Database Edition을 사용해 보셨습니까? 이 도구를 사용하면 전체 소스 데이터베이스를 소스 컨트롤에 넣을 수 있으며 각 개발자는 자신의 변경 사항을 처리 할 수 ​​있습니다. 그런 다음 다른 개발자는 해당 변경 사항을 자신의 작업 복사본에 쉽게 배포 할 수 있습니다.

MSSCCI 공급자와 함께 작동하는 SVN 플러그인이 있는지 확실하지 않지만 거기에는 뭔가 있어야한다고 생각합니다.

+0

좋은 아이디어 .. 그러나 내 안에는 Microsoft 소스 제어와 관련된 무례한 것들이있는 불쾌한 사람이 있습니다. 나는 결코 즐거운 시간을 보내지 못했다. – Neale

+0

SVN을 사용하여 계속 할 수 있다고 생각합니다.Visual Studio가 MS 소스 컨트롤 제품을 사용하지 않고 직접 SVN 데이터베이스에 도달 할 수 있도록 MSSCCI 플러그인이 있어야합니다. –

0

Team Edition Visual Studio 제품을 사용하지 않는다고 가정하면 옵션 3을 선택합니다. 소스 제어에서 SQL 스크립트도 사용하십시오.

로컬 데이터베이스를 동기화 상태로 유지하는 것은 최신 소스 코드로 작업하도록 요구하는 것과 다를 바 없습니다. 당신이 팀의 제품을 사용하는 경우

, 다음 소스 제어

+0

그것은 실제로 .net C# 프로젝트입니다. – Neale

+0

나는 내 원래 대답에서 분명하지 않았던 것 같아요. 나는 "팀 에디션 비주얼 스튜디오 제품을 사용하지 않는다고 가정해야합니다"라고 말했어야합니다. – NotMe

1

이 어려운 문제에 따라 데이터베이스를 관리하는 데이터베이스 에디션 (개발자 버전과 함께 제공)을 사용하여 시작합니다. 스키마를 생성하는 데 사용 된 SQL을 개정하여 처리했습니다 (Enterprise Architect에서 자동 생성 됨). 우리는 사람들이 유효한 테스트 데이터를 가진 데이터 세트를 다시 만드는 데 너무 오래 걸렸다 고 느꼈기 때문에 사람들이 데이터베이스 스키마를 업데이트하지 않을 큰 문제가있었습니다.

우리의 솔루션이라고 할 수 :

  • SQL 스키마 생성이 SVN에 추가
  • SVN에 데이터 삽입 스크립트를 추가
  • 스키마/데이터

우리가 허드슨을 사용을 SVN 덤프 추가 개정판의 변경 사항을 확인하는 자동 데이터베이스 빌드를 설정하십시오. 자동으로 스키마를 다시 만들고, 모든 데이터를 삽입하고, 덤프 파일을 내 보낸 다음 덤프 파일을 SVN에 커밋합니다.

기본적으로 데이터베이스 가져 오기를 실행하는 데 약 20 초가 소요되었습니다. 일단 데이터베이스 생성을 빨리하면 개발자는 빈번하게 수행하는 데 문제가 없습니다.

+0

여기 조금 이상하게 들릴지 모르겠다면 미안하지만, 허드슨은 무엇입니까? – Neale

+0

죄송합니다 - 나는 그것에 링크하려고 했어요! 지속적인 통합 도구입니다 : https://hudson.dev.java.net/ – Kieveli

0

나는 작은 팀에서 일하고 있으며, 지금 우리는 SQL 스키마와 데이터 삽입 스크립트를 코드처럼 저장소에 체크인했습니다.

사람들은 최신 "출처"로 최신 정보를 유지해야합니다.어쨌든 우리가 만난 중요한 변경/수정에 대해 모든 사람들이 수정중인 내용에 대해 알리고 모든 데이터베이스 업데이트를 검토하기위한 기회를 제공하도록 연습하는 경향이 있습니다.

0

이 문제는 더 흔하지 않습니다. 모든 팀은 어느 시점에서이 질문을해야합니다. 필자는 공통 DB 접근 방식과 별도의 DB 접근 방식을 수행했습니다. 팀은 항상 공통 DB로 돌아 왔습니다. 유지 관리가 쉽고 모든 사용자가 일찍 동기화해야하며 자주 동기화해야합니다. 이것은 버전 관리에서 스키마 변경 및 정의를 유지할 필요성을 부정하지 않습니다. 테스트, 스테이징 및 프로덕션 환경을 업데이트하려면 반복 가능한 프로세스가 필요합니다. 순수한 SQL 마이그레이션만으로는 충분하지 않을 수도 있습니다. 네이티브 객체를 사용하여 데이터를 생성하거나 의사 결정을해야하는 경우가 있습니다. 필자가 보았던 가장 좋은 시스템은 (필자가 perl, php, Java로 만든 시스템과 비슷하지만 몇 가지 점이 향상되었다) Ruby on Rails 마이그레이션 시스템이다. 그것을 확인하고 비슷한 것을하십시오.

1

왜 동일한 데이터베이스 서버에서 작업하는 것이 나쁜 생각입니까? 모든 개발자가 다른 사람을 해칠 수있는 변경 작업을하고 있기 때문에? 그렇다면 한 사람이 스키마 변경을 처리하고 VPN을 사용하여 데이터베이스 서버가있는 네트워크에 접속할 수 있습니다. 나는 지금 같은 보트에있어, 싸구려 (< $ 100)의 VPN 요구를 처리하기 위해 Cisco 라우터를 선택했습니다.

1

나는 "Agile Database Development"에 대해 Paul Graham으로부터 수년 전에 기술을 읽었다. 나는 인터넷 검색에 문제가있다. 그 용어들은 모두 너무 일반적인 것 같아서, 내 기억은 좀 더 퍼지기가 더 가깝습니다.

내가 http://code.google.com/p/migratordotnet/

그것은 (앞서 언급 한) 레일 액티브의 Migrator를 모델로있어 acrossed와 실행되지만 .NET을 목표로했다. 나는 .net 프로그래머가 아니지만, 당신이 찾고있는 것 같은데.

1

우리는 현재 내가 일하고있는 프로젝트에서 같은 문제가있었습니다. 우리는 놀랍게도 잘 작동하는 해결책으로 Tarantino을 채택했습니다. 각 개발자는 로컬 데이터베이스에 대해 작업하고 있습니다. 개발자가 스키마를 변경해야 할 경우 스크립트를 작성하여 체크인합니다.

Tarantino는 각 개발자가 이미 로컬 데이터베이스에서 실행 한 스크립트를 추적하고 새 스크립트를 적용합니다. 따라서 개발자 A가 SQL 스크립트를 변경하고 체크인하면 개발자 B는 소스 제어에서 lates 파일을 가져올 때 변경 사항을 가져옵니다. 개발자 B가 로컬에서 Tarantino를 실행하면 최신 스크립트 만 적용됩니다.

허용되는 대부분의 작업은 수동으로 수행 할 수 있습니다. 타란티노는 더 쉽게 만들지 만 완벽하지는 않습니다. 한 가지 이점은 빌드 프로세스에 쉽게 통합 될 수 있다는 것입니다. 데이터베이스에서 데이터를 유지 보수하기위한 스크립트를 작성할 수도 있습니다.

1

MS는 아직 표준 솔루션이 없으므로 조금 뒤쳐져 있지만 # 3 옵션 (스크립트 변경)은 요즘 갈 길입니다. 대부분의 다른 현대 주류 언어는 요즘 다양한 형태로이 형태를 사용합니다. 예 : Rails 마이그레이션을 확인하십시오.

This post은 여러 가지 타사 .NET 솔루션에 대해 설명합니다. 내 경험상, migratordotnet은 탁월한 선택입니다. 문제에 대한 자세한 조사는 해당 주제에 대한 Martin Fowler의 article을 확인하십시오.

관련 문제