성능 데이터 모델링의 정의
데이터의 용량이 커질수록, 기업의 의사결정 속도가 빨라질수록 데이터를 처리하는 속도는 빨라야 한다. 이를 방해하는 요소중 하나는 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 |