2010-02-22 4 views
3

프로젝트 모듈은 다음 데이터베이스 구조를 유지 관리해야하는 방식으로 구성됩니다.SQL Server 2005에서 데이터베이스 파티셔닝

저는 20 개의 테이블과 50 개의 테이블을 포함하는 5 개의 스키마가 있습니다. 각 스키마는 프로젝트의 한 모듈과 연관됩니다.

둘 이상의 모듈에서 사용되는 모든 테이블은 "공통"스키마로 유지됩니다. 각 모듈을 완료하는 데 2 ​​~ 5 개월이 소요됩니다.

첫 번째 모듈이 완성되면 사용을 위해 열고 두 번째 모듈을 계속해서 사용합니다. 한편 실제 데이터는 완성 된 모듈의 스키마에 삽입됩니다. 또한 완성 된 모듈의 스키마에 대한 테이블 정의는 버그 수정 및 제안 사항에 따라 약간 변경 될 수 있습니다.

나는/백업 할 수 복원, 스키마 (나는 그것이 수직 분할이라고 생각?)

이 DB2에서이 다른 테이블에 테이블을 넣어하는 방법, 그리고 백업으로 데이터베이스를 스키마를 동기화 할/별도로 테이블 공간을 복원하십시오.

SQL Server의 문제와 비슷하거나 더 나은 해결책을 찾고 있습니다. 그래서 문제 : 실제 데이터를 포함 의 테이블에 테이블 정의를 변경 사항을 적용하는 방법

  1. . 갱신/변경/백업/복원 할 수있는
  2. /스키마

에 의해 데이터베이스 스키마를 동기화 조언의 모든 종류는 크게 환영합니다.

답변

1

SQL Server에서 파일 그룹 별 백업을 허용하지 않으면 각 스키마마다 고유 한 파일 그룹을 만들고 SQL Server 외부의 각 파일 집합 백업을 관리하는 다른 방법이 있습니다. 파일을 통해 데이터베이스를 분할하면 성능을 향상시킬 수도 있습니다 (예 : 인덱스 데이터를 테이블 데이터의 개별 파일 그룹 & 실제 디스크에 저장하는 경우

+0

그건 내가 생각한거야. 이 경우 파일 그룹을 복사 할 수 있습니다. 그러나 다른 파일 그룹에 다른 스키마를 넣을 수는 없습니다 (또는 적어도 방법을 찾을 수 있음). 내가 발견 한 것은 파일 그룹이 테이블 행을 다른 그룹으로 분할하기위한 것임을 의미한다. 튜토리얼이나 페이지에서 더 자세한 정보를 얻을 수 있습니다. –

+0

필자가 파티션 기능을 지정하지 않으면 테이블이 지정된 파일 그룹으로 이동합니다. –

+0

기본적으로 테이블은 데이터베이스 속성에서 default로 지정된 파일 그룹으로 이동합니다. 각 테이블의 속성에서 각 테이블에 대해이를 재정의 할 수 있습니다. http://msdn.microsoft.com/en-us/library/aa174545(SQL.80).aspx – Codewerks

0

이러한 어려움에도 불구하고 전반적인 디자인은 별개의 데이터베이스보다 훌륭하고 우수한 것으로 보입니다. 이유 : 스키마 간의 트랜잭션 일관성과 미러링 및 로그 전달과 같은 작업을 수행 할 수있는 기능.

실용적인 백업 솔루션이 전체 DB를 백업한다는 것은 사실입니다. 파일 그룹 백업 은 SQL Server에서이 가능하지만 원하는 동작과 일치하지 않습니다. 일부 데이터가 잠겨 있거나 읽기 전용 인 VLDB 데이터를 백업하기위한 것입니다. 그러나 백업/복원 및 스키마 버전은 별개의 문제로 생각하기 때문에 이것이 디자인을 변경하는 이유처럼 보이지는 않습니다.

그런데 문제가 다른 스키마 버전 제어와 다른 점은 제외하고는 더 복잡 할 수 있습니다. 각 스키마에 대해 스키마 업데이트가 포함 된 SQL 스크립트를 작성하여 제공해야합니다.

가능하면 ALTER TABLE을 사용하여 기존 테이블을 수정하는 경우와 그렇게 할 수없는 변경에 대비하여 새 테이블을 만들고 기존 테이블의 모든 데이터를 삽입해야합니다. 트랜잭션에서) 이전 테이블을 삭제하거나 새 테이블의 이름을 바꿉니다. 표준 연습, 좀 못생긴 경우.

+0

기존 표를 개정 할 때 제안 사항이 의미가 있으며 이것이 내가하는 일입니다. 어쨌든 더 나은 해결책이없는 것 같습니다. 감사. 하지만 두 번째 문제가 더 큽니다. 다른 스키마를 업데이트/추가 할 때 기존 스키마를 건드리고 싶지 않습니다. 내 마음에 떠오르는 것은 개발 환경에서 SQL을 생성하고 필요할 때마다 프로덕션 1에 적용하는 것입니다. 그러나 매번 100-200 개 정도의 테이블을 작성할 때마다 사용해야합니다. 다른 제안? –

관련 문제