본문 바로가기

데이터베이스/SQLD 공부

[SQLD] 데이터 모델과 성능 - 정규화, 반정규화

반응형
성능 데이터 모델링

성능 데이터 모델링이란 데이터베이스 성능향상을 목적으로 설계단계의 데 이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다.

 

 

성능 데이터 모델링 고려사항
  1. 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
  2. 데이터베이스 용량산정을 수행한다.
  3. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
    트랜잭션: 데이터베이스 연산의 단위 (e.g. 입금, 출금)
  4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
  5. 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행한다.
  6. 성능관점에서 데이터 모델을 검증한다.

 

정규화
정규화 내용
1차   함수종속, 복수의 속성값을 갖는 속성을 분리, 속성의 원자성확보
2차   함수종속, 주식별자에 완전종속적이지 않은 속성의 분리 부분종속 속성(PARTIAL DEPENDENCY ATTRIBUTE)을 분리
3차   함수종속, 일반속성에 종속적인 속성의 분리 이전종속 속성(TRANSITIVE DEPENDENCY)의 분리
보이스-코드   함수종속, 결정자안에 함수종속을 가진 주식별자 분리
4차   다가 종속(Multi-Valued Dependency) 속성분리
5차   결합종속(Join Dependency)일 경우는 두개 이상의 n개로 분리

 

 

정규화를 통한 성능 향상 전략
  • 정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반속성을 의존자로 하여 입력/수정/삭제 이상현상을 제거하는 것이다.
  • 데이터의 중복속성을 제거하고 결정자에 의해 동일한 의미의 일반속성이 하나의 테이블로 집약되 므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
  • 따라서 정규화된 테이블은 처리조건에 따라 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.

 

반정규화된 테이블의 성능저하

 

반정규화의 정의
  • 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발(Development)과 운영 (Maintenance)의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다.
  • 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데 이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능 저하가 예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행하 게 된다.
  • 비정규화는 아예 정규화를 수행하지 않은 모델을 지칭할 때 사용한다.

 

 

 

참조 - 한국데이터진흥원(2019). SQL 전문가 가이드 2013 Edition. 서울: 한국데이터진흥원.

반응형