SQLD

SQLD(5일차)

seunghyeoniya 2023. 8. 29. 23:35

5. 비식별자 관계로만 설정할 경우의 문제점

- 일반적으로 엔터티에는 중요한 기준 속성이 있는데, 기준 속성은 부모엔터티에 있는 PK 속성으로부터 상속되어 자식엔터티에 존재한다.

데이터 모델링을 전개할 때 각 엔터티 간의 관계를 비식별자 관계로 설정하면 이러한 유형의 속성이 자식엔터티로 상속되지 않아,

자식엔터티에서 데이터를 처리할 때 쓸데없이 부모엔터티까지 찾아가야 하는 경우가 발생된다.

그렇기 때문에 SQL구문에 많은 조인이 걸리게 되며, 복잡성이 증가하고 성능이 저하된다.

 

6. 식별자 관계와 비식별자 관계 모델링

두 가지 관계에 대해서 일정한 규칙을 가지고 데이터 모델링을 한다면 효과적인 데이터 모델을 만들어 내는데 유용하게 활용할 수 있을 것이다.

1) 비식별자관계 선택 프로세스

기본적으로 식별자 관계로 모든 관계를 연결하고 다음 조건에 해당할 경우 비식별자 관계로 조정한다.

 관계의 강/약 분석 : 약한 관계

 자식테이블 독립 PK 필요 : 독립 PK 구성 -> 업무적 필요성과 성능상 필요여부를 모두 포함

 SQL복잡도 증가, 개발생산성저하 : PK속성 단순화

2) 식별자와 비식별자관계 비교

3) 식별자와 비식별자를 적용한 데이터 모델

식별자 관계와 비식별자 관계를 적절하게 설정하면 데이터 모델이 균형감 있게 나타난다.

 

제2장 데이터 모델과 성능

제1절 성능 데이터 모델링의 개요

[1] 성능 데이터 모델링의 정의

- 데이터 모델의 성능이 저하되는 이유 세 가지

첫 번째. 잘못된 데이터 모델 구조

두 번째. 데이터가 대용량으로 변형

세 번째. 인덱스 특성을 충분히 고려하지 못한 인덱스 생성

- 데이터 모델링을 할 때 어떤 작업 유형에 따라 성능 향상을 도모해야 하는지 목표를 분명하게 해야 정확한 성능 향상 모델링이 가능하다.

- 성능 데이터 모델 : 데이터베이스 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조,

PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다. 성능 데이터 모델링은 단순히 반정규화만을 의미하지 않는다. 성능 데이터 모델링은 정규화를 통해서도 수행할 수 있고, 인덱스의 특징을 고려하여 칼럼의 순서도 변형할 수 있다. 또한 대량의 데이터 특성에 따라 비록 정규화된 모델이라도 테이블을 수직 또는 수평분할하여 적용하는 방법도 있고 논리적인 테이블을 물리적인 테이블로 전환할 때 데이터 처리의 성격에 따라 변환하는 방법까지 성능 데이터 모델링의 범주에 포함될 수 있다.

 

[2] 성능 데이터 모델링 수행시점

프로젝트 수행 중에 있어서 성능 데이터 모델링을 초기(사전)에 진행할수록 비용이 적게 든다.

분석/설계 단계에서부터 성능 데이터 모델링을 하지 않으면 시간이 지날수록 성능 개선을 위한 비용이 증가하게 된다.

 

[3] 성능 데이터 모델링 고려사항

1. 데이터 모델링을 할 때 정규화를 정확하게 수행한다.

- 정규화된 모델은 데이터를 주요 관심사별로 분산시켜 성능을 향상시킨다.

 

2. 데이터베이스 용량산정을 수행한다.

- 용량산정은 테이블에 대한 성능고려에 대한 엄격도의 기준이 된다.

 

3. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.

- SQL문장의 조인관계 테이블에서 데이터조회의 칼럼들을 파악할 수 있게 되어 그에 따라 성능을 고려한 데이터 모델을 설계할 수 있다.

- 트랜잭션의 유형 파악 방법

첫 번째. CRUD 매트릭스를 확인한다.

두 번째. 객체지향 모델링을 적용한다면, 시퀀스 다이어그램을 확인한다.

세 번째. 화면에서 처리된 데이터의 종류를 보면 이벤트(입력, 수정, 삭제, 조회)를 확인한다.

 

4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.

- 반정규화는 테이블, 속성, 관계에 대해 포괄적인 반정규화의 방법을 적용해야 한다.

 

5. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.

- PK/FK의 순서가 인덱스 특성에 따라 성능에 영향을 미치므로 PK/FK를 성능이 우수한 순서대로 칼럼의 순서를 조정해야 한다.

 

6. 성능 관점에서 데이터 모델을 검증한다.

- 데이터 모델 검증 시에 일반적인 데이터 모델 규칙만을 검토하지 않고 충분하게 성능이 고려되었는지를 체크리스트에 꼭 포함하여 검증한다.

 

제2절 정규화와 성능

[1] 정규화를 통한 성능 향상 전략

- 일반적으로 정규화를 하면 데이터에 대한 중복성 제거와 더불어 데이터를 관심별로 처리하면서 성능이 향상된다. (입력/수정/삭제)

그러나 엔터티가 계속 발생하면, 그에 따라 조인의 횟수도 함께 증가하므로 성능 저하가 나타날 수도 있다. (조회)

- 정규화는 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는 것이다.

- 데이터의 중복속성을 제거하여 데이터 용량을 최소화해서 데이터 처리 속도가 빨라질 수 있다.

- 일반적으로 정규화를 통해 입력/수정/삭제의 성능이 향상되고 반정규화를 통해 조회의 성능이 향상된다.

그러나 반정규화만이 조회 성능을 향상시키는 것은 아니다. 정규화를 해야지만 성능이 향상되는 경우도 아주 많다.

 

 

 

 

[데이터 전문가 포럼] SQL 개발자 스터디 교재(2020.08.22.)

#SQLD

 

'SQLD' 카테고리의 다른 글

SQLD(7일차)  (0) 2023.08.31
SQLD(6일차)  (1) 2023.08.30
SQLD(4일차)  (1) 2023.08.28
SQLD(3일차)  (0) 2023.08.26
SQLD(2일차)  (0) 2023.08.25