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. 데이터베이스 설계가 복잡하다.