우리는 사용자가 애플리케이션에서 볼 수있는 연락처를 결정하는 복잡한 사용자 권한을 가지고 있으며 규모를 조정할 수 있도록 테이블을 구성하는 최선의 방법을 찾고 있습니다. 사용 권한은 너무 복잡하여 즉시 작업 할 수 없으므로 테이블에 기록해야하며 관리 기능이 수행되거나 연락처가 추가/편집/삭제 될 때마다 업데이트됩니다.대형 데이터 세트로 복잡한 데이터 액세스
연락처 테이블에는 1,000 만 개의 레코드가 있습니다. 필자의 첫 번째 생각은 contactUserLinkID, contactID, userID가 contactUserLinkID의 클러스터 된 인덱스로, contactiD 및 userID의 클러스터되지 않은 인덱스가 빠른 검색을 위해 contactUserLink 테이블을 생성하는 것이 었습니다.
우리는 200 명의 사용자를 가지고 그들은 모두가 contactUserLink 행 수백만의 수백에 풍선 수있는 데이터의 큰 부분에 서로 다른 액세스 한 경우이와
내 관심이 있습니다.
연락처가 편집되고 규칙에 대한 관리자 변경 사항이 발생하면이 테이블에 많은 추가/편집/삭제가 진행됩니다.
관리자가 변경하면 사용자 권한이 다시 만들어지기 때문에 엄청난 양의 삭제/삽입이 발생할 수 있습니다. 오랜 시간이 걸리면 사용자가 액세스 할 수 없게됩니다.
새로운 사용자가 추가되고 해당 테이블에 1,000 만 개의 레코드를 쓰는 모든 레코드에 대한 액세스 권한이있는 경우 빠르지는 않습니까?
우리는 SQL 2008 나는 그것이 어떤 의미가 있도록 그 설명 관리해야 희망
을 사용하고 있습니다.
이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.
역할 기반 권한 부여의 문제점은 권한이 영역 등을 기반으로하는 영업 팀의 경우 각각 액세스 권한이 다르므로 다른 역할을하므로 동일한 역할을하는 많은 양의 데이터로 끝납니다 위와 같이 생각합니다. – Tim
그러면 지역 기반 허가라고 부를 수 있습니다. 지역 사용자 ID를 함께 그룹화하고 영토 관리자에게 지역에 대한 액세스 권한을 부여하십시오. 이렇게하면 관리자가 생성 될 때 전체 영역에 대한 액세스 권한을 부여하기 위해 추가 된 행이 필요합니다. –
귀하의 시스템에 대한 귀하의 한계를 모르겠지만 이러한 종류의 그룹화/역할/지역 기본 허가는 귀하의 시간을 보살 피는 데 가치가 있습니다. 그룹화 + contactid 할 수 있습니다. 액세스 권한이있는 연락처를 결정할 때 이들을 통합해야합니다. 첫 번째 부분은 귀하의 그룹에 기반한 연락처를 결정한 다음 각 개별 연락처가 권한을 부여한 조합을 결정합니다. 내가 더 혼란스럽게하는지 잘 모르겠다. 당신이 이것을 깊이 들여다 보았고 그것을 결정했다면 아마도 계산 된 컬럼입니까? 인덱싱 된 뷰? 검색어의 속도를 높일 수 있습니다. –