파게로그

반정규화(de-normalization) 본문

콤퓨타 왕기초/SQLD/JDBC/Oracle DB

반정규화(de-normalization)

파게 2021. 3. 16. 09:06

반정규화(de-normalization)

  • 데이터베이스의 성능 향상을 목적으로 함
  • 데이터 중복을 허용
  • join을 줄임
  • 조회(SELECT) 속도를 향상시키지만, 데이터 모델의 유연성은 낮아짐

 

반정규화를 수행하는 경우

  • 정규화 결과 종속성, 활용성은 향상되나 성능이 저하되는 경우
  • 다량의 범위를 자주 처리하는 경우
  • 특정 범위의 데이터만 자주 처리하는 경우
  • 요약, 집계 정보 등이 자주 요구되는 경우

 

반정규화 절차

  1. 대상 조사 및 검토
    - 데이터 처리 범위, 통계성 등을 확인
  2. 다른 방법 검토
    - 반정규화 외 대안이 있는지 검토
    - 예시: 클러스터링, 뷰, 인덱스 튜닝, 응용 프로그램, 파티션
  3. 반정규화 수행
    - 테이블, 속성, 관계 등을 반정규화

 

반정규화 기법

  • 계산된 칼럼 추가
    - 배치 프로그램으로 필요한 항목을 미리 계산하여 그 결과를 특정 칼럼에 추가
  • 테이블 수직분할
    - 칼럼을 분할하여 하나의 테이블을 두 개 이상의 새로운 테이블로 분할
  • 테이블 수평분할
    - 하나의 테이블에 있는 값을 기준으로 테이블을 분할
  • 테이블 병합
    - 1:1 관계의 테이블을 하나의 테이블로 병합
    - 1:N 관계의 테이블을 하나의 테이블로 병합 (많은 양의 데이터 중복 발생)
    - 슈퍼 타입과 서브 타입 관계가 발생하면 테이블 통합을 통해 성능 향상
    - dog-foot-story.tistory.com/62

 

* 클러스터링(clustering)

- 클러스터링 인덱스: 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법

- 조회 시에 인접 블록을 연속적으로 읽기 때문에 성능이 향상됨

 

* 파티션(partition) 기법

- 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 데이터 파일에 분할, 분산되어 저장됨

- 종류

  · Range partition: 데이터 값의 범위를 기준으로 파티션을 수행

  · List partition: 특정한 값을 지정하여 파티션을 수행

  · Hash partition: 해시 함수를 적용하여 파티션을 수행

  · Composite partition: 범위와 해시를 복합적으로 사용하여 파티션을 수행

- 장점

  · 데이터 조회 시에 액세스 범위가 줄어들기 때문에 성능이 향상됨

  · 데이터가 분할되어 있기 때문에 I/O 성능이 향상됨

  · 각 파티션을 독립적으로 백업 및 복구할 수 있음

 

* 슈퍼 타입 및 서브 타입 변환 방법

- OneToOne Type

  · 슈퍼 타입과 서브 타입을 개별 테이블로 도출

  · 테이블의 수가 많아서 조인이 많이 발생하고 관리가 어려움

- Plus Type

  · 슈퍼 타입과 서브 타입 테이블로 도출

  · 조인이 발생하고 관리가 어려움

- Single Type

  · 슈퍼 타입과 서브 타입을 하나의 테이블로 도출

  · 조인 성능이 좋고 관리가 편리하지만, 입출력 성능이 나쁨

Comments