반정규화(De-Normailzation)

한준수·2023년 5월 28일
0

SQLD

목록 보기
9/31

반정규화의 정의

  • 반정규화 = 역정규화 같은 표현이다.
  • 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리등을 수행하는 데이터 모델링의 기법
  • 협의의 반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법
  • 조회 시 디스크 I/O가 많거나 경로가 멀어 조인에 의한 성능 저하를 막기 위해 수행
일반적으로 정규화시 입력/수정/삭제 성능이 향상되며, 반정규화 시 조인 성능이 향상된다.

반정규화 절차

1. 반정규화 대상조사

  • 범위처리빈도수 조사
  • 대량의 범위 처리 조사
  • 통계성 프로세스 조사
  • 테이블 조인 개수

    1.자주 사용되는 테이블에 접근하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우에 반정규화를 검토한다.
    2.테이블에 대량의 데이터가 있고 대량의 데이터 범위를 자주 처리하는 경우에 처리범위를 일정하게 줄이지 않으면 성능을 보장할 수 없을 경우에 반정규화를 검토한다.
    3.통계성 프로세스에 의해 통계 정보를 필요로 할 때 별도의 통계테이블(반정규화 테이블)을 생성한다.
    4.테이블에 지나치게 많은 조인(Join)이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 반정규화를 검토한다.

2. 다른 방법유도 검토

  • 가급적이면 데이터를 중복하여 데이터 무결성을 깨뜨릴 위험을 제어하기 위하여 반정규화를 결정하기 이전에 성능을 향상시킬 수 있는 다른 방법을 모색하도록 한다.
    • 클러스터링
    • 인덱스 조정

    1.VIEW 사용: 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 VIEW를 사용한다 (VIEW가 조회의 성능을 향상X
    개발자별로 SQL문장을 만드는 방법에 따라 성능저하가 나타날 수 있기때문.)
    2.클러스터링: 대량의 데이터 처리나 부분처리에 의해 성능이 저하되는 경우에 클러스터링을 적용하거나 인덱스를 조정함으로써 성능을 향상시킬 수 있다.(조회가 많고 인덱스를 통한 성능향상이 불가능하다면 클러스터링을 사용)
    3.파티셔닝: 대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리할 수 있다. 파티셔닝 키에 의해 물리적 저장공간 분리.
    4.캐시: 응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상시킬 수 있다.

3. 반정규화 적용

3-1. 테이블 반정규화

3-2. 칼럼의 반정규화

3-3. 관계 비정규화

profile
빅데이터과 1학년

0개의 댓글