Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

거인의 코딩일지

[SQLD] 성능 데이터 모델링과 정규화 본문

자격증/SQLD

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

코딩거인 2024. 5. 3. 17:33
728x90

성능 데이터 모델링과 정규화
1) 데이터 모델 성능
  • 성능 데이터 모델링 이란???
    • 데이터베이스 성능 향상을 목적으로 하는 작업을 의미
    • 성능 향상이 목적이기에 데이터 모델링 때 부터 정규화, 반정규화, 테이블 통합, 데이터 분할, 조인구조, PK, FK 등 여러가지 성능과 관련된 부분이 모델링에 반용될수 있도록 해야한다.
  • 성능 데이터 모델링 수행시점
    • 수행시점은 사전에 철저하게 설계된 상태로 도입할 수록 비용이 적게 든다
    • 분석 및 설계 단계에서 데이터 모델에 성능을 고려한 데이터 모델링을 수행 할 수록 재업무 비용을 최소화 할 수 있다.
    • 데이터베이스 분석 및 설계 단계에서 처리 성능을 향상 시키기 위한 준비를 많이 해야하고, 어떠한 트랜잭션이 핵심인지 파악하고 분석해야한다.
    • 취약점이라고 생각되는 부분에 트랜잭션을 발생시켜 실제 성능을 테스트 해보는 것 도 필요한 작업이다.
  • 성능 데이터 모델링의 고려사항
    1. 정규화를 정확하게 수행
      • 데이터를 주요 관심사별로 분산 시킬 수 있기 때문에 성능 향상의 효과가 있다.
      • 정규화를 통해 중복된 데이터가 쌓이는 것을 막을 수 있다
    2. 데이터베이스 용량 산정 수행
      • 어느 엔터티에 데이터가 집중되는지 파악 가능하다.
      • 필요한 경우 테이블 분리와 조인을 통한 데이터 수집이 필요하다.
    3. 데이터베이스에서 발생되는 트랜잭션의 유형을 파악
      • CRUD 매트릭스 혹은 시퀀스 다이어그램을 보면 파악하기에 용이하다.
      • 데이터 조회에 필요한 조인 관계 등을 파악할 수 있게 된다.
    4. 데이터베이스의 용량과 트랜잭션 유형에 따라 반정규화 수행
      • 테이블, 속성, 관계 등에 대해서 포괄적인 반정규화를 통해 성능을 조정해야 한다.
    5. 이력 모델, PK / FK, 슈퍼 타입 / 서브 타입의 조정
      • 성능이 우수한 순서대로 칼럼의 순서를 조정해야 한다.
    6. 성능 관점에서 데이터 모델 검증
      • 항상 성능 최적화를 위해서 데이터 모델을 검증한다.
      • 데이터 모델이 괜찮은 형태로 구조화 되어있다고 하더라도 성능 최적화를 노력해야한다.

2) 정규화를 통한 성능 향상 전략
  • 정규화란???
    • 데이터에 대한 중복성을 제거하여 성능을 향상 시키는 것
    • 특정한 컬럼으로 분산되어 있는 데이터를 하나로 집약시킬 수 있기에 테이블의 컬럼수가 줄어들어 데이터 용량을 줄일수 있다.
    • 무조건 정규화된 테이블에서 데이터를 조회할 때 성능이 향샹되는것은 아니다.
    • 불필요한 조회 조건등이 많아지게 됨으로서 조인작업이 빈번하게 나타나는 경우는 정규화 이전의 구조에서 조회 성능이 더 좋을 수 있다.
    • 즉! 정규화란 데이터의 일관성을 유지하고 데이터의 중복을 방지하며 데이터의 유연성을 유지하기 위해 데이터를 분해하는 과정 이다.

3) 정규화 용어 및 이점
  • 정규화 용어
    • 정규화 (Normalization)
      • DBMS 테이블의 삽입, 삭제, 수정 과정에서의 이상(Anomaly) 현상의 발생을 최소화하기 위해 작은 단위의 테이블로 나눠가는 과정
    • 정규형 (NF: Normal Form)
      • 정규화된 결과물에 의해 도출된 데이터 모델이 갖춰야 할 특성을 만족하는 '정규화된 결과물'을 의미
    • 함수적 종속성 (FD: Functional Dependency)
      • 테이블의 특정한 칼럼 값(A)을 알고 있으면 다른 칼럼 값(B)을 알 수 있다고 가정할 때, 칼럼 B는 칼럼 A에 함수 종속성을 갖는다고 표현한다.
      • ex) 학번을 통해 학생 이름을 알 수 있다고 하면 '학생 이름은 학번에 함수적 종속성을 갖는다'고 표현
    • 결정자 (Determinant)
      • 함수적 종속성에서 학번은 학생 이름을 결정짓는 요소기 때문에 '결정자'라고 표현
    • 다치 종속 (MVD: MultiValued Dependency)
      • 결정자 칼럼 A에 의해 칼럼 B의 값을 다수 알 수 있을 때, 칼럼 B는 칼럼 A에 다치종속 되었다고 표현
  • 정규화의 이점???
    1. 데이터의 유연성
      • 종속성이 강한 데이터를 분리하여 독립된 개념으로 정의하기 때문에 높은 응집도와 낮은 결합도 원칙에 충실하다.
        • 응집도 : 요소들이 서로 관련되어 있는 정도 (높을수록 품질이 좋다)
        • 결합도 : 요소들 간의 상호 의존하는 정도 (결합도가 높으면 시스템 구현 및 유지보수가 어렵다)
    2. 데이터의 재활용성
      • 정규화를 통해 데이터의 개념이 조금 더 세분화될 수 있고 그 결과로 개념에 대한 재활용 가능성이 증가
    3. 데이터의 중복 최소화
      • 정규화는 식별자가 아닌 속성이 한 번만 포함되기 때문에 데이터의 중복이 최소화

 

*참고자료
[격파르타] SQLD 자격증 챌린지
https://spartacodingclub.kr/

 

스파르타코딩클럽

5주 완성! 코딩을 전혀 모르는 비개발자 대상의 웹개발 강의

spartacodingclub.kr

 

728x90