SJ_Koding

SQLD 대비 (4) - 성능 데이터 모델링 및 정규화/반정규화, 데이터베이스 본문

SQL/SQLD

SQLD 대비 (4) - 성능 데이터 모델링 및 정규화/반정규화, 데이터베이스

성지코딩 2023. 11. 12. 17:26

2023.11.11 - [SQL/SQLD] - SQLD 대비 (3) - 식별자(Identifier)

 

SQLD 대비 (3) - 식별자(Identifier)

2023.11.11 - [SQL/SQLD] - SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship) SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship) 2023.11.09 - [SQL/SQLD] - SQLD 대비 (1) - 데이터 모델의 이해 S

sjkoding.tistory.com

이전 글과 이어지는 글입니다. 해당 정리글은 아래의 유튜브 영상을 참고하여 만들었습니다. 문제 시 삭제하겠습니다.
빨간색 형광펜은 강의에서 강조한 부분, 노란색 형광펜은 추가 서치로 내용을 '직접' 보강한 부분입니다.

https://youtu.be/gmMaH5mMJ9M?t=2180


성능 데이터 모델링의 개요

1. 성능 데이터 모델링의 개념

  • 분석 및 설계 단계부터 데이터베이스 성능을 고려한 데이터 모델링을 수행하는 기법
  • 데이터 모델을 중심으로 성능에 대한 데이터 모델링을 수행

2. 성능 데이터 모델링의 수행 절차

  • 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
  • 데이터베이스 용량을 현재와 예상 증가량을 고려하여 조사한다.
  • 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
  • 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
  • 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.
  • 성능관점에서 데이터 모델을 검증한다.

 

정규화와 성능

1. 정규화의 개념

  • 데이터의 일관성, 최소한의 중복, 최대한의 유연성을 위한 방법
  • 데이터를 분해하는 과정
  • 정해진 규칙에 따라 데이터를 이용하기 쉽게 만드는 일
  • 데이터의 중복을 제거
  • 데이터 모델의 독립성을 확보
  • 데이터 이상현상(Abnormality)을 줄이기 위한 설계 기법
  • 엔터티를 상세화하는 과정이며 논리 데이터 모델링 수행 시점에서 고려

2. 이상현상(Abnomality)

  • 삽입이상: 행(row) 삽입 시 지정되지 않은 속성 값이 NULL을 가지는 경우
  • 갱신이상: 데이터 갱신 시 일부분의 데이터만 갱신되어 일관성 유지가 안되는 경우
  • 삭제이상: 행(row) 삭제 시 원하지 않는 연쇄 삭제가 발생하는 현상

3. 정규화의 단계

제1정규화 - 테이블 내 속성의 원자성을 확보하는 단계
- 기본키를 설정 
제2정규화 기본키가 2개 이상의 속성으로 이루어진 경우 부분 함수 종속성을 제거 (두 개를 분리해서 따로 테이블을 만듦)
제3정규화 - 기본키를 제외(Non-Key)한 컬럼 간 종속성을 제거
- 이행 함수 종속성 제거
BCNF(Boyce-Codd Normal Form) - 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속 시키면 분해
- 결정자 함수 종속성을 제거하는 단계
- 강한 제3정규화
제4정규화 여러 컬럼들이 하나의 컬럼을 종속 시키는 경우 분해하여 다중값 종속성을 제거
제5정규화 조인(Join)에 의한 종속성이 발생되는 경우 분해

3-1 제 1 정규화 예시 (원자성 확보)


3-2 제 2 정규화 예시 (부분 함수 종속성 제거)


3-3 제 3 정규화 예시 (이행 함수 종속성 제거)

 

4. 정규화 주의사항

  • 모든 정규화는 이전 정규화를 만족해야한다.
  • 정규화시 이상현상은 제거 되지만 테이블의 분해데이터 조인의 발생이 많아지고, 이는 조회 성능 저하로 이어질 수 있다. (I/O증가 및 조인 연산 증가) --> 반정규화 필요
  • 단일 테이블 조회시엔 데이터 중복이 제거되어 조회 성능이 향상 될 여지가 있다.

 

반정규화와 성능

1. 반정규화 개념

  • 데이터베이스 성능 향상을 위해 데이터 중복을 허용하고 조인을 줄이는 방법
  • 시스템의 성능 향상 및 개발 운영의 단순화를 위해 정규화된 데이터 모델을 중복, 통합, 분리하는 데이터 모델링 기법
  • 조회속도를 향상 시킬 수 있지만 데이터 모델의 유연성은 낮아짐.★
  • 비정규화는 정규화를 수행하지 않음을 의미하며, 반정규화는 역정규화라고 표현하기도 함
    비정규화와 반정규화는 다른 개념!

2. 반정규화를 수행해야 하는 경우

  • 정규화를 잘하면 종속성, 활용성이 향상되지만 수행 속도가 느려진 경우
  • 다량의 범위를 자주 처리해야하는 경우
  • 특정 범위의 데이터만 자주 처리 하는 경우
  • 요약/집계 정보를 자주 사용하는 경우

3. 반정규화의 절차

  • 대상 조사 및 검토 (문제파악)
    • 데이터 처리 범위, 통계성 등을 확인 후 반정규화를 수행한다.
    • 대량의 범위처리 및 빈도수, 통계성 프로세스, 테이블 조인 수
  • 다른 방법 검토
    • 클러스터링, 뷰, 인덱스, 응용 프로그램, 파티셔닝등 다른 방법으로 해결 할 수 있는지 확인한다.
  • 반정규화 수행 (다른 방법이 없을 경우)
    • 테이블, 속성, 관계 등을 반정규화 한다.
    • 테이블 반정규화, 속성의 반정규화, 관계의 반정규화

4. 반정규화 기법

데이터베이스

1. 데이터베이스 구조

  • 현대의 물리적 시스템에 여러 명의 사용자가 접속해서 사용하는 데이터베이스를 중앙 집중형 데이터베이스라고 한다.
  • 물리적으로 떨어져 있지만 네트워크로 연결된 단일 데이터베이스 이미지를 보여주고 분산된 작업을 하는 데이터베이스를 분산 데이터베이스라고 한다.

2. 분산 데이터베이스의 투명성

분할 투명성 고객은 하나의 논리적 관계가 여러 단편으로 분할 되어 각 단편의 사본이 여러 시스템에 저장 되어 있음을 알 필요 없다.
위치 투명성 - 고객이 사용하는 데이터베이스의 위치를 알릴 필요가 없다.
- 어느 위치에서 접근 하더라도 동일한 명령으로 접근 할 수 있어야 한다.
지역 사상 투명성 지역 DBMS와 물적 데이터베이스 사이의 사상이 보장됨에 따라 각 지역 시스템 이름과 무관한 이름을 사용할 수 있다.
중복 투명성 데이터베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하게 데이터 일관성이 유지 되어야 한다.
장애 투명성 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도 데이터의 무결성은 보장 되어야 한다.
병행 투명성 여러 고객의 응용프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없어야 한다.

3. 분산 데이터베이스 설계 방식

  • 상향식 설계 방식은 지역 스키마 작성 후 향후 전역 스키마를 작성하여 분산 데이터베이스를 구축하는 방식
  • 하향식 설계 방식은 전역 스키마 작성 후 해당 지역 사상 스키마를 작성하여 문산 데이터베이스를 구축하는 방식