핵심 인사이트 (3줄 요약)

  1. 본질: 역정규화 기법은 정규화된 스키마에서 테이블 병합(Merge)·분할(Split)·중복 컬럼 추가(Redundancy)·파생 컬럼 추가(Derived) 등의 구체적 물리 설계 패턴을 적용하여 읽기 성능을 최적화하는 실무 방법론이다.
  2. 가치: 역정규화 "개념"을 안다고 실전에서 바로 적용할 수 없다. **어떤 상황에서 어떤 기법을 선택하는가(병합 vs 분할 vs 중복)**의 판단 기준이 기술사 시험과 실무 모두에서 핵심이다.
  3. 판단 포인트: 수평 분할은 **Partition Key(연도·지역)**로 스캔 범위를 줄이고, 수직 분할은 핫 컬럼과 콜드 컬럼을 분리하여 I/O를 최적화하며, 파생 컬럼은 집계 쿼리 제거에 효과적이다.

Ⅰ. 개요 및 필요성

┌───────────────────────────────────────────────────────┐
│    역정규화 5대 기법 한눈에 보기                       │
├───────────────────────────────────────────────────────┤
│  [1] 테이블 병합: 1:1 관계 테이블 합치기              │
│      사원 + 사원상세 → 사원통합                       │
│                                                       │
│  [2] 중복 컬럼 추가: FK 참조값을 복사                 │
│      주문(고객ID) + 고객(이름) → 주문(고객명 복사)    │
│                                                       │
│  [3] 파생 컬럼 추가: 계산값 미리 저장                 │
│      주문상세(수량×단가) → 주문(총액)                 │
│                                                       │
│  [4] 수평 분할: 행 기준 분리                          │
│      주문(10년치) → 주문_2024, 주문_2025              │
│                                                       │
│  [5] 수직 분할: 열 기준 분리                          │
│      상품(이름,가격,설명,이미지) →                    │
│      상품_핫(이름,가격) + 상품_콜드(설명,이미지)      │
└───────────────────────────────────────────────────────┘
  • 📢 섹션 요약 비유: 역정규화 기법은 대형 마트 물류 최적화다. 병합은 인접 매대 통합, 수평 분할은 층별 분리, 수직 분할은 냉장·상온 구역 분리, 중복은 자주 찾는 상품을 여러 매대에 복사 배치.

Ⅱ. 아키텍처 및 핵심 원리

기법별 선택 기준

기법적용 조건효과부작용
병합1:1 관계, 항상 함께 조회JOIN 제거테이블 비대
중복 컬럼FK 참조값 빈번 조회JOIN 감소동기화 필요
파생 컬럼SUM/COUNT 집계 빈번집계 쿼리 제거갱신 시 재계산
수평 분할대용량+시간/지역 기반 조회스캔 범위 축소교차 파티션 조인 비용
수직 분할핫/콜드 컬럼 명확I/O 감소재조립 JOIN 필요

동기화 메커니즘

방식적합지연
DB 트리거실시간 동기화 필수0 (즉시)
배치 스크립트일정 지연 허용분~시간
앱 듀얼 라이트코드 레벨 제어0 (즉시)
  • 📢 섹션 요약 비유: 트리거는 자동 분사 소화기(즉시 반응), 배치는 야간 청소(지연 허용), 듀얼 라이트는 수동 소화기(코드에서 직접 처리)이다.

Ⅲ. 비교 및 연결

비교수평 분할수직 분할
기준행(Row)열(Column)
효과스캔 범위 축소I/O 크기 축소
적합시간/지역별 대용량핫/콜드 컬럼 분리
주문_2024, 주문_2025상품_기본, 상품_상세

Ⅳ. 실무 적용 및 기술사 판단

기술사 답안 구성

  1. 병목 식별: "주문 조회 API가 3-way JOIN으로 초당 5,000회 호출, 평균 200ms".
  2. 기법 선택: "중복 컬럼(고객명)을 주문 테이블에 추가하여 JOIN 제거".
  3. 동기화 설계: "고객명 변경 시 DB 트리거로 주문 테이블의 복사 컬럼을 자동 갱신".
  4. 효과 측정: "JOIN 제거 후 응답 시간 200ms → 20ms, DB CPU 80% → 30%".

Ⅴ. 기대효과 및 결론

역정규화 기법은 "이론(정규화)과 실전(성능)"의 균형을 맞추는 DB 설계자의 핵심 역량이다. 최근 DB 레벨에서는 파티셔닝(수평 분할)이 표준 기능으로 내장되어 있고, CQRS + Event Sourcing으로 읽기 전용 역정규화 뷰를 이벤트 기반으로 자동 생성하는 패턴이 주류다.


📌 관련 개념 맵

개념연결 포인트
역정규화 개념기법의 이론적 배경
파티셔닝수평 분할의 DB 내장 구현 (Range/Hash/List)
Materialized View파생 컬럼의 자동화 대안
CQRS읽기(역정규화)와 쓰기(정규화) 분리 아키텍처
트리거중복 컬럼 동기화 메커니즘

📈 관련 키워드 및 발전 흐름도

[역정규화 수동 설계 (1990s) — DBA의 경험 기반 판단]
    │
    ▼
[파티셔닝 내장 (2000s) — Oracle/MySQL 수평 분할 표준화]
    │
    ▼
[Materialized View 자동 갱신 — 파생 컬럼 자동화]
    │
    ▼
[CQRS + Event Sourcing (2010s) — 읽기 뷰 이벤트 기반 생성]
    │
    ▼
[현재: NewSQL Auto-sharding — 분산 DB가 분할을 자동 관리]

👶 어린이를 위한 3줄 비유 설명

  1. 병합은 방 2개를 벽을 허물어 1개로 만드는 거예요 (찾으러 안 다녀도 됨).
  2. 분할은 큰 옷장을 여름옷·겨울옷 서랍으로 나누는 거예요 (찾기 빨라짐).
  3. 중복은 리모컨을 거실·안방에 1개씩 두는 거예요 (가까이서 바로 잡지만, 건전지를 2개 관리해야 해요)!