본문 바로가기
Computer Science/Database

[데이터베이스 핵심 요약] 9. 반정규화(Denormalization)

by pilgyeong 2022. 11. 13.

1. 반정규화(Denormalization) 개념

  • 정규화된 엔티티 타입, 속성, 관계에 대해 시스템의 성능향상과 개발 및 운영의 단순화를 위해 데이터 모델을 통합하는 프로세스
  • 적정 수준의 정규화 이후에 질의성능 향상을 위해 일부 데이터에 대하여 중복을 허용하는 정규화의 역작업이다.

 

2. 반정규화 실행 이유

  • 성능 저하: 데이터 조회 시 디스크 I/O량이 많아서 성능저하가 발생, 경로가 너무 멀어 조인으로 인한 성능 저하
  • 접근 효율성: 과도한 정규화로 인해 데이터 분산화, 정상적인 정규화를 통한 고객의 품질 요구사항 충족이 어려운 경우

 

3. 반정규화 실행 절차

  • 대상 조사 → 다른 적용방법 검토 → 반정규화 적용

 

4. 반정규화 종류

  • 테이블 수직 분할: 원래 1개의 테이블로 있던 것을 요약-상세사항 등의 형태로 2개의 테이블로 분할
  • 데이터 수평 분할: 스키마는 동일하지만, 전체-상세 등 형태로 전체 데이터 사이즈를 고려하여 n개의 테이브롤 분할
  • 중복 테이블 추가: 시간이 오래 걸리는 통계 데이터를 주기적으로 Batch-Job을 이용하여 별도로 구성
  • 중복 컬럼 추가: 자주 사용되는 컬럼의 중복으로 추가. 단, 별도의 데이터 정합성 관리 필요
  • 파생 컬럼 추가: 응용 어플리케이션에서 실시간으로 SUM 로직 구현을 통해 총금액 계산이 가능하지만, 성능저하 방지를 위해 미리 계산하여 컬럼에 보관
  • PK컬럼에 의한 추가: 복합키가 존재하지만, 너무 복잡한 PK로 인해 성능저하 발생, 대체키(surrogate key)로 PK를 만들고 일반송석으로 이동
  • 중복관계 추가: 조인을 여러 번 해야만 고객정보를 읽을 수 있을 때, 접근 경로 단축을 위해 중복관계를 추가함