📌 노랭이책 틀렸던 문제를 확인하며 개념 정리하는 페이지입니다
1절 성능 데이터 모델링의 개요
- 성능 데이터 모델링 순서
- 데이터모델링을 할 때 정규화를 정확히 수행
- 데이터베이스 용량산정 수행
- 트랜잭션의 유형 파악
- 트랜잭션 유형에 따라 반정규화 수행
- 이력모델 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행
- 성능관점에서 데이터 모델 검증
2절 정규화와 성능
3절 반정규화와 성능
-
**반정규화 - 시스템의 성능향상과 개발, 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법.**
- 과정 **: 대상 조사 → 다른 처리 방법 고려 → 다른 방법 없을 시 반정규화 적용**
- 반정규화 판단 요소
- 범위 처리 빈도수 조사 : 자주 사용하는 테이블에 접근하는 프로세스 수가 많고 일정한 범위만 자주 조회하는 경우
- 대량의 범위 처리 조사 : 테이블에 대량의 데이터가 있고 대량의 데이터 범위를 자주 처리할때 성능을 보장할 수 없는 경우
- 파티셔닝 고려(물리적 데이터 분리),
- 클러스터링 고려(논리적 데이터 중복 저장, 데이터 분포도가 넓을수록 유리)
- 처리 범위가 넓을 경우 → 단일 테이블 클러스터링
- 조인 많이 발생 → 다중 테이블 클러스터링
- 통계성 프로세스 조사 : 통계성 프로세스에 의해 통계정보를 필요로 할때
- 테이블이이조인 개수 조사 : 테에블조게지치 게많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 때
-
반정규화 기법
- 테이블의 반정규화
- 테이블 병합
- 1:1 관계 테이블 병합, 1:M 관계 테이블 병합, 슈퍼/서브타입 테이블병합
- 테이블 분할
- 테이블 추가
- 중복, 통계(sum, avg 등 미리 계산), 이력, 부분 테이블 추가
- 칼럼의 반정규화
- 중복칼럼 추가 : 조인 감소를 위해 중복된 칼럼 위치시킴.
- 파생칼럼 추가 : Derived Column, 미리 값을 계산하여 칼럼에 보관
- 이력 테이블 칼럼 추가 : 기능성 칼럼
- PK에 의한 칼럼 추가 : 단일 PK안에 특정 값을 별도로 조회하는 경우 사용
- 응용 시스템 오작동을 위한 칼럼 추가 : 이전 데이터를 임시적으로 중복 보관
- 관계 비정규화
- 중복관계 추가 : 조인할때 성능저하를 예방하기 위해 추가적인 관계를 맺는 방법
4절 대량 데이터에 따른 성능
5절 데이터베이스 구조와 성능
****슈퍼/서브타입 데이터 모델 (Extended ER모델)****
최근에 분석단계에서 데이터 모델링을 할 때 자주 쓰이는 모델링 방법. 데이터량이 10만건 이하로 아주 작다면 트랜잭션의 성격을 고려하지 않고 하나로 묶음. 하지만 많다면 트랜잭션의 유형에 따라 물리적 변환을 시행해야함.
- 정의 : 공통의 부분을 슈퍼타입으로 모델링하고 슈퍼타입으로부터 상속받아 다른 엔터티와 차이가 있는 속성은 별도의 서브 엔터티로 구성하는 모델링.
- 장점 : 물리적 데이터 모델로 변환 시 선택의 폭을 넓힐 수 있음
- 슈퍼/서브타입 논리적 데이터 모델을 물리적으로 변환 시 성능이 저하되는 경우
- 트랜잭션은 항상 일괄로 처리하는데 테이블은 개별로 처리되어 union연산에 의해 성능저하
- 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합되어 불필요하게 많은 양의 데이터가 집약되어 있는 경우 성능저하
- 트랜잭션은 항성 슈퍼+서브 타입을 공통으로 처리하는데 개별로 유지되어 있거나 하나의 테이블로 집약되어 있어 성능이 저하되는 경우.
→ 그렇다면 어떤 것을 고려하여 성능저하를 예방해야 하는가 답은 ****데이터의 양 & 트랜잭션의 유형****
- 슈퍼타입, 서브타입을 개별로 처리하는 경우 개별 테이블로 분리하여 1대1 관계를 맺도록 한다.
- 슈퍼타입 + 서브타입에 대해 발상하는 트랜잭션은 슈퍼+서브 타입 테이블로 구성
- 전체를 하나로 묶어 트랜잭션이 발생할 때에는 하나의 테이블로 구성