2012-03-13 3 views
2

우리는 사용자가 애플리케이션에서 볼 수있는 연락처를 결정하는 복잡한 사용자 권한을 가지고 있으며 규모를 조정할 수 있도록 테이블을 구성하는 최선의 방법을 찾고 있습니다. 사용 권한은 너무 복잡하여 즉시 작업 할 수 없으므로 테이블에 기록해야하며 관리 기능이 수행되거나 연락처가 추가/편집/삭제 될 때마다 업데이트됩니다.대형 데이터 세트로 복잡한 데이터 액세스

연락처 테이블에는 1,000 만 개의 레코드가 있습니다. 필자의 첫 번째 생각은 contactUserLinkID, contactID, userID가 contactUserLinkID의 클러스터 된 인덱스로, contactiD 및 userID의 클러스터되지 않은 인덱스가 빠른 검색을 위해 contactUserLink 테이블을 생성하는 것이 었습니다.

  1. 우리는 200 명의 사용자를 가지고 그들은 모두가 contactUserLink 행 수백만의 수백에 풍선 수있는 데이터의 큰 부분에 서로 다른 액세스 한 경우이와

    내 관심이 있습니다.

  2. 연락처가 편집되고 규칙에 대한 관리자 변경 사항이 발생하면이 테이블에 많은 추가/편집/삭제가 진행됩니다.

  3. 관리자가 변경하면 사용자 권한이 다시 만들어지기 때문에 엄청난 양의 삭제/삽입이 발생할 수 있습니다. 오랜 시간이 걸리면 사용자가 액세스 할 수 없게됩니다.

  4. 새로운 사용자가 추가되고 해당 테이블에 1,000 만 개의 레코드를 쓰는 모든 레코드에 대한 액세스 권한이있는 경우 빠르지는 않습니까?

우리는 SQL 2008 나는 그것이 어떤 의미가 있도록 그 설명 관리해야 희망

을 사용하고 있습니다.

이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.

답변

0

이런 종류의 세부적인 사용자 권한 부여가 이상적이지 않습니다. # 4에서 언급했듯이 관리자에게 모든 연락처에 대한 액세스 권한을 부여하기 위해 1,000 만 레코드를 작성하는 것이 가장 정확한 규모 조정이 불가능합니다. 역할 기반 권한 부여를 살펴 보았습니까? 시나리오에서이 옵션이 있습니까?

+0

역할 기반 권한 부여의 문제점은 권한이 영역 등을 기반으로하는 영업 팀의 경우 각각 액세스 권한이 다르므로 다른 역할을하므로 동일한 역할을하는 많은 양의 데이터로 끝납니다 위와 같이 생각합니다. – Tim

+0

그러면 지역 기반 허가라고 부를 수 있습니다. 지역 사용자 ID를 함께 그룹화하고 영토 관리자에게 지역에 대한 액세스 권한을 부여하십시오. 이렇게하면 관리자가 생성 될 때 전체 영역에 대한 액세스 권한을 부여하기 위해 추가 된 행이 필요합니다. –

+0

귀하의 시스템에 대한 귀하의 한계를 모르겠지만 이러한 종류의 그룹화/역할/지역 기본 허가는 귀하의 시간을 보살 피는 데 가치가 있습니다. 그룹화 + contactid 할 수 있습니다. 액세스 권한이있는 연락처를 결정할 때 이들을 통합해야합니다. 첫 번째 부분은 귀하의 그룹에 기반한 연락처를 결정한 다음 각 개별 연락처가 권한을 부여한 조합을 결정합니다. 내가 더 혼란스럽게하는지 잘 모르겠다. 당신이 이것을 깊이 들여다 보았고 그것을 결정했다면 아마도 계산 된 컬럼입니까? 인덱싱 된 뷰? 검색어의 속도를 높일 수 있습니다. –