분석가 Step 0. 자격증/SQLD

[1장] 데이터 모델, 정규화, 반정규화

뚱뿌 2023. 3. 20. 17:02

성능 데이터 모델링

  • 데이터베이스 성능 향상을 위해 설계 단계부터 성능과 관련된 모든 사항을 고려하여 데이터 모델링 수행
  • 정규화, 반정규화, 테이블 통합 및 분할, 조인 구조, PK/FK 설정 등

 

▶ 수행시점

  • 사전에 할 수록 비용이 들지 않음 (빠를수록 좋음)
  • 분석/설계 단계에서 성능 모델링 수행하면 재업무 비용 최소화 가능

 

▶ 고려사항

  • 정규화 : 데이터를 주요 관심사별로 분산 시키는 효과
  • 용량산정 : 어떤 엔터티(Table)에 데이터가 집중됐는지 파악
  • 트랜잭션 유형 파악 : CRUD 매트릭스/시퀀스 다이어그램 활용, 데이터 조회에 필요한 조인 관계 등 파악
  • 반정규화 : 테이블, 속성, 단계에 대해 포괄적인 반정규화 방법 적용
  • 이력모델 조정, 인덱스를 고려한 PK/FK 순서 조정, 슈퍼/서브타입 조정 등 수행
  • 성능관점 모델 검증 : 충분히 성능이 고려되었는지 확인

정규화(Normalization)

  • 데이터 정합성을 위해 엔터티를 작은 단위로 분리하는 과정
    *데이터 정합성: 데이터의 정확성과 일관성을 유지하고 보장하는 것
  • 데이터 조회성능은 처리조건에 따라 향상/저하
  • 입력/수정/삭제 성능은 일반적으로 향상

 

▶ 종류

  • 제1정규형(1NF) : 모든 속성은 반드시 하나의 값만 가짐
  • 제2정규형(2NF) : 부분함수종속성 제거 (주식별자가 복합식별자인 경우 문제 발생 가능)
  • 제3정규형(3NF) : 이행함수종속성 제거 (주식별자를 제외하고 일반속성 간 종속성 발생 문제)

 

▶ 정규화의 효과

  • 데이터 중복 감소 및 관심사별로 묶임으로 성능 향상
  • 입력/수정/삭제시 성능 향상
  • 조회 질의에서 조인이 많이 발생하여 성능 저하 (조회의 경우 처리조건에 따라 향상/저하) 

반정규화(De-Normalization)

  • 데이터의 조회 성능을 향상하기 위해 데이터의 중복 허용 및 데이터 그룹핑하는 과정
  • 조회성능은 향상될 수 있지만 입력/수정/삭제 성능은 저하될 수 있음
  • 데이터 정합성 이슈 발생 가능 (과도한 반정규화는 데이터 무결성 침해)
  • 정규화 이후에 수행

 

▶ 절차

  • 반정규화 대상조사 - 다른 방법유도 검토 - 반정규화 적용

 

▶ 대상조사

  • 범위처리빈도수 조사
  • 대량의 범위 처리 조사
  • 통계성 프로세스 조사
  • 테이블 조인 개수

 

▶ 다른 방법유도 검토

  • 뷰(VIEW) 테이블
  • 클러스터링 적용
  • 인덱스의 조정
  • 응용애플리케이션

 

▶ 반정규화 적용

  • 테이블 반정규화
    • 테이블 병합 : (1:1, 1:M) 관계 테이블 병합, 슈퍼 서브 타입 테이블 병합
    • 테이블 분할 : 수직 분할(속성 분할), 수평 분할(인스턴스 분할, 파티셔닝)
    • 테이블 추가 : 중복, 통계, 이력, 부분 테이블 추가
  • 컬럼 반정규화
    • 중복 컬럼 추가 : 업무 프로세스상 많은 JOIN이 필요한 경우 고려 (조인 횟수 감소)
    • 파생 컬럼 추가 : 프로세스 수행시 부하가 염려되는 계산값을 미리 컬럼으로 추가 (계산으로 인한 성능 저하 예방)
    • 이력 테이블 컬럼 추가 : 최신 데이터 여부 등 조회 기준이 될 것으로 판단되는 컬럼 미리 추가 (속도 저하 예방)
  • 관계 반정규화(중복관계 추가)
    • 업무 프로세스상 많은 JOIN이 필요하여 중복 관계를 추가하는 것이 성능 측면에서 유리한 경우
    • 데이터 무결성 보장 가능, 데이터 처리 성능 향상 (테이블/컬럼 반정규화는 데이터 무결성에 영향을 미침)