집에서 하는 공부/SQLD

[SQLD]1과목.데이터 모델과 성능-1

집돌이 공대남 2022. 6. 3. 11:29
반응형

2 장 데이터 모델과 성능

 

1절 성능 데이터 모델링의 개요

 

*성능 데이터 모델링

  DB 성능향상을 위한 사항이 데이터 모델링에 반영되도록 하는 것

*수행 시점

  분석/설계 단계, 성능 데이터 모델링 시점이 늦어질수록 재업무 비용이 증가함

*고려 사항

  정규화 수행, DB 용량 산정과 트랜잭션 유형 파악을 통한 반정규화 수행, 정규화는 무조건 해야 함

 

 

2정규화와 성능

*정규화(Normalization)

 데이터 분해 과정, 이상현상(anomaly) 제거

 **정규형(NF; Normal Form)

  정규화로 도출된 데이터 모델이 갖춰야 할 특성

*함수적 종속성(FD; Functional Dependency)

결정자와 종속자의 관계, 결정자의 값으로 종속자의 값을 알 수 있음

 **다치 종속(MVD; Multivalued Dependency): 여러 칼럼이 동일한 결정자의 종속자일 때

*정규화 이론

1) 1차 2차 3차 보이스코드 정규화는 함수적 종속성에 근거

2) 4차 정규화는 다치 종속을 제거

3) 5차 정규화는 조인에 의한 이상현상을 제거하여 정규화를 수행함

 *1차 정규화: 속성의 원자성 확보, 다중값 속성을 분리함

 *2차 정규화: 부분 함수 종속성 제거, 일부 기본키에만 종속된 속성을 분리함, 기본키가 하나의 칼럼일 때 생략 가능

 **부분 함수 종속성

 

 *3차 정규화: 이행 함수 종속성 제거, 서로 종속관계가 있는 일반속성을 분리함, 주식별자와 관련성이 가장 낮음

 **이행 함수 종속성

 

 

 **보이스코드 정규화(BCNF; Boyce-Codd Normal Form): 후보키가 기본키 속성 중 일부에 함수적 종속일 때 다수의 주식별자를 분리함

 **4차 정규화, 5차 정규화: 다치 종속 분리, 결합 종속 분리

*정규화와 성능: 정규화는 입출력 데이터의 양을 줄여 성능을 향상시킴

 **정규화로 인한 성능 향상: 입력/수정/삭제 시 성능은 항상 향상됨

‒      유연성 증가: High Cohesion & Loose Coupling 원칙에 충실해짐

‒      재활용 가능성 증가: 개념이 세분화됨

‒      데이터 중복 최소화

 **정규화로 인한 성능 저하: 조회 시 처리 조건에 따라 성능 저하가 발생할 수도 있음

‒      데이터 조회 시 조인을 유발하여 CPU와 메모리를 많이 사용하게 됨

***반정규화로 해결 가능

***조인이 발생하더라도 인덱스를 사용하여 조인 연산을 수행하면 성능 상 단점이 거의 없고, 정규화를 통해 필요한 인덱스의 수를 줄일 수 있음

***정규화를 통해 소량의 테이블이 생성된다면 성능 상 유리할 수 있음

 

3절 반정규화와 성능

*반정규화(Denormalization)

데이터 중복을 허용하여 조인을 줄이는 DB 성능 향상 방법, 데이터의 무결성을 희생하고 조회 성능 향상

*절차

반정규화 대상 조사

데이터 처리 범위 및 통계성 등 조사

다른 방법 검토

1) 뷰 2) 클러스터링 3) 인덱스 4) 애플리케이션

반정규화 적용

정규화 수행 후 반정규화 수행

 

*기법

1.테이블 반정규화

*테이블 병합

 **1:1 관계 테이블 병합

 **1:N 관계 테이블 병합: 많은 데이터 중복 발생

 **슈퍼타입/서브타입 테이블 병합

 

*테이블 분할

 **수직분할,  수평분할

 

*테이블 추가

 **중복 테이블: 업무나 서버가 다를 때 중복 테이블 생성 (원격조인 제거)

 **통계 테이블

 **이력 테이블

 **부분 테이블: 자주 이용하는 칼럼으로 구성된 테이블 생성

 

2.칼럼 반정규화

* 중복 칼럼 추가

*파생 칼럼 추가: 필요한 값 미리 계산한 칼럼 추가

*이력 테이블 칼럼 추가

*PK에 의한 칼럼 추가: PK의 종속자를 일반속성으로 생성

*응용 시스템의 오작동을 위한 칼럼 추가

 

3.관계 반정규화

데이터 무결성 보장 가능

*중복 관계 추가


오늘도 화이팅!

반응형