2010-07-24 2 views
9

DB 작업 팀이 더 좋은 점은 무엇입니까? 각 개발자 또는 공유 데이터베이스에 대한 로컬 데이터베이스 인스턴스입니까?데이터베이스 작업 모범 사례 팀

+0

데이터베이스 스키마가 설계된 방법 (설계된 경우), 테스트 데이터의 복잡성, 데이터베이스 스키마의 안정성 및 내용에 따라 다릅니다. 개발이 진행됨에 따라 달라질 수 있습니다. – pascal

+0

BD는 무엇입니까? 저것은 DB의 오타인가요, 아니면 들어 본 적이없는 제품입니까? –

+0

이 기사를 찾았습니다 : http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx 하지만 "파스칼"에 동의합니다. 데이터베이스에 따라 다릅니다. 크기, 스키마 및 기타 특성. – k0stya

답변

12

내 경험에 따르면 팀은 적어도 하나의 통합 데이터베이스를 공유해야합니다.

개발하는 동안 팀 구성원마다 독립적 인 데이터베이스가 있어야합니다. 그렇지 않으면 데이터베이스 스키마가 변경되어 다른 팀 구성원을 방해 할 수 있습니다. 이러한 인스턴스는 중앙 집중식 서버에있을 수도 있습니다.

1

경험상 공유 데이터베이스가 더 좋습니다. 우리의 코드는 누군가가 자신의 로컬 데이터베이스에 칼럼을 추가 한 다음 새로운 소스 코드를 SVN에 업로드했기 때문에 항상 깨져있었습니다. 다른 사람들의 구현은 데이터베이스에서 변경된 사항을 알아낼 때까지 중단됩니다.

개발 용 공유 데이터베이스가 있습니다. 우리는 잡다한 테스트를 위해서 하나 또는 두 개의 dev 데이터베이스를 가지고있었습니다.

+0

또 다른 경우 누군가 데이터베이스에서 열 유형을 변경했는데 ORM 스키마를 업로드하지 않았습니까? – k0stya

+1

동일한 방법으로 응용 프로그램 코드와 DB 코드 (procs 저장, 스키마 변경)를 처리했습니다. 가끔 잊어 버린 DB 업데이트가 있었지만 dev은 지속적인 통합과 테스트를하는 것이 그리 어렵지 않은 문제가되는 코드를 발견했을 때 자신의 얼굴에 알을 낳지 않을 것을 빨리 배웠습니다. DB에 대해 실행되는 자동 테스트를 체크인하고 기록하기 전에 업그레이드 스크립트를 작성해야한다는 규칙이있었습니다. – aqwert

4

나는 단지 방법에 대해 충분히 우리의 요구에 맞는 나는 현재 작동에있어 팀을 이야기 할 수

우리는 최신 스키마 버전으로 자동으로 데이터베이스를 업데이트 하나의 중앙 데이터 모델 스크립트가 있습니다. 개발자는이 스크립트의 변경 사항을 소스 코드의 변경 사항 (동일한 저장소의 단일 커밋)과 함께 체크인합니다. 야간 빌드는 중앙 데이터베이스 복사본을 업데이트 한 다음 해당 데이터베이스에 대한 일련의 자동화 된 테스트를 수행하고 인간 QA 팀은 다음 날이 테스트를 위해이 데이터베이스를 사용합니다.

통합 빌드를 통한 방법 이외의 방식으로 중앙 데이터베이스 인스턴스에서 스키마 변경을 허용하지 않습니다. 스키마 변경 스크립트를 개발하기 위해 변경 사항은 중앙 서버 또는 로컬 (개별 선호도에 따라 다름)의 별도 데이터베이스 인스턴스에서 개발됩니다.

4

전혀 달라지지 않는다고 생각합니다. 각 환경에는 자체 데이터베이스 인스턴스가 있어야합니다. 개인적으로 팀의 모든 사람들이 소스의 동일한 복사본에서 작업한다는 것을 결코 언급하지 않으며 데이터베이스 코드와 인스턴스를 같은 방식으로 봅니다.

데이터베이스 변경 내용이 누락 된 경우 문제가 발생하는 경우 개발 프로세스와 관련하여 문제가되는 증상입니다. 소스 코드에 코드 파일을 추가하는 것을 잊어 버리는 것은 유사합니다.

Jeff Atwood has a pretty good article on source controlling database code.

다른 개발자는 아마도 다른 문제에 작동 - 당신은 어떻게 다른 사람의 발가락 동안 단위 테스트에 스테핑 피할 수 있습니까?

Continuous Integration process을 통해 업데이트되는 통합/테스트 환경을 절대적으로지지합니다. 이 환경은 배포 절차의 리트머스 테스트로도 사용됩니다.

3

Redgate에서는 샌드 박스가 개발자가 서로의 발가락을 밟지 않도록 각 개발자에게 고유 한 인스턴스가 제공되도록하는 것이 좋습니다. 그러나 두 모델 모두 장단점이 있습니다.

데이터베이스 개발자와 이야기하면서 우리는 데이터베이스 개발의 약 절반을 공유 환경에서 수행하고 절반은 전용 개발자 환경에서 수행했습니다.

1

개발자를위한 별도의 데이터베이스 인스턴스를 사용하면 별도로 작업 할 수 있습니다. 그러나 우리가 대규모 팀이고 여러 작업을 동시에 수행하는 경우 공유 환경을 사용하는 것이 좋으며 따라서 필요한 모든 변경 사항 동시에 전달 된 것은 서로를 깨뜨리지 않고 그들의 의존성을 정확하게 파악할 수 있습니다. 또한 변경으로 인해 응용 프로그램이 중단 될 수있는 위치를 식별하는 데 도움이됩니다. 따라서 개발 환경의 격리 된 환경 복제 사본과 함께 공유 환경을 갖는 것이 낫습니다. 우리가 크고 복잡한 것을 매우 중요하고 어떻게 든 테스트해야 할 필요가있는 경우에 대비하여.

그러나 유일한 문제는 누락 된 변경이 치명적일 수 있으므로 여러 환경을 서로 동기화하는 것입니다.

+0

예, '통합'테스트를위한 별도의 데이터베이스 * 및 * 공유 환경이 분명히 이상적입니다. 계속 생각해 보면 이것이 지속적인 통합이 제공하는 것입니다. 개발자는 개별 샌드 박스를 개발하고 모든 변경 사항이 포함 된 데이터베이스를 빌드하고 테스트하는 지속적인 통합을 트리거하는 소스 제어에 대한 변경 사항을 커밋해야합니다. –

1

나는 여기 사람들이 과거의 경험에 대해 말하고 있지만 이것이 보편적으로 대답하기 란 쉽지 않은 질문이라는 것을 알고있다. 각 접근 방식에는 장단점이 있으며 작업하는 응용 프로그램 유형과 팀 유형에 따라 해결해야합니다.

어떤 경로를 사용해야할지 모르시는 경우 ... 공유 개발 데이터베이스를 먼저 방문하여 문제가 발생했는지 확인하는 것이 좋습니다. 이 솔루션이 작동하면 "통합"단계가 없어지기 때문에 선호되는 방법이어야합니다. 그러나 팀의 유형과 환경 요구 사항에 따라 적응해야 할 수도 있습니다.

관련 문제