참고사이트
성능 데이터 모델링의 정의

성능 데이터 모델링은 데이터베이스 성능을 최적화하기 위한 설계 과정이다. 이는 데이터베이스의 성능을 설계 단계에서부터 고려하여 모델링하는 것을 의미한다. 성능 데이터 모델링은 단순히 반정규화뿐만 아니라, 정규화, 테이블 통합, 테이블 분할, 조인 구조, 기본키(PK)와 외래키(FK) 등 다양한 요소들을 포함한다. 이러한 요소들을 통해 데이터 모델링에 성능을 반영함으로써 데이터베이스의 효율적인 운영을 도모한다.
- 비유: 성능 좋은 차라도 굽이진 도로와 많은 신호등이 있는 환경에서는 빠르게 달리기 어려운 것처럼, 데이터베이스도 설계 단계에서 성능을 고려하지 않으면 효율적으로 동작하기 어렵다.
- 문제점: 잘못된 테이블 디자인은 SQL 구문의 성능 저하를 유발하며, 이는 개발자가 작성한 SQL 구문에 대한 비난으로 이어질 수 있다.
- 해결책: 데이터 모델 구조, 대용량 데이터 처리, 인덱스 특성 등 성능 저하의 원인을 분석하고 이를 개선하기 위한 모델링을 수행해야 한다.
데이터 모델링에서 성능 향상을 목표로 하는 주요 기법으로는 정규화, 반정규화, 테이블 분할 등이 있으며, 데이터 조회 성능을 주요 고려사항으로 삼는 경우가 많다. 입력, 수정, 삭제는 일시적이고 빈번하지 않지만, 조회는 반복적이고 빈번하므로 성능 최적화의 중심이 된다.
성능 데이터 모델링 수행시점
성능 데이터 모델링은 프로젝트 초기 분석 및 설계 단계에서 수행해야 한다. 이 단계에서 성능을 고려한 모델링을 수행하면, 이후 성능 저하로 인한 문제를 예방하고 재작업 비용을 최소화할 수 있다.
- 비용 절감: 분석/설계 단계에서 성능을 고려하면 이후 SQL 튜닝이나 하드웨어 증설 등 추가 비용을 줄일 수 있다.
- 비용프로젝트 관리: 많은 프로젝트에서는 성능 저하 문제를 사후에 해결하려고 하지만, 이는 근본적인 해결책이 아니다. 초기 단계에서 철저히 성능을 고려한 설계를 해야 한다.
트랜잭션이 비즈니스 처리에 핵심적이고 중요한 경우, 운영환경을 미리 테스트하고 성능을 평가하며 최적의 데이터 모델 구조를 설계해야 한다.

성능 데이터 모델링 고려사항
성능 데이터 모델링을 효과적으로 수행하기 위해 다음과 같은 프로세스를 따른다.
- 정규화: 데이터 모델링 시 정규화를 정확하게 수행한다. 정규화는 데이터를 주요 관심사별로 분산시키는 효과가 있어 성능을 향상시킬 수 있다.
- 용량 산정: 각 엔터티에 대한 데이터 용량을 산정하여 데이터 집중도를 파악한다. 이는 성능 고려 여부를 판단하는 기준이 된다.
- 트랜잭션 유형 파악: CRUD 매트릭스나 시퀀스 다이어그램 등을 통해 데이터베이스에서 발생하는 트랜잭션의 유형을 파악한다.
- 반정규화: 용량과 트랜잭션 유형에 따라 반정규화를 적용한다. 이는 테이블, 속성, 관계 등에 포괄적으로 적용될 수 있다.
- 이력 모델 조정: 대량 데이터가 처리되는 이력 모델, PK/FK 순서 등을 성능 관점에서 조정한다.
- 성능 검증: 데이터 모델을 검토하여 성능이 충분히 고려되었는지를 확인한다. 이를 위해 성능 체크리스트를 활용한다.
이와 같은 프로세스를 통해 데이터 모델링 단계에서 성능을 충분히 고려할 수 있다. 데이터베이스 성능 향상을 목표로 하는 다양한 기법들을 적절하게 적용하여 최적의 성능을 유지할 수 있는 데이터 모델을 설계하는 것이 중요다.