미새문지

반정규화(Denormalization) 본문

정보처리기사/실기 공부

반정규화(Denormalization)

문미새 2022. 4. 13. 17:38
728x90

 반정규화(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을 이용해 해결 가능한지 검토한다

 

 

728x90

'정보처리기사 > 실기 공부' 카테고리의 다른 글

정규화(Nomalization)  (1) 2022.04.12
물리 데이터 저장소 확인  (1) 2022.04.12
논리 데이터 저장소 확인  (1) 2022.04.12
분석모델의 시스템화 타당성 분석  (1) 2022.04.11
분석모델 검증  (1) 2022.04.07