CS

역정규화(Denormalization)

개발자 김마늘 2025. 4. 13. 22:15

데이터베이스 설계에서 역정규화의 개념을 정리한 글입니다.

 

역정규화(Denormalization)

데이터베이스 설계에서 정규화를 통해 분리된 테이블들을 일부러 다시 결합하거나 중복을 허용하는 방식으로 정규화를 깨는 과정

 

필요성

정규화된 데이터베이스는 데이터의 중복을 줄이고 무결성을 유지하는 데 유리하지만, 지나치게 분리된 테이블 구조는 과도한 조인 연산이 필요해서 다음과 같은 문제점이 있을 수 있다.

  1. 성능이 떨어진다
    • 조인 연산이 많아질수록 데이터 조회 속도가 느려지고, 시스템 부하도 커짐
  2. 비즈니스 로직이 복잡해진다
    • 필요한 데이터를 가져오기 위한 쿼리나 애플리케이션 코드가 복잡해질 수 있어 개발과 유지보수가 어려워질 수 있다.
  3. 실시간 응답 요구에 대해 응답이 느릴 수 있다
    • 대시보드, 리포트, API 응답 등의 빠른 처리 속도가 필요한 경우 조인 기반 설계가 병목을 일으킬 수 있다.

→ 따라서 조회 성능을 개선하고 로직을 단순화하고 실시간 요구에 대응하기 위한 선택지로 역정규화를 활용할 수 있다.

 

고려해야할 사항

역정규화가 성능 향상의 장점이 있지만, 데이터 무결성이 훼손되고 데이터 중복 저장을 허용하기 때문에 신중히 고려해야한다.

  1. 정말 성능 문제인가
    • 먼저 쿼리 최적화, 인덱스 추가, 캐싱 등의 방법으로 성능 개선이 가능한지 확인
    • 역정규화는 마지막 수단으로 사용하는 것이 좋다.
  2. 데이터 중복
    • 데이터 중복을 허용하기 때문에 쓰기 작업이 더 복잡해지고 테이블이나 필드 동기화가 필요하기 때문에 데이터 중복을 어떻게 관리하고 동기화할 지 고려
    • 성능 향상을 위해 도입했지만 오히려 유지보수 비용이 증가할 수 있다.
    • 읽기 위주인지, 쓰기 위주인지 판단