SQLD자격증공부/개념
데이터 모델과 성능 - 정규화와 성능, 반정규화와 성능
김옹희
2023. 5. 2. 22:14
1. 정규화와 성능
성능 데이터 모델링의 개념
- 분석 및 설계 단계부터 데이터베이스 성능을 고려한 데이터 모델링을 수행하는 기법
- 데이터 모델을 중심으로 성능에 대한 데이터 모델링을 수행
성능 데이터 모델링의 수행 절차
- 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
- 데이터베이스 용량을 현재와 예상 증가량을 고려하여 조사한다.
- 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
- 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
- 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.
- 성능관점에서 데이터 모델을 검증한다.
정규화의 개념
- 데이터의 일관성, 최소한의 중복, 최대한의 데이터 유연성을 위한 방법
- 데이터를 분해하는 과정
- 정해진 규칙을 따라 데이터를 이용하기 쉽게 만드는 일
- 데이터의 중복을 제거한다.
- 데이터 모델의 독립성을 확보한다.
- 데이터 이상현상(Abnormality)를 줄이기 위한 설계 기법
- 엔터티를 상세화 하는 과정이며 논리 데이터 모델링 수행 시점에서 고려
이상현상 ( Abnomality )
- 삽입이상 - 행(Row) 삽입 시 지정되지 않은 속성 값이 NULL을 가지는 경우
- 갱신이상 - 데이터 갱신 시 일부분의 데이터만 갱신되어 일관성 유지가 안되는 경우
- 삭제이상 - 행(Row) 삭제 시 원하지 않는 연쇄 삭제가 발생하는 현상
정규화의 단계
제1정규화 | 테이블 내 속성의 원자성을 확보하는 단계 기본키를 설정 |
제2정규화 | 기본키가 2개 이상의 속성으로 이루어진 경우 부분 함수 종속성을 제거 |
제3정규화 | 기본키를 제외한 컬럼 간 종속성을 제거 이행 함수 종속성 제거 |
BCNF (Boyce-Code Normal Form) |
기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해 결정자 함수 종속성을 제거하는 단계 강한 제3정규화 |
제4정규화 | 여러 컬럼들이 하나의 컬럼을 종속시키는 경우 분해하여 다중값 종속성을 제거 |
제5정규화 | 조언에 의한 종속성이 발생되는 경우 분해 |
정규화 주의사항
- 모든 정규화는 이전 정규화를 만족해야 한다.
- 정규화시 이상현상은 제거 되지만 테이블의 분해로 데이터 조인의 발생이 많이지고, 이는 조회 성능 저하로 이어질 수 있다. (I/O증가 및 조인 연산 증가)
- 단일 테이블 조회시에는 데이터 중복이 제거되어 조회 성능이 향상 될 여지가 있다.
2. 반정규화와 성능
반정규와의 개념
- 데이터베이스 성능 향상을 위해 데이터 중복을 허용하고 조인을 줄이는 방법이다.
- 시스템의 성능 향상 및 개발 운영의 단순화를 위해 정규화된 데이터 모델을 중복, 통합, 분리하는 데이터 모델링 기법을 이야기 한다.
- 조회속도를 향상 시킬 수 있지만 데이터 모델의 유연성은 낮아진다.
- 비정규화는 정규화를 수행하지 않음을 의미 하며, 반정규화는 역정규화라고 표현하기도 한다.
반정규화를 수행해야 하는 경우
- 정규화를 잘하면 종속성, 활용성은 향상되지만 수행 속도가 느려진 경우
- 다량의 범위를 자주 처리해야 하는 경우
- 특정 범위의 데이터만 자주 처리 하는 경우
- 요약/집계 정보를 자주 사용하는 경우
반정규화의 절차
- 대상 조사 및 검토
- 데이터 처리 범위, 통계성 등을 확인 후 반정규화를 수행한다.
- 대량의 범위처리 및 빈도수, 통계성 프로세스, 테이블 조인 수 - 다른 방법 검토
- 클러스터링, 뷰, 인덱스, 응용 프로그램, 파티셔닝 등 다른 방법으로 해결 할 수 있는지 확인한다. - 반정규화 수행
- 테이블, 속성, 관계 등을 반정규화 한다.
- 테이블 반정규화, 속성의 반정규화, 관계의 반정규화
반정규화 기법
방법 | 테이블의 반정규화 |
테이블 병합 | 1:1 관계 테이블 병합 |
1:M 관계 테이블 병합 | |
슈퍼/서브타입 테이블 병합 | |
테이블 분할 | 수직 분할 |
수평 분할 | |
중복테이블 추가 | |
테이블 추가 | 통계테이블 추가 |
이력테이블 추가 | |
부분테이블 추가 |
컬럼의 반정규화 |
중복컬럼추가 |
파생컬럼추가 |
이력테이블 컬럼추가 |
PK에 의한 컬럼추가 |
응용프로그램 오작동을 위한 컬럼추가 |
관계의 반정규화 |
중복관계 추가 |
데이터베이스 구조
- 한대의 물리적 시스템에 여러 명의 사용자가 접속해서 사용하는 데이터베이스를 중앙 집중형 데이터베이스라고 한다.
- 물리적으로 떨어져 있지만 네트워크로 연결된 단일 데이터베이스 이미지를 보여주고 분산된 작업을 하는 데이터베이스를 분산 데이터베이스라고 한다.
분산 데이터베이스의 투명성
분할 투명성 | 고객은 하나의 논리적 관계가 여러 단편으로 분할 되어 각 단편이 사본이 여러 시스템에 저장 되어 있음을 알 필요 없다. |
위치 투명성 | 고객이 사용하는 데이터베이스의 위치를 알릴 필요가 없다. 어느 위치에서 접근 하더라도 동일한 명령으로 접근 할 수 있어야 한다. |
지역 사상 투명성 | 지역 DBMS와 물적 데이터베이스 사이의 사상이 보장됨에 따라 각 지역 시스템 이름과 무관한 이름을 사용할 수 있다. |
중복 투명성 | 데이터베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하게 데이터 일관성이 유지 되어야 한다. |
장애 투명성 | 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도 데이터의 무결성은 보장 되어야 한다. |
병행 투명성 | 여러 고객의 응용프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없어야 한다. |
분산 데이터베이스 설계 방식
- 상향식 설계 방식은 지역 스키마 작성 후 향후 전역 스키마를 작성하여 분산 데이터베이스를 구축하는 방식을 이야기 한다.
- 하향식 설계 방식은 전역 스키마 작성 후 지역 사상 스키마를 작성하여 분산 데이터베이스를 구축하는 방식을 이야기 한다.
분산 데이터베이스 장점과 단점
장점 | 단점 |
1. 데이터베이스 신뢰성과 가용성이 높다. 2. 분산 데이터베이스가 병렬 처리를 수행하기 때문에 빠르다. 3. 분산 데이터베이스를 추가하여 시스템 용량 확장이 쉽다. |
1. 데이터베이스가 여러 네트워크를 통해서 분리되어 있기 때문에 관리 및 통제가 어렵다. 2. 보안관리가 어렵다. 3. 데이터 무결성 관리가 어렵다. 4. 데이터베이스 설계가 복잡하다. |