일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 소켓
- 모션비트
- pintos
- 4기
- 시스템콜
- 크래프톤정글
- CSS
- 자바
- Flutter
- 백준
- 크래프톤 정글
- JavaScript
- corou
- 자바스크립트
- 코드트리
- 사이드프로젝트
- 스택
- 알고리즘
- Java
- Vue.js
- 오블완
- 리액트
- HTML
- 큐
- TiL
- 핀토스
- userprog
- 나만무
- 티스토리챌린지
- defee
- Today
- Total
미새문지
반정규화(Denormalization) 본문
반정규화(Denormalization)의 개념
1. 정의
- 정규화에 충실하여 모델링을 수행하면 종속성, 활용성은 향상되나 수행속도가 증가하는 경우가 발생해, 이를 극복하기 위해 성능에 중점을 두어 정규화 하는 방법이다
2. 특징
- 데이터 모델링 규칙에 얽매이지 않고 수행하며, 시스템이 물리적으로 구현되었을 때 성능향상을 목적으로 한다
3. 사용 시기
(1) 정규화에 충실하였으나 수행속도에 문제가 있는 경우
(2) 다량의 범위를 자주 처리해야 할 경우나 특정범위의 데이터만 자주 처리할 때 사용한다
(3) 처리범위를 줄이지 않고는 수행속도를 개선을 할 수 없을 때 사용한다
(4) 요약자료만 주로 요구되는 경우
(5) 추가된 테이블의 처리를 위한 오버헤드를 고려하여 결정한다
(6) 인덱스(Index)의 조정이나 부분범위 처리로 유도해, 클러스터 링을 이용하여 해결할 수 있는지 검토 후 결정한다
반정규화(Denormalization)의 유형
1. 중복 테이블 추가
- 주로 다량의 범위를 자주 처리하거나 특정범위의 데이터만 자주 처리되는 경우에 사용한다
- 방법
(1) 추가 활용하려 하는 집계정보를 위한 테이블을 추가하고, 각 원본테이블에 트리거를 등록시켜 생성한다
(2) 진행 테이블의 추가 이력관리 등의 목적으로 사용되며 기본키를 적절히 설정해야 한다
(3) 특정부분만을 포함하는 테이블을 추가할 때 자주 사용되는 부분으로 테이블을 생성하여 활용한다
2. 테이블 조합
- 대부분 처리가 두 개 이상의 테이블에 대해 같이 일어나는 경우에 활용한다
- 해당 테이블을 통합하여 설계하는데, 데이터 엑세스가 간편하지만 Row수가 증가해 처리량이 증가하는 경우가 발생할 수 있어 이를 고려해야 한다
- 입력, 수정, 삭제 규칙이 복잡해질 수 있음에 유의
3. 테이블 분할
- 주로 칼럼의 사용빈도의 차이가 많거나, 각각의 사용자가 특정한 부분만 지속적으로 사용하는 경우에 쓴다
- 수직 분할 칼럼별 사용빈도의 차이가 많을 경우 자주 사용되는 칼럼과 그렇지 않은 칼럼으로 분류해 테이블을 분할한다
- 수평 분할 칼럼별 사용빈도의 차이가 많을 경우 해당 범위 별로 테이블을 분할한다
- 고려사항
(1) 특정 칼럼이나 범위를 사용하지 않으면 수행속도에 많은 영향이 있음을 고려해야 한다
(2) 기본키의 유일성 관리가 어렵고 액세스 빈도나 처리할 데이터량이 적을 땐 분할이 불필요하다
(3) 분할된 테이블은 오히려 수행속도를 나쁘게 하기도 한다
(4) 데이터 프로세싱(Processing) 관점이 아니라 검색에 중점을 두어 결정해야 한다
4. 테이블 제거
- 테이블 재 정의나 칼럼의 중복화로 더 이상 액세스되지 않는 테이블이 발생할 때 해당 테이블을 삭제한다
- 고려사항
(1) 관리 소홀로 인해, 누락 시 유지보수 단계에서 많이 발생하는 현상을 고려해야 한다
(2) 유지보수 단계에서 초기 설계에 예상하지 못한 새로운 요구사항이 증가하면, 해결에만 급급해 테이블의 추가나 변경이 경솔히 일어나게 되어 시스템의 일관성과 통합성이 무너질 수 있다
5. 칼럼의 중복화
- 자주 사용되는 칼럼이 다른 테이블에 분산되어 있어 상세한 조건에도 불구하고 액세스 범위를 줄이지 못할 때, 필요한 해당 테이블이나 칼럼을 추가한다
- 기본키의 형태가 적절하지 않거나 너무 많은 칼럼으로 구성된 경우에도 추가
- 고려사항
(1) 테이블 중복과 칼럼의 중복을 고려해야 한다
(2) 데이터 일관성 및 무결성에 유의해야 하고, 저장공간이 지나친 낭비를 고려해야 한다
(3) SQL Group Function을 이용해 해결 가능한지 검토한다
'정보처리기사 > 실기 공부' 카테고리의 다른 글
정규화(Nomalization) (1) | 2022.04.12 |
---|---|
물리 데이터 저장소 확인 (1) | 2022.04.12 |
논리 데이터 저장소 확인 (1) | 2022.04.12 |
분석모델의 시스템화 타당성 분석 (1) | 2022.04.11 |
분석모델 검증 (1) | 2022.04.07 |