2009-02-28 3 views
8

AdventureWorks 데이터베이스에서 여러 스키마를 사용하여 테이블을 그룹화 할 수 있습니다. 왜이 일을 (보안, ...?)하고 내가 찾을 수있는 모범 사례가 있습니까?SQL Server (2008)에서 스키마를 사용하기위한 최선의 방법

들으, 리벤 Cardoen 비즈니스 인텔리전스의 관리자로서

+0

가능한 복제본 [SQL 2005의 스키마 사용에 대한 유용한 정보] (http://stackoverflow.com/questions/452048/best-practices-for-using-schemas-in-sql-2005) – raven

답변

18

, 우리는 논리적 인 그룹화 및 보안 관리에 대한 스키마에 의존하고 있습니다. 우리가 (ODS를 우리의 운영 데이터 저장소를로드하기 전에

논리적 구성

  1. 우리는 전적으로 준비 데이터를 SSIS 패키지에 의해로드 된 일반 데이터베이스가 : 여기에 일부의 경우 우리가 스키마를 사용하는 방법에 관해서는). 이 데이터베이스에서 스키마를 제외하고 모든 오브젝트는 원본 소스에 대한 구조 (테이블 이름, 열 이름, 데이터 유형, Null 허용 여부 등)가 내재적입니다. 이 스키마를 사용하여 테이블의 원본 소스 시스템을 나타냅니다. 드물 긴하지만 두 개의 서로 다른 데이터베이스에는 동일한 이름과 스키마를 가진 테이블이 있으므로 준비 데이터베이스에서 원래 이름을 계속 사용할 수 있습니다.

  2. BI 서버의 모든 데이터베이스에는 각 팀 구성원마다 test_username 스키마가 있습니다. 데이터베이스에 테스트 개체를 만들면 개체를 만든 사람을 쉽게 추적 할 수 있습니다. 또한 모든 사람이 누가 무엇을 만들 었는지 알기 때문에 나중에 테스트 개체를 제거하는 것이 훨씬 쉽습니다. 솔직히, 우리가 그것을 만들었다는 것을 아는 것은 일반적으로 그것이 안전하게 삭제 될 수 있다는 것을 아는 것만으로 충분합니다. 특히 우리가 언제 어떻게 만들 었는지 기억할 수 없을 때!

  3. 데이터 컨트롤러 데이터베이스에서 우리는 보고서, etl 및 일반 리소스간에 서로 다른 유형의 프로세스를 구분하기 위해 스키마를 사용합니다.

  4. 스타 스키마 데이터웨어 하우스에서 모든 개체는 차원 및 팩트 스키마로 분리됩니다.

  5. 다른 부서 서버로 데이터를 푸시 할 때 해당 서버의 모든 BI 개체가 스키마 bi를 사용하도록 설정합니다. 이것은 우리의 서버에 있지 않더라도 실제로 쌍방향로드를 알기 쉽고 테이블을 유지 관리합니다. 대상 서버가 2008/2005 SQL Server 상자가 아니면 테이블에 bi_ 접두사를 붙입니다. 그것을 내려지면

, 우리는 우리가 스키마의 부재를 구성 할 수 있도록 객체에 접두사 나 접미사를 추가했을 논리적 조직 언제에 대한 스키마를 사용합니다. 이렇게 말하면 BI 서버에서 스키마를 사용하지 않는 경우가 있습니다. 우리의 WorkDB에서는 모든 것이 dbo입니다. 우리의 WorkingDB는 임시 테이블을 생성하기 위해 TempDB와 같이 사용되지만,이 테이블은 ETL 프로세스가 실행될 때마다 생성되는 임시 테이블입니다. WorkDB의 특수한 특성은 데이터베이스를 백업하지 않으며 테이블이없는 경우 데이터베이스를 사용하는 모든 ETL 프로세스가 처음부터 오브젝트를 다시 작성할 수 있어야한다는 것입니다. 이 예에서 우리는 임시 ETL 프로세스 외부에서 실제로 오브젝트를 사용하지 않기 때문에 스키마를 사용하여 조직적 값을 추가하지 않았다고 느꼈습니다.

보안

  1. 우리는 BI 그룹이기 때문에, 우리가 일반적으로 구축하고 우리 자신의 응용 프로그램을 지원하지 않습니다. 거의 대부분 다른 사람들의 응용 프로그램을 사용하고 백 엔드 데이터베이스의 데이터를 서버로 가져옵니다. 그러나 다양한 소형 CRUD 응용 프로그램의 백엔드 인 bi_applications라는 데이터베이스가 있습니다.이러한 응용 프로그램은 대개 BI에 유지해야하는 데이터를 캡처 할 수 있도록 비즈니스에 제공하는 데이터 입력 양식입니다. 그것은 우리가 우선 순위가 낮은 응용 프로그램 개선이 미래 개발 목록에 먼지를 모으기를 기다리는 동안 생산 응용 프로그램에 있어야하는 데이터를 BI로 가져 오는 방법입니다. 각 응용 프로그램에는 별도의 스키마가 있으며 기본 테이블을 업데이트하는 데 사용되는 응용 프로그램 계정은 관련된 스키마의 개체에만 액세스 할 수 있습니다. 따라서 별도의 응용 프로그램을 이해하고, 보안을 유지하고, 유지 관리하기가 쉽습니다.

  2. 경우에 따라 고급 사용자가 테이블이나 저장 프로 시저에 직접 데이터베이스 액세스 할 수있게했습니다. 우리는 역할을 결합한 스키마를 사용하여 객체를 보호합니다. 우리는 스키마에 대한 사용 권한을 부여하고 사용자는 역할에 추가됩니다. 이것은 우리가 쉽게 알아낼 수있는 역할을 파헤 치지 않고도 누구가 사용하고있는 객체를 쉽게 이해할 수있게 해줍니다. 한마디로

, 우리는 우리가 아마 밖으로 자신의 데이터베이스로 개체를 분리 고려했을 때 보안을 위해 스키마를 사용하고 우리가 우리의 데이터베이스에 액세스 할 수 BI 외부의 응용 프로그램이나 사용자가 기대하는 경우.

이들은 애플리케이션 개발자를위한 최상의 비즈니스 관행은 아니지만 필자는 귀사의 비즈니스가 끝날 때 스키마를 사용하는 몇 가지 방법을 생각해내는 데 도움이 될 수 있기를 바랍니다.

관련 문제