거인의 코딩일지
[SQLD] 성능 데이터 모델링과 정규화 본문
728x90
성능 데이터 모델링과 정규화
1) 데이터 모델 성능
- 성능 데이터 모델링 이란???
- 데이터베이스 성능 향상을 목적으로 하는 작업을 의미
- 성능 향상이 목적이기에 데이터 모델링 때 부터 정규화, 반정규화, 테이블 통합, 데이터 분할, 조인구조, PK, FK 등 여러가지 성능과 관련된 부분이 모델링에 반용될수 있도록 해야한다.
- 성능 데이터 모델링 수행시점
- 수행시점은 사전에 철저하게 설계된 상태로 도입할 수록 비용이 적게 든다
- 분석 및 설계 단계에서 데이터 모델에 성능을 고려한 데이터 모델링을 수행 할 수록 재업무 비용을 최소화 할 수 있다.
- 데이터베이스 분석 및 설계 단계에서 처리 성능을 향상 시키기 위한 준비를 많이 해야하고, 어떠한 트랜잭션이 핵심인지 파악하고 분석해야한다.
- 취약점이라고 생각되는 부분에 트랜잭션을 발생시켜 실제 성능을 테스트 해보는 것 도 필요한 작업이다.
- 성능 데이터 모델링의 고려사항
- 정규화를 정확하게 수행
- 데이터를 주요 관심사별로 분산 시킬 수 있기 때문에 성능 향상의 효과가 있다.
- 정규화를 통해 중복된 데이터가 쌓이는 것을 막을 수 있다
- 데이터베이스 용량 산정 수행
- 어느 엔터티에 데이터가 집중되는지 파악 가능하다.
- 필요한 경우 테이블 분리와 조인을 통한 데이터 수집이 필요하다.
- 데이터베이스에서 발생되는 트랜잭션의 유형을 파악
- CRUD 매트릭스 혹은 시퀀스 다이어그램을 보면 파악하기에 용이하다.
- 데이터 조회에 필요한 조인 관계 등을 파악할 수 있게 된다.
- 데이터베이스의 용량과 트랜잭션 유형에 따라 반정규화 수행
- 테이블, 속성, 관계 등에 대해서 포괄적인 반정규화를 통해 성능을 조정해야 한다.
- 이력 모델, PK / FK, 슈퍼 타입 / 서브 타입의 조정
- 성능이 우수한 순서대로 칼럼의 순서를 조정해야 한다.
- 성능 관점에서 데이터 모델 검증
- 항상 성능 최적화를 위해서 데이터 모델을 검증한다.
- 데이터 모델이 괜찮은 형태로 구조화 되어있다고 하더라도 성능 최적화를 노력해야한다.
- 정규화를 정확하게 수행
2) 정규화를 통한 성능 향상 전략
- 정규화란???
- 데이터에 대한 중복성을 제거하여 성능을 향상 시키는 것
- 특정한 컬럼으로 분산되어 있는 데이터를 하나로 집약시킬 수 있기에 테이블의 컬럼수가 줄어들어 데이터 용량을 줄일수 있다.
- 무조건 정규화된 테이블에서 데이터를 조회할 때 성능이 향샹되는것은 아니다.
- 불필요한 조회 조건등이 많아지게 됨으로서 조인작업이 빈번하게 나타나는 경우는 정규화 이전의 구조에서 조회 성능이 더 좋을 수 있다.
- 즉! 정규화란 데이터의 일관성을 유지하고 데이터의 중복을 방지하며 데이터의 유연성을 유지하기 위해 데이터를 분해하는 과정 이다.
3) 정규화 용어 및 이점
- 정규화 용어
- 정규화 (Normalization)
- DBMS 테이블의 삽입, 삭제, 수정 과정에서의 이상(Anomaly) 현상의 발생을 최소화하기 위해 작은 단위의 테이블로 나눠가는 과정
- 정규형 (NF: Normal Form)
- 정규화된 결과물에 의해 도출된 데이터 모델이 갖춰야 할 특성을 만족하는 '정규화된 결과물'을 의미
- 함수적 종속성 (FD: Functional Dependency)
- 테이블의 특정한 칼럼 값(A)을 알고 있으면 다른 칼럼 값(B)을 알 수 있다고 가정할 때, 칼럼 B는 칼럼 A에 함수 종속성을 갖는다고 표현한다.
- ex) 학번을 통해 학생 이름을 알 수 있다고 하면 '학생 이름은 학번에 함수적 종속성을 갖는다'고 표현
- 결정자 (Determinant)
- 함수적 종속성에서 학번은 학생 이름을 결정짓는 요소기 때문에 '결정자'라고 표현
- 다치 종속 (MVD: MultiValued Dependency)
- 결정자 칼럼 A에 의해 칼럼 B의 값을 다수 알 수 있을 때, 칼럼 B는 칼럼 A에 다치종속 되었다고 표현
- 정규화 (Normalization)
- 정규화의 이점???
- 데이터의 유연성
- 종속성이 강한 데이터를 분리하여 독립된 개념으로 정의하기 때문에 높은 응집도와 낮은 결합도 원칙에 충실하다.
- 응집도 : 요소들이 서로 관련되어 있는 정도 (높을수록 품질이 좋다)
- 결합도 : 요소들 간의 상호 의존하는 정도 (결합도가 높으면 시스템 구현 및 유지보수가 어렵다)
- 종속성이 강한 데이터를 분리하여 독립된 개념으로 정의하기 때문에 높은 응집도와 낮은 결합도 원칙에 충실하다.
- 데이터의 재활용성
- 정규화를 통해 데이터의 개념이 조금 더 세분화될 수 있고 그 결과로 개념에 대한 재활용 가능성이 증가
- 데이터의 중복 최소화
- 정규화는 식별자가 아닌 속성이 한 번만 포함되기 때문에 데이터의 중복이 최소화
- 데이터의 유연성
*참고자료
[격파르타] SQLD 자격증 챌린지
https://spartacodingclub.kr/
728x90
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] 오답정리(데이터 모델과 SQL) (0) | 2024.05.16 |
---|---|
[SQLD] 오답정리(데이터 모델링의 이해) (0) | 2024.05.15 |
[SQLD] 정규화 이론??? (0) | 2024.05.05 |
[SQLD] 엔티티 (Entity) (0) | 2024.04.09 |
[SQLD] 데이터 모델링의 이해 (0) | 2024.04.08 |