업무 도메인은 아래와 같습니다
한 특정 기기 ( A )에 다수의 사용자( B )가 연결을 하는 업무입니다.
A : B = 1 : N 입니다.
테이블 데이터의 INSERT DELETE 규칙은 아래와 같습니다.
사용자( B )가 특정 기기 ( A )에서 ( A' )로 이동하게 되면
1. 기존 A에 연결된 모든 ROW DELETE
2. 기존 A에 연결된 ( B의 연결이 빠진 ) ROW INSERT
3. 기존 A'에 연결된 모든 ROW DELETE
4. A'에 연결된 사용자들 ROW INSERT
입니다.
테이블 데이터의 조회 규칙은 아래와 같습니다 ( 조회도 엄청 자주 일어남 오히려 INSERT DELETE보다 약 3배 더 많이... )
1. 특정기기에 연결된 사용자 조회 ( 사용자들의 전체 데이터 )
2. 특정 사용자가 연결한 특정 기기 조회 ( 기기의 전체데이터 )
----------------------------------------------------------------------------
고민중인건... 조회하려는 데이터가 또 너무 빈번한 INSERT와 DELETE로 클러스터링 인덱스는 절대 아닌것 같구요..
또 조회는 자주일어나니 사용자, 특정기기 라는 값을 인덱스로 잡아야 할것같습니다.
그래서 선택한건
테이블 ERD
- 사용자 ( pk )
- 기기 모델 ( PK )
- 연결 날짜
- 우선순위
- .....등등
PK ( 사용자, 기기모델, 넌클러스터드 ) 이유 : 실제론 사용자에 대해서 조회가 더 많이 일어나 사용자를 첫번쨰 순서로 두었습니다.
INDEX ( 기기모델, 넌클러스터드 ) 이유 : 기기모델에 연결된 사용자 데이터도 뽑아야하기 때문에...
이렇게 정리를 해보았는데 고수님들의 조언... 또는 잡담 부탁드리겠습니다.. 고려되는건 이게 또 사용자, 기기모델의 값이 너무 랜덤값으로 주어져서
넌클러스터 인덱스 페이지도 너무 조각이 많이나서 유지될까봐 걱정이긴하나 그건 관리가 필요한 문제같은데 맞을까요...