반정규화
성능 향상을 위한 데이터 중복 허용, 반정규화 개요.
ⅰ.
성능 향상을 위한 데이터 중복허용, 반정교화의 개요
가. 반정규화의 필요성
- 정규화 시 빈번한 Join이 필요하여 검색 시간이 과다하게 소요
나. 정규화 고려사항
- 정합성과 데이터 무결성, 성능과 테이블 단순화의 Trade off를 검토
다. 반정규화의 대상
- 자주 사용되는 테이블에 접근하는 프로세스 수가 많고, 항상 일정한 범위만을 조회하는 경우
ⅱ.
반정규화의 유형
-
Table Merge
Parent Table에 Child Table의 속성을 삽입하고 Child Table 삭제.Join이 없어짐으로써 Access 성능이 없어짐
-
Redundat Column 추가
Join하여 읽어올 속성을 양쪽 Table에 중복적으로 저장.갱신 횟수에 비해 조회 횟수가 많은 경우 혹은 더 중요 시에 적용
-
Computed Column 추가
여러 숫자 필드를 Join하여 계산이 필요한 경우에가장 조회가 많은 속성을 지닌 Table에 계산 결과 속성 추가
-
Code Table Merge
코드명을 속성으로 추가하여 Join 제거
-
Table 수직 분할
매우 많은 수의 Column으로 구성된 테이블에서 빈번하게 Access되는 Column과 Access 횟수가 적은 Column을 분리하여 구성
-
Table 수평 분할
동일한 속성을 가진 테이블을 기준에 따라 2개로 분리분리된 여러 Partition에 Data를 동시에 Load 할 수 있으므로 수행 시간을 줄일 수 있음
Ⅲ.
반정규화의 절차 및 방법
가. 반정규화의 절차
반정규화 대상조사
- 범위처리빈도수 조사 : 자주 사용되는 테이블에 접근하는 프로세스 수가 많고,항상 일정한 범위만을 조회하는 경우
- 대량 범위처리 조사 : 테이블에 대량의 데이터가 있고 대량의 데이터 범위를 자주 처리하는 경우에 처리 범위를 일정하게 줄이지 않으면 성능 보장 불가의 경우
- 통계성 프로세스 조사 : 통계성 프로세스에 의해 통계 정보를 필요로 할 때 별도의 통계테이블(반정규화 테이블)을 생성
- 테이블 조인 개수 조사 : 테이블에 지나치게 많은 조인(JOIN)이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 반정규화를 검토
- 다른 방법 유도 검토
- View Table : 지나치게 많은 조인(JOIN)이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 뷰(VIEW)를 사용
- 클러스터링 적용 : 대량의 데이터를 특정 클러스터링팩트에 의해 저장방식을 다르게 하는 방법(조회중심의 테이블에만 적용가능)
- 인덱스 적용 : 인덱스를 통해 성능을 충분히 확보할 수 있다면 인덱스를 조정하여 반정규화를 회피
- 응용어플리케이션 : 응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상
- 반정규화 적용
- 테이블 / 속성 / 관계의 반정규화
나. 반정규화의 방법
테이블 반정규화
- 테이블 병합 : 조인되는 경우가 많아서 테이블을 합치는 것이 성능향상에 효율적일 경우에 적용1:M 관계는 데이터 중복 발생, 신중히 접근
- 테이블 분할 : 분할된 테이블의 전체 조회 시, union을 사용해야 하므로 성능이 느려짐
- 테이블 추가 : 논리적인 모델링이 끝난 후 추가적으로 통계 산출 발생 시, 통계 테이블을 추가하여 테이블을 산출
- 칼럼 비정규화
- 중복 칼럼 추가 : 다른 테이블에 존재하는 속성 자주 이용 경우 확인하려는 정보가 너무 많은 조인으로 불필요한 낭비 발생 경우
- 파생 컬럼 추가 : 연산을 통해서 결과값을 자주 접근하게 될 경우 컬럼을 추가해 연산을 단순화
- 이력 테이블 컬럼추가 : 시점 이력 테이블에 최신의 여부를 확인하기 위해 최신 날짜를 추가하는 경우
- PK에 의한 컬럼추가 : 여러 컬럼으로 이루어진 PK를 가진 테이블을 조인할 경우 단순성을 위해서 인공키를 PK로 지정하고 활용
- 읽기 성능을 향상 시키고 SQL 문장을 더 간단히 작성 가능. 무결성 확보 어렵고 추가 저장공간 필요, 중복 속성 인해 원본 확인 어려움
- 관계 비정규화
- 조회 관계를 단순화 시키기 위해 관계를 중복
참고 [ 반 정규화 사례 ]
1.
2.
3.
4.
5.
<br>
<br>
<br>
<br>
<br>
<bold>THE END...</bold>
Author And Source
이 문제에 관하여(반정규화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zioo/반정규화저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)