본문 바로가기

자격증/SQLD 자격증

[SQLD자격증강좌] 10강 반정규화(De-Normalization) - 오쌤의 니가스터디

728x90
반응형

 

 

 

 

 

 

 

 

1. 반정규화(De-Normalization)의 개념과 절차


- 지난 강좌에서도 반정규화에 대한 이야기는 나왔습니다.

- 좀 더 디테일하게 살펴보도록 하겠습니다. 

 

 

1) 반정규화(De-Normalization)의 개념

- 반정규화는 데이터베이스의 성능향상을 위해서, 데이버 중복을 허용하고 조인을 줄이는 데이터베이스 성능향상방법입니다.

- 조회(SELECT) 속도는 향상시킨다는 장점이 있지만, 데이터 모델의 유연성은 낮아지는 단점이 있습니다.

 

 

2) 반정규화를 수행하는 경우

- 정규화에 중칠하면 종속성, 활용성은 향상되지만, 수행 속도가 느려지는 경우

- 다량의 범위를 자주 처리해야 하는 경우

- 특정범위의 데이터만 자주 처리해야하는 경우

- 요약/집계 정보가 자주 요구되는 경우

 

 

3) 반정규화 절차

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

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

 

## 이론 문제 확인하기

반정규화를 수행하는 경우에 해당하지 않는 것은?
1. SELECT문의 실행속도가 느려진 경우
2. 집계 정보가 요구되는 경우
3. 특정 범위를 자주 조회하는 경우
4. 데이터모델이 자주 변경되는 경우
더보기

정답 : 4

- 4번의 경우는 정규화를 해야하는 이유입니다. 

** 반정규화를 수행하는 경우

1. SELECT문의 실행속도가 느려진 경우
2. 집계 정보가 요구되는 경우
3. 특정 범위를 자주 조회하는 경우
4. 범위를 자주 처리하는 경우

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

 

2. 반정규화 기법


 

 

1) 계산된 칼럼 추가

- 테이블에 필요해보이는 계산된 칼럼을 추가합니다.

 

 

2) 테이블 수직 분할

- 하나의 테이블을 두개 이상의 테이블로 분할을 합니다.

- 즉, 칼럼을 분할하여 새로운 테이블을 만드는 것입니다. 

테이블 수직분할

 

 

 

3) 테이블 수평 분할

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

테이블 수평분할

 

 

 

4) 파티션(Partition) 기법

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

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

 

## 파티션의 종류

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

 

## 파티션 테이블의 장점

  • 데이터 조회시에 액세스(Access) 범위가 줄어들기 때문에 성능이 향상됩니다.
  • 데이터가 분할되어 있기 때문에 I/O(input/output)의 성능이 향상됩니다. 
  • 각 파티션을 독립적으로 백업 및 복구가 가능합니다.

## 이론 문제 확인하기

파티션 기법 중 2개 이상의 기법을 사용하는 것은?
1. Range Partition
2. List Partition
3. Hash Partition
4. Composite Partition
더보기

정답 : 4

- Composite PartitionRange PartitionHashPartition을 복합적으로 사용해서 파티션을 수행합니다. 

 

 

5) 테이블 병합

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

- 1대N 관계의 테이블을 병합하여 성능을 향상시킵니다. 

- 1대N 관계의 테이블을 병합 시에는 많은 양의 데이터 중복이 발생될 수 있습니다.

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

- 예를 들어 고객 엔터티는 개인고객과 법인고객으로 나뉜다고 보겠습니다.

- 이때 고객 엔터티는 슈퍼타입이고, 개인고객과 법인고객은 수퍼타입이 됩니다.

- 즉, 부모와 자식 간의 관계로 처리가 되는 겁니다.

- 슈퍼타입과 서브 타입의 관계는 배타적 관계와 포괄적 관계로 나뉩니다.

- 배타적 관계는 고객인 개인 고객이거나, 법인 고객인 경우를 의미합니다.

- 포괄적 관계는 고객이 개인고객일수도 있고, 법인 고객일 수도 있는 것입니다.

 

## 슈퍼타입과 서브타입 변환 방법

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

 

 

## 이론 문제 확인하기

Super Type과 Sub Type의 관계에서 도출되는 테이블 수가 가장 적은 것은?
1. OneToOne Type
2. Plus Type
3. Single Type
4. 모두 동일함
더보기

정답 : 3

- Single Type 은 슈퍼타입과 서브타입을 하나의 테이블로 도출하기 때문에 가장 적습니다.  

 

 

 

 

 

728x90
반응형