본문 바로가기

SQLD

9일차- 데이터 모델의 성능

 성능 데이터 모델링의 정의

데이터의 용량이 커질수록, 기업의 의사결정 속도가 빨라질수록 데이터를 처리하는 속도는 빨라야 한다. 이를 방해하는 요소중 하나는 SQL구문을 잘못 짜는것인데, 근본적으로 디자인이 잘못되어 SQL 구문을 잘 못 작성하도록 구성될 수밖에 없는 경우도 빈번하다.

 성능이 저하되는 데이터 모델의 경우 크게 세 가지 경우가 있다.

1) 데이터 모델 구조.

2) 데이터가 대용량이 됨으로 인해 불가피하게 발생.

3) 인덱스 특성을 충분히 고려하지 않고 인덱스를 생성할때.

 데이터 모델링을 할 때 어떤 작업 유형에 따라 성능 향상을 도모해야 하는지 목표를 분명하게 해야 한다.

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

(정규화, 반정규화, 테이블통합, 테이블분할, 조인, PK, FK etc...)

 

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

분석/설계 단계에서 데이터 모델 성능을 고려한 모델링을 한다면 후에 성능저하에 따른 재업무 비용을 최소화 할 수 있다.

 

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

1) 데이터 모델링 할 때 정규화를 정확하게 수행.

2) 데이터베이스 용량산정

3) 데이터베이스에 발생되는 트랜잭션의 유형 파악

4) 용량과 트랜잭션의 유형에 따라 반정규화 수행

5) 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정

6) 성능관점에서 데이터 모델 검증

 데이터 모델링을 할 때 기본적으로 정규화를 완벽하게 수행해야 한다. 정규화된 모델이 데이터를 주요 관심사별로 분산시키는 효과가 있기 때문에 그 자체로 성능을 향상시키는 효과가 있다.

******************************************************************************************************************************

정규화란?

데이터의 중복을 제거하고 속성들이 적절히 배치되도록 하는것. 총 3가지 형태가 있으며 높은차수 형태는 아래차수 형태의 속성을 포함한다.

 

제1 정규형: 모든 속성은 반드시 하나의 값을 가져야 한다. 예를들어 하나의 속성이 여러 값을 가지고 있다면 그 여러 값을 가지는 속성을 따로 빼서 새로운 인스턴스를 만듬.

 

제2 정규형: 모든 속성은 반드시 식별자 전체에 종속적이여야 한다. 예르들어 복합식별자의 여러속성이 모두 모여야 식별이 가능해야 하는데 어떤 속성이 없어도 식별자가 작동하면 그 속성은 빼야한다.(부분종속성 제거)

 

제3 정규형: 식별자가 아닌 일반속성들 간에는 서로 종속될수 없다. 제2 정규형은 식별자-일반속성 간의 종속성을 정의한 것이고 제3 정규형은 일반속성-일반속성 간의 종속성을 정의한 것이다. 제2 정규화를 하면 엔티티내에 식별자와 종속된 일반속성들만 남게 될것이고 제3 정규화를 거치면 일반속성들 간의 종속성은 없어야 한다.

******************************************************************************************************************************

 정규화 이후 완성된 모델에 대해서는 해당 데이터 모델의 각 엔티티의 트랜잭션을 확인해야 한다. 어떤 엔티티(테이블)에 데이터가 많이 오가는지 용량산정을 하면 어떤 엔티티에 데이터가 집중되는지 파악할 수 있다. 또한 엔티티별로 대용량 인지 구분할 수 있게 해주기 때문에 성능고려를 하는 기준이 될 수 있다.

 데이터 모델에 발생되는 트랜잭션의 유형(입력, 수정, 삭제, 조회)도 파악할 필요가 있다(CRUD나 객체지향 모델링의 시퀀스 다이어그램을 통해). 트랜잭션의 유형을 파악하게 되면 SQL문장의 조인관계 테이블에서 데이터조회의 칼럼들을 파악할 수 있게 된다. 이에 따라 성능 데이터 모델을 설계할 수 있다.

'SQLD' 카테고리의 다른 글

11일차- 반정규화와 성능  (0) 2021.03.06
10일차 - 데이터모델의 성능  (0) 2021.03.04
8일차-식별자  (0) 2021.02.25
7일차-문제풀이  (0) 2021.02.20
7일차- 관계  (0) 2021.02.20