자격증/SQLD

SQLD | 데이터 모델과 성능

jjangdoll 2025. 1. 8. 10:24

성능 데이터 모델링과 정규화

데이터 모델 성능

- 쿼리문이 비효율적이면 DB 전체 성능에 영향

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

- 어떤 트랜잭션이 비즈니스 로직의 핵심인지 파악 
( 트랜잭션 : 데이터 베이스의 상태를 변화시키기 위해 수행하는 작업 단위)

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

- 정규화를 정확하게 수행
- 데이터베이스 용량 산정 수행
- 데이터베이스에서 발생되는 트랜잭션의 유형을 파악
- 데이터베이스의 용량과 트랜잭션 유형에 따라 반정규화 수행
- 이력 모델, PK/FK, 슈퍼타입/서브타입 조정
- 성능 관점에서 데이터 모델 검증

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

- 정규화 : 데이터의 일관성 유지, 데이터 중복 방지, 데이터 유연성 유지위해 데이터를 분해하는 과정
- 정규화 수행 : 데이터 중복성 제거, 성능 향상
- 정규화 이전 구조이 조회 성능이 더 좋을 수도 있음 (무조건 정규화가 좋은게 아님)

정규화 용어

- 정규화 : 작은 단위의 테이블로 나눠가는 과정
- 정규형 : 정규화된 결과물
- 함수적 종속성 : 특정 칼람 값(A)을 알고 있으면 다른 칼람 값(B)을 알수 있다고 가정할 때, B는 A에 함수 종속성을 갖음

정규화의 이점

- 데이터의 유연성
  - 응집도 : 요소들 서로 관련되어 있는 정도 (높을수록 굿)
  - 결합도 : 요소들 간 상호 의존하는 정도 (낮을수록 굿)
-데이터의 재활용성
- 데이터의 중복 최소화

정규화 이론

제1정규화

 : 한 속성에 여러 개의 속성이 포함 or 같은 유형의 속성이 여러 개로 나눠져 있는 경우 해당 속성 분리

제2정규화

  : 제 1정규화 만족 and PK가 아닌 모든 칼럼은 PK 전체에 종속, 일부만 종속되어 있는 경우 해당 칼럼 분리

제3정규화

 : 제2정규화 만족 and 일반 속성 간에도 함수 종속 관계 존재하지 않도록 분리

반정규화 

반정규화

 : 성능 향상이 목적, 성능 향상을 위해서 데이터가 중복이 되어도 수행 
  - 정규화 vs 반정규화
    - 정규화 : 데이터 중복 최소화
    - 반정규화 : 데이터 중복 허용

반정규화 절차

 1. 반정규화 대상 조사
 2. 다른 방법 유도 검토
 3. 반정규화 적용
  : 반정규화를 반드시 적용해야하는 요소가 아님

테이블 반정규화

 - 테이블 병합
 - 테이블 분할
 - 테이블 추가

칼럼 반정규화

 - 중복 칼럼 추가 : 조인 연산을 수행하지 않도록
 - 파생 칼럼 추가 : 미리 계산한 칼럼을 따로 구성
 - 이력 테이블 칼럼 추가 : 불특정한 날에 대한 조회나 최근 값을 조회할 때

관계 반정규화

 - 중복 관계 추가
  : 여러 경로에 걸체 테이블 조인 하는 경우 (A-B-C 형태로 테이블 조인 발생한다면 A-C 로 줄이는 것)

'자격증 > SQLD' 카테고리의 다른 글

SQLD | 데이터 모델링 요소  (0) 2025.01.07
SQLD | 데이터 모델링  (0) 2025.01.07