2010-02-04 7 views
1

우리는 직장에서 SQL Server 2005를 사용하고 있으며 개발을 시작할 때 여러 데이터베이스가 만들어지기로 결정되었습니다. 예를 들어, Individual에 대해 dbIndividual이라는 하나의 데이터베이스가 있고 Translation에 dbLocale이라고하는 데이터베이스가 있습니다.SQL Server 2005 - 다중 데이터베이스

이는 백업하는 단순화하고 우리가 우리가 필요로하는 무엇을 백업해야 할 잠재적는 (백업 방법이 아니라면/우리가 모르는 것만 스키마를 복원 할 수 있습니다.)

크게 복원까지 이로 인해 여러 데이터베이스 테이블과 파일에 대해 JOINS를 사용하여 여러 쿼리를 수행 할 수 있습니다. 예를 들어

:

select customer.firstname, address.addressL1, addressType.value 
from dbIndividual.dbo.customer 
inner join dbIndividual.dbo.address 
    on fkCustomerID = iCustomerID 
inner join dbLocale.translation.addressType 
    on fkAddressTypeID = iAddressTypeID 
    and fkLangID = 1 

이 어떤 단점이 있나요? 여러 DB에서 데이터 무결성을 유지할 수는 없다는 것이 명백합니다. 데이터가 잠재적으로 디스크의 완전히 다른 부분에 있기 때문에 참가를 늦출 수 있습니까?

이유 우리가 우리 인프라를 재편성하는 중이기 때문에 내가 묻는 것은 잠재적 인 문제입니다.

답변

6

현재 최상의 방법은 여러 스키마가있는 동일한 데이터베이스를 사용하는 것입니다. 각 스키마를 자체 파일에 저장할 수 있으므로 쉽게 백업 할 수 있습니다. 또한 외래 키 제약 조건을 적용 할 수 있습니다.

우리는 회사와 같이 여러 데이터베이스 모델을 사용했고, 최근에는 스키마를 사용하기 위해 모든 새로운 개발을 전환했습니다. 우리는 이렇게함으로써 아무 것도 잃지 않았으며 외래 키를 시행 할 수있는 능력을 얻었습니다.

3

왜 대신이 작업을 수행하기 위해 SCHEMAs와 FILEGROUPS를 사용하지 않았습니까? 이 방법을 사용하면 백업을 분리하지 않고도 파일 그룹 만 복원하고 백업 할 수 있습니다. 그리고 당신은 외래 키를 가질 수 있기 때문에 참조 무결성에 아무런 문제가 없을 것입니다.

+0

실제로 게시하기 전에 스키마를 인식하고 있었고 다른 제품과 마찬가지로 백업 할 수없는 피타라고 생각했습니다. 파일 그룹이 무엇인지 막연하게 알았지 만, 이제는 내가 귀하의 게시물을 읽고 정확하게 테스트 해 보았습니다. 정리되지 않은 섹션에서 디스크의 완전히 다른 부분에 상주 할 수있는 많은 다른 데이터베이스에 가입하면 성능이 저하되는 것 같습니다. – jfrobishow

5

외래 키는 관계형 데이터베이스를 사용하는 주된 이유 중 하나입니다. 데이터가 다른 데이터베이스에 있기 때문에 필요할 때 사용할 수 없다면 여러 데이터베이스로 테이블을 분할하는 것이 좋지 않습니다.

+3

더 이상 동의 할 수 없습니다! – PostMan

0

트리거를 사용하여 데이터베이스간에 참조 무결성을 적용 할 수 있으며 현재 디자인에서 그렇게해야한다고 지적했습니다. 즉 Keith Rousseau와 SQLMenace가 제안한 여러 스키마 모델이있는 동일한 데이터베이스를 좋아합니다.