Certification_Note/SQL-D

[SQL-D]#05 데이터 모델과 성능 - 정규화, 반정규화와 성능

앵우 2021. 4. 19. 21:26

성능 데이터 모델링 개요

- 성능 데이터 모델링 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터

정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, PK, FK

등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것으로 정의할 수 있다

 

  • 성능 데이터 모델링 고려사항
  1. 정규화를 정확하게 수행한다.
  1. DB 용량산정을 수행한다.
  1. DB에서 발생되는 트랜잭션의 유형을 파악한다.
  1. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
  1. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.

 

정규화, 반정규화와 성능

정규화만을 강조하다 보면 성능의 이슈가 발생될 수 있고 반정규화를 과도하게 적용하다 보면 데이터 무결성이 깨질 수 있는 위험이 증가하게 된다. → 판단의 주의가 요구된다

 

- 정규화(Normalization)

정규화 수행 모델은 데이터의 입력/수정/삭제할 때 일반적으로 반정규화된 테이블에 비해 처리 성능이 향상된다. 단 데이터를 조회할 때에는 처리 조건에 따라 조회 성능이 향상될 수도 있고 저하될 수도 있다. →

정규화를 수행하면 무조건 조회성능이 저하된다는 것은 아니다.

 

  • 함수적 종속성(Fuctional dependency)

데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것이다. 기준값을 결정자(Determinant)라고 하고 종속되는 값을 종속자(Dependent)라고 한다.

어떤 사람의 주민등록번호가 신고되면 그 사람의 이름, 출생지, 호주가 생성되어 단지 하나의 값만을 가지게 된다. → "주민등록번호가 이름, 출생지, 호주를 함수적으로 결정한다."

💡
주민등록번호 → (이름, 출생지, 호주)
 

 

cf) 논리적 데이터 모델링

2021.04.19 - [Certification_Note/SQL-D] - 제1장. 데이터 모델링의 이해(추가자료) - 논리적 모델링

 

제1장. 데이터 모델링의 이해(추가자료) - 논리적 모델링

dasp를 공부하면서 논리적 데이터모델링 정리부분이 있어 부록으로 올립니다. 데이터 모델링 이해 논리 데이터 모델링의 핵심은 업무에서 필요로 하는 데이터에 존재하는 사실을 인식, 기록하는

wierd-ds.tistory.com

 

- 반정규화(Denormalization)

성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정

  • 반정규화를 고려하는 상황
  1. 자주 사용되는 테이블에 접근하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우에 검토한다.
  1. 테이블에 대량의 데이터가 있고 데이터 범위를 자주 처리하는 경우에 처리범위를 일정하게 줄이지 않으면 성능을 보장할 수 없을 경우에 반정규화를 검토한다.
  1. 통계성 프로세스에 의해 통계 정보를 필요로 할 때 별도의 통계테이블을 생성한다.
  1. 테이블에 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 반정규화를 고려한다.

 


  • 반정규화의 대상에 대해 다른 방법으로 처리할 수 있는지 검토
  1. 뷰를 사용하여 조회의 성능을 향상시킬 수 있는가
  1. 클러스터링을 적용 or 인덱스를 조정함으로써 성능을 향상시킬 수 있는가
  1. 파티셔닝을 적용하여 성능을 향상시킬 수 있는가
  1. 응용 애플리케이션의 로직을 변경하여 성능을 향상시킬 수 있는가

 

cf)물리적 데이터 모델링