티스토리 뷰

1. 반정규화?

- 데이터베이스 Select 시 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이기 위한 목적이 있음.
- 데이터 모델의 유연성이 낮아짐

* 반정규화를 해야 하는 경우?

- 특정 범위의 데이터만 자주 처리되는 경우
- 요약/집계 정보가 자주 요구되는 경우
- 다량의 범위를 자주 처리하는 경우

2. 반정규화 절차

* 무작정 반정규화 부터 고려하면안됨.
1) 대상 조사 및 검토
- 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상을 조사함.
2) 다른 방법 검토
- 쿼리 튜닝, 인덱스 튜닝, 클러시터링, 파티션, 코드단에서 해결 등 다른 방법으로 해결 할 수 있는지 먼저 확인한다.
3) 반정규화 수행
- 테이블, 속성, 관계 등을 반정규화 한다.


3. 반정규화 기법

1. 계산된 칼럼 추가
- 배치 프로그램을 돌려서 총판매액, 평균장고, 계좌평가 등을 미리 계산하고, 그 결과를 특정 칼럼에 추가한다.
- 미리 계산을 해놓고 쓰게 함.

2. 테이블 수직 분할
- 하나의 테이블을 두 개 이상의 테이블로 분할한다.
- 칼럼을 분할하여 새로운 테이블을 만든다.

3. 테이블 수평 분할
- 하나의 테이블에 있는 값을 기준으로 테이블을 분할하는 방법이다.
- 파티션 기법이라고 생각하면된다.

* 참고) 오라클 파티션 기법

[Oracle ] 오라클 파티션 테이블

📋 Oracle Partition Table Partition -오라클 파티션테이블은 하나의 큰 테이블을 물리적으로 나눠놓은 것입니다. -물리적으로 나눠놨지만, 논리적으로는 하나의 테이블로 간주됩니다. -왼쪽 그림처럼 S

meongmeongi.tistory.com


4. 테이블 병합
- 1대1 관계의 테이블을 하나의 테이블로 병합해서 성능을 향상시킨다.
- 많은 양의 데이터 중복이 발생할 수 있다.
-슈퍼 타입과 서브 타입 관계가 발생하면 테이블을 통합하여 성능을 향상시킨다.

* Super Type 과 Sub Type
- 고객 엔터티 - 개인고객, 법인고객으로 분류된다고 하면, 이때 고객 엔터티가 super type, 개인고객과 법인고객이 sub type이 된다고 생각하면된다.
- 부모 자식간의 관계가 나타난다.

* Super Type 과 Sub Type  변환 방법
1) OneToOne Type
- 슈퍼 타입과 서브 타입을 개별 테이블로 도출한다.
- 테이블수가 많아서 조인이 어렵고, 관리가 어려워짐
2) Plus Type
- 슈퍼 타입과 서브 타입 테이블로 도출한다.
- 조인이 발생하고 관리가 어려움
3) Single Type
- 슈퍼 타입과 서브 타입을 하나의 테이블로 도출한다.
- 조인 성능이 좋고 관리가 편리하지만 IO 성능이 나쁘다.

'Data' 카테고리의 다른 글

dbeaver 쓸것들  (0) 2023.09.11
[SQLD/SQLP] 분산 데이터베이스  (0) 2023.03.09
[SQLD/SQLP] 데이터 모델링(Data Modeling)  (0) 2023.03.08
[SQLD/SQLP] 속성(Attribute) / 관계(Relationship)  (0) 2023.03.08
[SQLD/SQLP] 엔터티(Entity)  (0) 2023.03.08