반응형
반정규화(De-Normalization)
  • 데이터베이스 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능향상 방법이다.
  • 반정규화는 조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다.
반정규화를 수행해야하는 경우
  • 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
  • 다량의 범위를 자주 처리해야 하는 경우
  • 특정 범위의 데이터만 자주 처리하는 경우
  • 요약/집계 정보가 자주 요구되는 경우
반정규화 절차
반정규화 절차 설명
대상 조사 및 검토 데이터 처리 범위, 통계성등을 확인해서 반정규화 대상을 조사한다.
다른 방법 검토 - 반정규화를 수행하기 전에 다른 방법이 있는지 검토한다.
- 예를 들어 클러스터링, 뷰, 인덱스 튜닝, 응용 프로그램, 파티션 등을 검토한다.
반정규화 수행 테이블, 속성, 관계 등을 반정규화 한다.

*클러스터링(Clustering)

클러스터링 인덱스라는 것은 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법이다.

따라서 조회 시에 인접 블록을 연속적으로 읽기 때문에 성능이 향상된다.

반정규화 기법

(1) 계산된 칼럼 추가

- 배치 프로그램에서 총판매액, 평균 잔고, 계좌평가 등을 미리 계산하고, 그결과를 특정 칼럼에 추가한다.

 

(2) 테이블 수직분할

- 하나의 테이블을 두 개 이상의 테이블로 분할한다. 즉, 칼럼을 분할하여 새로운 테이블을 만드는 것이다.

 

(3) 테이블 수평분할

- 하나의 테이블에 있는 값을 기준으로 테이블을 분할하는 방법이다.

 

< 파티션 기법 >

- 데이터베이스에서 파티션을 사용하여 테이블을 분할할 수 있다.

- 파티션을 사용하면 논리적으로는 하나의 테이블이지만 여러 개의 데이터 파일에 분산되어 저장된다.

  • Range Partition: 데이터 값의 범위를 기준으로 파티션을 수행한다.
  • List Partition: 특정한 값을 지정하여 파티션을 수행한다.
  • Hash Partition: 해시 함수를 적용하여 파티션을 수행한다.
  • Composite Partition: 범위와 해시를 복합적으로 사용하여 파티션을 수행한다.

< 파티션 테이블의 장점 >

- 데이터 조회 시에 엑세스(Access) 범위가 줄어들기 때문에 성능이 향상된다.

- 데이터가 분할되어 있기 때문에 I/O(Input/Output)의 성능이 향상된다.

- 각 파티션을 독립적으로 백업 및 복구가 가능하다.

 

(4) 테이블 병합

- 1대1 관계의 테이블을 하나의 테이블로 병합해서 성능을 향상시킨다.

- 1대N 관계의 테이블을 병합하여 성능을 향상시킨다. 하지만 많은 양의 데이터 중복이 발생한다.

- 슈퍼 타입과 서브 타입 관계가 발생하면 테이블을 통합하여 성능을 향상시킨다.

< Super type과 Sub type >

- 고객 엔터티는 개인고객과 법인고객으로 분류된다.

이때 고객 엔터티는 슈퍼 타입이고 개인 고객과 법인 고객은 서브 타입이 된다.

- 즉, 부모와 자식 간의 관계가 나타난다.

- 슈퍼 타입과 서브 타입의 관게는 베타적 관계와 포괄적 관계가 있는데, 베타적 관계는 고객이 개인고객이거나 법인고객인 경우를 의미한다. 포괄적 관계는 고객이 개인고객일 수도 있고 법인고객일 수도 있는 것이다.

 

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

변환 방법 설명
OneToOne Type - 슈퍼타입과 서브 타입을 개별 테이블로 도출한다.
- 테이블의 수가 많아서 조인이 많이 발생하고 관리가 어렵다.
Plus Type - 슈퍼 타입과 서브 타입 테이블로 도출한다.
- 조인이 발생하고 관리가 어렵다.
Single Type - 슈퍼 타입과 서브 타입을 하나의 테이블로 도출한다.
- 조인 성능이 좋고 관리가 편리하지만, 입출력 성능이 나쁘다.
반응형

+ Recent posts