기출 반정규화 Denormalization

agnusdei·4일 전
0

Database

목록 보기
26/30

반정규화(Denormalization)는 정규화된 데이터 모델에서 성능 향상을 목적으로 의도적으로 중복을 허용하거나 정규화 수준을 낮추는 과정입니다. 즉, 정규화로 인해 생긴 성능 저하 문제를 해결하기 위해 데이터 구조를 다시 조정하는 것입니다.


1. 반정규화의 개념

  • 반정규화는 데이터 무결성과 일관성을 다소 희생하는 대신, 조회 성능 향상, 조인 감소, 응답 속도 개선을 목표로 합니다.
  • 주로 정규화된 테이블이 너무 많아 조인이 과도할 때, 또는 조회가 빈번하고 실시간 처리가 중요한 경우 적용됩니다.

2. 반정규화의 목적

목적설명
성능 개선조인 비용 감소, 디스크 I/O 최소화
응답 속도 향상데이터 조회 시간 단축
시스템 단순화프로그램 코드 및 처리 절차 간소화

3. 반정규화의 적용 시점

  • 시스템 성능 분석 결과, 조인으로 인한 병목 현상이 발생할 때
  • 읽기 작업이 빈번하고 실시간 응답이 중요한 경우 (예: 조회 위주의 OLAP 시스템)
  • 데이터 일관성보다 조회 성능이 더 중요한 경우

4. 반정규화의 절차

  1. 성능 병목 식별 (SQL 분석, 실행 계획 확인 등)
  2. 병목 원인이 정규화 구조에 기인한 조인인지 확인
  3. 반정규화 대상 선정
  4. 데이터 중복 및 무결성 관리 대책 수립
  5. 반정규화 적용 후 테스트 및 성능 비교

5. 반정규화의 주요 유형

다음은 대표적인 반정규화 기법들입니다:

테이블 병합

  • 두 개 이상의 테이블을 하나로 합쳐서 조인을 제거
  • 예: 고객 테이블 + 고객 주소 테이블 → 하나로 병합

중복 데이터 추가

  • 자주 조회되는 데이터를 여러 테이블에 중복 저장
  • 예: 주문 테이블에 고객 이름 중복 저장

파생(계산) 속성 추가

  • 조회나 계산이 자주 필요한 값을 컬럼으로 미리 계산해 저장
  • 예: 총금액 = 수량 * 단가를 별도 컬럼으로 추가

집계 테이블 생성

  • 집계 연산이 자주 수행되는 데이터를 미리 요약한 테이블 생성
  • 예: 일자별 매출 요약 테이블

속성 통합

  • 서로 관련된 컬럼을 하나의 컬럼으로 결합
  • 예: 성, 이름 → full_name

반복 속성 분해/통합

  • 반복되는 속성을 분해하거나 합쳐 하나의 테이블에서 관리
  • 예: 전화번호 1~3 → 하나의 전화번호 컬럼으로 통합

6. 반정규화의 장단점

구분장점단점
성능조인 감소로 조회 속도 향상데이터 중복 증가
개발구현 및 쿼리 단순화무결성 제약 유지 어려움
유지보수빠른 응답성데이터 일관성 관리 비용 증가

7. 정리 요약

  • 반정규화는 성능 개선 목적의 비정규화 기법입니다.
  • 주요 방법에는 테이블 병합, 중복 속성 추가, 파생 컬럼 생성, 집계 테이블 작성 등이 있습니다.
  • 반정규화를 적용할 때는 충분한 성능 분석과 무결성 관리 계획이 필수입니다.

8. 어린이 버전 요약:

반정규화는 빠르게 정보를 꺼내기 위해 표를 조금 지저분하게 바꾸는 거예요.
예전에는 조립식처럼 표를 나눴다면, 이제는 자주 쓰는 걸 하나로 붙이고 계산도 미리 해놓는 거예요.
대신 바꾸면 틀릴 위험도 있으니, 잘 확인하고 써야 해요!


0개의 댓글